Java “如何修复错误”;Can';“我不能播放这个视频吗?”;?(m3u8)文件
我正在使用ExoPlayer和m3u8文件。每次我运行我的应用程序时,它都会这样说 无法播放此视频 也许一切都应该是对的,但我不知道为什么会这样说 XML文件:Java “如何修复错误”;Can';“我不能播放这个视频吗?”;?(m3u8)文件,java,android,exoplayer,m3u8,Java,Android,Exoplayer,M3u8,我正在使用ExoPlayer和m3u8文件。每次我运行我的应用程序时,它都会这样说 无法播放此视频 也许一切都应该是对的,但我不知道为什么会这样说 XML文件: <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:ap
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<VideoView
android:id="@+id/video_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
提前谢谢 这有很多原因 1.如果您的视频已损坏,则videoplayer将显示该对话框 2.如果您的视频已完成且未损坏,请尝试此操作
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
videoView.start();
progressDialog.dismiss();
}
});
3.Exoplayer是android studio中videoview的最佳选择
只需在几个地方实现这种依赖性
repositories {
mavenCentral()
jcenter()
}
dependencies {
...
compile 'com.google.android.exoplayer:exoplayer:2.8.0'
}
你做到了。。。
请查看此以了解更多信息
https://github.com/google/ExoPlayer
希望这对你有帮助 要播放.m3u8文件,请在初始化Exoplayer时使用以下代码:-
BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
TrackSelection.Factory videoTrackSelectionFactory = new AdaptiveTrackSelection.Factory(bandwidthMeter);
TrackSelector trackSelector = new DefaultTrackSelector(videoTrackSelectionFactory);
videoPlayer = ExoPlayerFactory.newSimpleInstance(context,trackSelector);
Handler mHandler = new Handler();
String userAgent = Util.getUserAgent(context, "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);
}
exoplayer代码在哪里?我删除了它,因为它不工作。我使用普通媒体播放器进行了删除。检查
VLC player中的链接Stream
,我已经这样做了,它工作得很好。实际上,我对exoplayer有依赖性。但我不知道如何处理这个问题。你能写简单的代码吗?我已经在github上创建了一个项目,请参考:-Watchvideo类包含你的答案…希望这对你有用…别忘了说出答案。!!!这对我不起作用。我在watchvideo.java中编写了代码,但是没有任何东西可以像我在manifest中那样在manifest和xml中添加网络配置。。?您还必须在res目录中创建xml文件。DataSource.Factory dataSourceFactory=new DefaultHttpDataSourceFactory(userAgent,null,DefaultHttpDataSource.DEFAULT\u CONNECT\u TIMEOUT\u MILLIS,1800000,true)代码>它是2.11.3 exoplayer吗?它在trackSelector上有错误(它说exoplayer中的不能应用于'com.google.android.exoplayer2.trackselection.trackSelector),然后Adnroid Studio在HlsMediaSource下划红色下划线。上面写着“'HlsMediaSource(android.net.Uri、com.google.android.exoplayer2.source.hls.HlsDataSourceFactory、com.google.android.exoplayer2.source.hls.HlsExtractorFactory、com.google.android.exoplayer2.drm.DrmSessionManager、com.google.android.exoplayer2.upstream.LoadErrorHandlingPolicy、com.google.andro)id.exoplayer2.source.hls.playlist.HlsPlaylistTracker,…)在“com.google.android.exoplayer2.source.hls.HlsMediaSource”中具有私人访问权限
BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
TrackSelection.Factory videoTrackSelectionFactory = new AdaptiveTrackSelection.Factory(bandwidthMeter);
TrackSelector trackSelector = new DefaultTrackSelector(videoTrackSelectionFactory);
videoPlayer = ExoPlayerFactory.newSimpleInstance(context,trackSelector);
Handler mHandler = new Handler();
String userAgent = Util.getUserAgent(context, "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);
}