Mee*_*and 13 java android android-sdcard exoplayer
我正在使用Exoplayer演示应用程序,并希望从SD卡预加载MP4视频.我已经尝试过这篇文章的实现,但它不起作用.在我的exoplayer Demo中没有名为DemoUtil.java的类.改为使用:
public static final Sample[] LOCAL_VIDEOS = new Sample[] {
new Sample("Some User friendly name of video 1",
"/mnt/sdcard/video1.mp4", Util.TYPE_OTHER),
};
Run Code Online (Sandbox Code Playgroud)
我也无法使用他们为SampleChooserActivity.java提到的代码片段.(保持给我错误)
我改为使用:
group = new SampleGroup("Local Videos");
group.addAll(Samples.LOCAL_VIDEOS);
sampleGroups.add(group);
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?每个设备的文件路径是否都会更改?
ak9*_*k93 22
没有尝试过演示应用程序,但我设法创建了自己的播放本地音频文件的示例,并在此处发布:https: //github.com/nzkozar/ExoplayerExample
这是从文件Uri中准备播放器的所有工作的主要部分:
private void prepareExoPlayerFromFileUri(Uri uri){
exoPlayer = ExoPlayerFactory.newSimpleInstance(this, new DefaultTrackSelector(null), new DefaultLoadControl());
exoPlayer.addListener(eventListener);
DataSpec dataSpec = new DataSpec(uri);
final FileDataSource fileDataSource = new FileDataSource();
try {
fileDataSource.open(dataSpec);
} catch (FileDataSource.FileDataSourceException e) {
e.printStackTrace();
}
DataSource.Factory factory = new DataSource.Factory() {
@Override
public DataSource createDataSource() {
return fileDataSource;
}
};
MediaSource audioSource = new ExtractorMediaSource(fileDataSource.getUri(),
factory, new DefaultExtractorsFactory(), null, null);
exoPlayer.prepare(audioSource);
}
Run Code Online (Sandbox Code Playgroud)
你可以像这样得到Uri: Uri.fromFile(file)
如上所示准备好文件进行播放后,只需要拨打电话exoPlayer.setPlayWhenReady(true);即可开始播放.
对于视频文件,您可能只需要将表面视图附加到exoPlayer对象,但我还没有真正使用ExoPlayer2.
Sas*_*ota 10
对于那些想要使用ExoPlayer 2从资产播放视频的人,这里有一种方法:
String playerInfo = Util.getUserAgent(context, "ExoPlayerInfo");
DefaultDataSourceFactory dataSourceFactory = new DefaultDataSourceFactory(
context, playerInfo
);
MediaSource mediaSource = new ExtractorMediaSource.Factory(dataSourceFactory)
.setExtractorsFactory(new DefaultExtractorsFactory())
.createMediaSource(Uri.parse("asset:///your_video.mov"));
player.prepare(mediaSource);
Run Code Online (Sandbox Code Playgroud)
这对我有用。尝试以下步骤:
获取文件路径并启动播放器
File myFile = new File(extStore.getAbsolutePath() + "/folder/videos/" + video_name);
videoUrl= String.valueOf(Uri.fromFile(myFile));
initializePlayer(videoUrl);
Run Code Online (Sandbox Code Playgroud)
初始化播放器
private void initializePlayer(String videoUrl) {
player = ExoPlayerFactory.newSimpleInstance(
new DefaultRenderersFactory(getActivity()),
new DefaultTrackSelector(), new DefaultLoadControl());
playerView.setPlayer(player);
player.setPlayWhenReady(playWhenReady);
player.seekTo(currentWindow, playbackPosition);
Uri uri = Uri.parse(videoUrl);
MediaSource mediaSource = buildMediaSource(uri);
player.prepare(mediaSource, resetPositionBoolean, false);
}
Run Code Online (Sandbox Code Playgroud)
构建媒体源
private MediaSource buildMediaSource(Uri uri) {
return new ExtractorMediaSource.Factory(
new DefaultDataSourceFactory(getActivity(),"Exoplayer-local")).
createMediaSource(uri);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17752 次 |
| 最近记录: |