无法通过ExoPlayer播放实时视频

4

我在安卓中使用ExoPlayer播放视频。我们使用ExoPlayer来播放mp4和直播视频。但有时会遇到下面描述的异常。

> 12-01 14:15:09.388 12080-12517/com.mse.monumentalsnetwork
> E/ExoPlayerImplInternal: Source error.
>                                                                                    com.google.android.exoplayer2.source.UnrecognizedInputFormatException:
> Input does not start with the #EXTM3U header.
>                                                                                        at
> com.google.android.exoplayer2.source.hls.playlist.HlsPlaylistParser.parse(HlsPlaylistParser.java:119)
>                                                                                        at
> com.google.android.exoplayer2.source.hls.playlist.HlsPlaylistParser.parse(HlsPlaylistParser.java:43)
>                                                                                        at
> com.google.android.exoplayer2.upstream.ParsingLoadable.load(ParsingLoadable.java:115)
>                                                                                        at
> com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:315)
>                                                                                        at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
>                                                                                        at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
>                                                                                        at java.lang.Thread.run(Thread.java:818)

所以请帮我解决这个问题。


请发布您正在使用的播放列表。 - pskink
@pskink 的播放列表是指我正在播放的URL吗? - nitin tyagi
我指的是扩展M3U播放列表。 - pskink
@nitintyagi,你找到解决问题的方法了吗? - burakk
1
@NibinSalim 是的,问题出在HLS URL上。Exoplayer无法解析该URL。因此,请检查您的URL。 - nitin tyagi
显示剩余3条评论
3个回答

5
错误表明您正在使用HlsMediaSource,但您想播放的是MP4文件。它无法解析HLS清单。
您需要使用ExtractorMediaSource来播放MP4:
DefaultHttpDataSourceFactory dataSource = new DefaultHttpDataSourceFactory(
    Util.getUserAgent(this, "your-user-agent"));
ExtractorMediaSource mediaSource = new ExtractorMediaSource.Factory(dataSource)
    .createMediaSource(uri, null, null);
player.setPlayWhenReady(true);
player.prepare(mediaSource);

ExoPlayer的演示应用程序有一个createMediaSource方法,它演示了可用媒体源的创建。您可以在此链接中查看具体实现。

1
我非常确定。我们正在使用m3u8文件进行播放。 - Ramkailash
@Ramkailash,你找到解决问题的方法了吗? - burakk

0

请检查您的URL。可能是您的URL包含了一个空格,您可以像这样替换它:

String StringName= "Your URL".replaceAll(" ","%20");

0

在我的情况下,我使用了不同的格式,例如

format=mpd-time-csf,然后我将其更改为 format=m3u8-aapl,然后我就能够播放Azure流媒体视频了。

参考:HLS动态打包


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接