Android ExoPlayer:如何播放http实时流?

Android ExoPlayer:如何播放http实时流?,android,video-streaming,exoplayer,Android,Video Streaming,Exoplayer,我想使用我的Android应用程序的ExoPlayer库来播放实时流媒体视频 我浏览了exoplayer网站和文档,以及Github页面,但我对解释不满意 任何人都可以告诉我如何通过ExoPlayer播放http实时流媒体视频 提前感谢。您可以使用使用exoplayer的exomedia库。这个库使用起来非常简单。 只需在gradle文件中添加以下依赖项 repositories { jcenter(); } dependencies { compile 'com.devbra

我想使用我的Android应用程序的ExoPlayer库来播放实时流媒体视频

我浏览了exoplayer网站和文档,以及Github页面,但我对解释不满意

任何人都可以告诉我如何通过ExoPlayer播放http实时流媒体视频

提前感谢。

您可以使用使用exoplayer的exomedia库。这个库使用起来非常简单。 只需在gradle文件中添加以下依赖项

repositories {
    jcenter();
}

dependencies {
    compile 'com.devbrackets.android:exomedia:3.0.5'
}
在布局文件中

<com.devbrackets.android.exomedia.ui.widget.EMVideoView
    android:id="@+id/video_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    EMVideoView:useDefaultControls="true"/>

要播放HLS文件或实时流(m3u8),您可以使用google。您只需指定要播放的流的类型,如HLS或DASH to exoplayer

Intent mpdIntent = new Intent(MainActivity.this, PlayerActivity.class)
                    .setData(Uri.parse("http://devimages.apple.com/samplecode/adDemo/ad.m3u8"))
                    .putExtra(LiveTVPlayerActivity.CONTENT_ID_EXTRA, "My Channel Name")
                    .putExtra(LiveTVPlayerActivity.CONTENT_TYPE_EXTRA, Util.TYPE_HLS)
                    .putExtra(LiveTVPlayerActivity.PROVIDER_EXTRA, "");
            startActivity(mpdIntent);

我希望您使用中的最新代码并指定要播放的流的类型。

我可以在ExoPlayer中立即播放LiveStream。

只需在下载此示例并修改Uri

video_url = "http://cspan1-lh.akamaihd.net/i/cspan1_1@304727/index_1000_av-p.m3u8";
注意:由于格式不正确,某些m3u8文件无法播放

检查此处支持的格式

您可以使用以下代码播放.m3u8文件:

DataSource.Factory dataSourceFactory = new DefaultHttpDataSourceFactory(
                Util.getUserAgent(context, "Exo Player"), null,
                DefaultHttpDataSource.DEFAULT_CONNECT_TIMEOUT_MILLIS,
                1800000,
                true);

HlsMediaSource mediaSource = new HlsMediaSource(Uri.parse(mediaUrl),dataSourceFactory, 1800000,new Handler(), null);

videoPlayer.prepare(mediaSource);

videoPlayer.setPlayWhenReady(true);
DataSource.Factory dataSourceFactory = new DefaultHttpDataSourceFactory(
                Util.getUserAgent(context, "Exo Player"), null,
                DefaultHttpDataSource.DEFAULT_CONNECT_TIMEOUT_MILLIS,
                1800000,
                true);

HlsMediaSource mediaSource = new HlsMediaSource(Uri.parse(mediaUrl),dataSourceFactory, 1800000,new Handler(), null);

videoPlayer.prepare(mediaSource);

videoPlayer.setPlayWhenReady(true);