ExoPlayer 无法播放 Adob​​e 实时流编码器流式传输的音频/视频 (RTMP)

Posted

技术标签:

【中文标题】ExoPlayer 无法播放 Adob​​e 实时流编码器流式传输的音频/视频 (RTMP)【英文标题】:ExoPlayer can't play audio/video streamed (RTMP) by Adobe live stream encoder 【发布时间】:2019-02-24 08:04:25 【问题描述】:

我正在使用Adobe Live Stream Encoder 在服务器端流式传输RTMP 实时音频。 在我的 android 客户端应用程序中,带有 RTMP 扩展的 ExoPlayer 无法播放它并导致 RtmpIOException 但我可以使用 VLC 或 MPC 播放它。

我用其他一些 RTMP 链接测试了我的 android 应用,结果没问题。

我还在我手机中安装的其他视频播放器(MxPlayer、Vlc)中使用了这个网址,没问题。

这是android中播放视频的代码:

BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();     

TrackSelection.Factory videoTrackSelectionFactory = new AdaptiveTrackSelection.Factory();
TrackSelector trackSelector = new DefaultTrackSelector(videoTrackSelectionFactory);

//Create the player
player = ExoPlayerFactory.newSimpleInstance(this, trackSelector);
playerView.setPlayer(player);
MediaSource videoSource = null;

Uri uri = Uri.parse("rtmp://172.18.49.6/live/11");

dataSourceFactory = new RtmpDataSourceFactory();
videoSource = new ExtractorMediaSource.Factory(dataSourceFactory)
                .createMediaSource(uri);

player.prepare(videoSource);
player.setPlayWhenReady(true);

这是个例外:

E/ExoPlayerImplInternal: Source error.
net.butterflytv.rtmp_client.RtmpClient$RtmpIOException
    at net.butterflytv.rtmp_client.RtmpClient.open(RtmpClient.java:56)
    at com.google.android.exoplayer2.ext.rtmp.RtmpDataSource.open(RtmpDataSource.java:60)
    at com.google.android.exoplayer2.upstream.StatsDataSource.open(StatsDataSource.java:83)
    at com.google.android.exoplayer2.source.ExtractorMediaPeriod$ExtractingLoadable.load(ExtractorMediaPeriod.java:885)
    at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:381)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
    at java.lang.Thread.run(Thread.java:818)

【问题讨论】:

您找到解决方案了吗?我遇到了同样的问题 【参考方案1】:

我有类似的问题,尝试在 RTMP URL 上修改:

Before:
Uri uri = Uri.parse("rtmp://172.18.49.6/live/11");

After:
Uri uri = Uri.parse("rtmp://172.18.49.6/live/11 live=1");

【讨论】:

以上是关于ExoPlayer 无法播放 Adob​​e 实时流编码器流式传输的音频/视频 (RTMP)的主要内容,如果未能解决你的问题,请参考以下文章

插页式广告后的 Exoplayer 播放错误

如何播放动画,然后在悬停时反向播放,再次开始播放,直到在 Adob​​e Animate (Flash) 中使用悬停结束?

无法使用 exoPlayer 2.11 播放 MKV Matroska 视频

如何在 Adob​​e Animate 中悬停时反向播放动画?

无法在 Adob​​e Edge animate CC 中创建圆形阴影

适用于 Android 的 Adob​​e 原生扩展以播放声音