在Android版谷歌VR中播放m3u8示例



我正试图在谷歌的VRVideoView示例中播放一个m3u8 URLhttps://developers.google.com/vr/android/samples/vrview.它在mp4或flv中运行良好,但在尝试使用m3u8时出现以下错误:

com.google.vr.sdk.samples.simplevideowidgetE/VrVideoPlayerInternal:136877483.播放器错误com.google.android.exoplayer.ExoPlaybackException:com.google.android.extractor.TextractorSampleSource$UnrecognizedInputFormatException:没有可用的提取器(WebmExtractor,片段式Mp4Extractor、Mp4Eextractor、MP3Eextractor和AdtsExtractor,TsExtractor、FlvExtractor、OgExtractor和PsExtractor)可以读取流。在com.google.android.eextlayer.SampleSourceTrackRenderer.maybeTrowError(SampleSourceTrackRender.java:263)在com.google.android.eextlayer.SampleSourceTrackRenderer.maybeTrowError(SampleSourceTrackRender.java:149)在com.google.android.explorer.ExoPlayerImplInternal.incrementalPrepareInternal(ExoPlayerCimplInternal.java:275)在com.google.android.explorer.ExoPlayerImplInternal.handleMessage(exoplayer ImplInternal.java:205)在android.os.Handler.dispatchMessage上(Handler.java:98)在android.os.Looper.loop(Looper.java:154)在android.os.HandlerThread.run上(HandlerThread.java:61)在com.google.android.exterlayer.util.PriorityHandlerThread.run(PriorityHandlerhread.java:40)

原因:com.google.android.extractor.TextractorSampleSource$UnrecognizedInputFormatException:没有可用的提取器(WebmExtractor,片段式Mp4Extractor、Mp4Eextractor、MP3Eextractor和AdtsExtractor,TsExtractor、FlvExtractor、OgExtractor和PsExtractor)可以读取流。在com.google.android.exterlayer.textractor.TextractorSampleSource$ExtractorHolder.selectExtractor(ExtractorSampleSource.java:899)在com.google.android.exterlayer.textractorSampleSource$ExtractingLoadable.load(ExtractorSampleSource.java:829)在com.google.android.explorer.upstream.Loader$LoadTask.run(Loader.java:209)在java.util.concurrent.Executors$RunnableAdapter.call(Executitors.java:428)位于java.util.concurrent.FFutureTask.run(FutureTask.java:237)在java.util.concurrent.ThreadPoolExecutiator.runWorker(ThreadPoolExecutiator.java:1133)在java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)在java.lang.Thread.run(Thread.java:761)

我可以在这个错误堆栈中看到Exoplayer用于播放视频,但它不应该与m3u8一起工作吗?这是我使用的URL:http://www.nacentapps.com/m3u8/index.m3u8.

谢谢你的帮助!

要玩m3u8,只需将选项输入格式更改为,它就会

'Uri uri = Uri.parse("https:proper_url.m3u8");
VrVideoView.Options vrVideoView = new VrVideoView.Options(); 
vrVideoView.inputFormat = VrVideoView.Options.FORMAT_HLS; 
videoWidgetView.loadVideo(uri, vrVideoView)'

尝试在下面的代码示例中用演示url替换url,如果它有效,那么您可以在下面提供的github帐户中重用示例代码:https://github.com/google/ExoPlayer/tree/master/demo/src/main/java/com/google/android/exoplayer

如果它不起作用,那么文件一定有问题,或者外层不支持它。

要播放.m3u8文件,请在初始化Exoplayer时使用以下代码:

Handler mHandler = new Handler();
String userAgent = Util.getUserAgent(context, "Exo Player");
DataSource.Factory dataSourceFactory = new DefaultHttpDataSourceFactory(
userAgent, null,
DefaultHttpDataSource.DEFAULT_CONNECT_TIMEOUT_MILLIS,
1800000,
true);
HlsMediaSource mediaSource = new HlsMediaSource(Uri.parse(mediaUrl),dataSourceFactory, 1800000,mHandler, null);
if (mediaUrl != null) {
videoPlayer.prepare(mediaSource);
videoPlayer.setPlayWhenReady(true);
}

最新更新