我正在重用以前的应用中的Exoplayer代码,其中所有视频均从URL加载到该位置。这次,我尝试加载本地存储的mp4文件,但出现以下错误:
“ com.google.android.exoplayer2.upstream.HttpDataSource $ HttpDataSourceException:无法连接到android.resource://” 程序包名称“ / 2131689472”
(其中“ 程序包名称”是实际的程序包名称)。
我已经做了一些研究,并且我读到某个地方DefaultDataSourceFactory无法从本地存储加载mp4文件,但是我不确定该用什么?还是这是一个完全不同的问题。
String videoUrl = "android.resource://" + getActivity().getPackageName() +"/" + R.raw.intro;
initializeExoPlayer(Uri.parse(videoUrl));
//initialise ExoPlayer
public void initializeExoPlayer(Uri firstUri) {
if (mSimpleExoPlayer == null) {
//create an instance of the ExoPlayer
TrackSelector trackSelector = new DefaultTrackSelector();
LoadControl loadControl = new DefaultLoadControl();
mSimpleExoPlayer = ExoPlayerFactory.newSimpleInstance(getContext(), trackSelector, loadControl);
simpleExoPlayerView.setPlayer(mSimpleExoPlayer);
//prepare the mediasource
String userAgent = Util.getUserAgent(getContext(), "fwc");
MediaSource firstMediaSource = new ExtractorMediaSource(firstUri, new DefaultDataSourceFactory(getContext(),
userAgent), new DefaultExtractorsFactory(), null, null);
mSimpleExoPlayer.prepare(firstMediaSource);
mSimpleExoPlayer.setPlayWhenReady(playbackReady);
mSimpleExoPlayer.seekTo(currentWindow, playbackPosition);
}
}
具体地说,我需要Exoplayer播放本地存储和URL链接中的mp4文件。
谢谢。
更新
找到的解决方案: 尽管有各种文档说明,将视频移动到Assets文件夹是我使视频工作的唯一方法。
String videoUrl = "asset:///intro.mp4";
initializeExoPlayer(Uri.parse(videoUrl));