【发布时间】:2016-06-26 15:58:23
【问题描述】:
我想为我的 Android 应用程序使用 ExoPlayer 库来播放直播视频。
我浏览了 exoplayer 网站和文档以及 Github 页面,但我对这些解释并不满意。
谁能给我一个提示,你如何通过 ExoPlayer 播放 http 直播视频?
提前致谢。
【问题讨论】:
标签: android video-streaming exoplayer
我想为我的 Android 应用程序使用 ExoPlayer 库来播放直播视频。
我浏览了 exoplayer 网站和文档以及 Github 页面,但我对这些解释并不满意。
谁能给我一个提示,你如何通过 ExoPlayer 播放 http 直播视频?
提前致谢。
【问题讨论】:
标签: android video-streaming exoplayer
我可以立即在 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
【讨论】:
您可以使用使用 exoplayer 的 exomedia 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"/>
现在您可以在主要活动中使用 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");
}
}
【讨论】:
要播放 HLS 文件或直播 (m3u8),您可以使用 google exoplayer。您只需指定要播放的流类型,例如 HLS 或 DASH 到 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);
我希望您使用来自github 的最新代码并指定要播放的流类型。
【讨论】:
您可以使用以下代码播放 .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);
【讨论】: