ExoPlayer:如何播放http直播流?

时间:2016-06-26 15:58:23

标签: android video-streaming exoplayer

我想在我的Android应用程序中使用ExoPlayer库来播放直播视频。

我正在查看exoplayer网站和文档以及Github页面,但我对解释并不满意。

任何人都可以给我一个提示,你如何通过ExoPlayer播放http直播视频?

提前致谢。

3 个答案:

答案 0 :(得分:1)

我能够立即在ExoPlayer中播放LiveStream。

只需在https://drive.google.com/file/d/0Byr1H33Pe7u-MW93UUpmMUhGTTQ/view下载此示例并修改Uri

即可
video_url = "http://cspan1-lh.akamaihd.net/i/cspan1_1@304727/index_1000_av-p.m3u8";

注意:由于格式不正确,某些m3u8文件无法播放 在此处查看支持的格式https://google.github.io/ExoPlayer/supported-formats.html

答案 1 :(得分:0)

您可以使用exomedia exomedia库,它使用exoplayer。该库使用起来非常简单。 只需在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"/>

现在您可以在主要活动中使用EMVideoView作为

public class MainActivity extends AppCompatActivity implements OnPreparedListener{
    EMVideoView emPlayer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        playVideo();
    }


    private void playVideo() {
        emPlayer = (EMVideoView)findViewById(R.id.video_view);
        emPlayer.setOnPreparedListener(this);

        emPlayer.setVideoURI(Uri.parse("your http url"));
    }

    @Override
    public void onPrepared() {
        emPlayer.start();
        Log.v("TAG","video is playing");
    }
}

答案 2 :(得分:0)

您可以使用以下代码播放.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);