首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Exoplayer不能播放一些音频流

Exoplayer不能播放一些音频流
EN

Stack Overflow用户
提问于 2017-04-26 21:21:33
回答 2查看 4.4K关注 0票数 1

我开发了一些Android应用程序来收听互联网广播电台。

对于音频流,我一直在使用Vitamio库。不幸的是,它不再受支持,并且包含与Android 7的兼容性问题。

经过多次尝试,我决定去ExoPlayer库。我对它的易用性和不断更新感到非常满意。此外,它还减少了我的APK的三次大小。

不幸的是,ExoPlayer库无法播放一些音频流。我试过调试,更改对URL的调用,等等。没有成功。

这些是流的例子,我不能使用ExoPlayer库,但我可以使用Vitamio复制:

poa.sdp/playlist.m3u8 centro.sdp/playlist.m3u8

其中一些流对于我的应用程序的成功非常重要。

我没有访问服务器的权限。

在这里,logcat上说的是:

04-26 21:09:20.189 27953-27953/com.eneasgesing.radios.rs E/EventLogger: playerFailed 987.08 com.google.android at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:345) at android.os.Handler.dispatchMessage(Handler.java:98) at android.os.Looper.loop(Looper.java:154 ))在android.os.HandlerThread.run(HandlerThread.java:61) at com.google.android.exoplayer2.util.PriorityHandlerThread.run(PriorityHandlerThread.java:40)原因: com.google.android.exoplayer2.source.UnrecognizedInputFormatException:没有任何可用的萃取器(MatroskaExtractor,FragmentedMp4Extractor,Mp4Extractor,Mp3Extractor,AdtsExtractor,Ac3Extractor,TsExtractor,FlvExtractor,OggExtractor,PsExtractor,WavExtractor)都能读懂溪流。在com.google.android.exoplayer2.source.ExtractorMediaPeriod$ExtractorHolder.selectExtractor(ExtractorMediaPeriod.java:713) at com.google.android.exoplayer2.source.ExtractorMediaPeriod$ExtractingLoadable.load(ExtractorMediaPeriod.java:636)在com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:295) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) at java.lang.Thread.run(Thread.java:761)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-28 20:44:44

查看一些用于启动exoplayer的代码可能会有所帮助,我假设您使用的是标准的ExtractorMediaSource

.m3u8文件实际上是播放列表,文本文件,它链接到媒体文件-- 通常用于livestreams。您需要另一个MediaSource,尝试HLS,或者HlsMediaSource而不是ExtractorMediaSource

HLS代表HTTP流。

票数 4
EN

Stack Overflow用户

发布于 2020-03-13 07:36:18

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

代码语言:javascript
复制
    Handler mHandler = new Handler();

    String userAgent = Util.getUserAgent(context, "Your Application Name");

    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);
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43644730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档