android - Android Exoplayer 只播放音频不播放视频
问题描述
我正在网络上访问一个 mp4 文件 - 它在浏览器中运行得很好,但由于某种原因,我似乎只能让音频部分在我的应用程序中工作。任何帮助,将不胜感激。
相关梯度:
android {
compileSdkVersion 28
minSdkVersion 17
targetSdkVersion 28
compileOptions {
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation "com.android.support:support-compat:28.0.0"
implementation "com.android.support:support-media-compat:28.0.0"
implementation "com.google.android.exoplayer:exoplayer-core:2.7.2"
implementation "com.google.android.exoplayer:exoplayer-ui:2.7.2"
}
布局视图:
<com.google.android.exoplayer2.ui.PlayerView
android:id="@+id/playerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="0dp"
android:layout_marginRight="0dp"
app:layout_constraintRight_toRightOf="parent"
android:layout_marginBottom="0dp"
android:layout_marginLeft="0dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintBottom_toTopOf="@+id/horizontalHalf"
/>
Fragment中的相关代码:
private SimpleExoPlayer mExoPlayer;
private static MediaSessionCompat mMediaSession;
private PlaybackStateCompat.Builder mStateBuilder;
BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
TrackSelection.Factory videoTrackSelectionFactory =
new AdaptiveTrackSelection.Factory(bandwidthMeter);
TrackSelector trackSelector =
new DefaultTrackSelector(videoTrackSelectionFactory);
LoadControl loadControl = new DefaultLoadControl();
DefaultRenderersFactory renderersFactory = new DefaultRenderersFactory(mParentActivity);
mExoPlayer = ExoPlayerFactory.newSimpleInstance(renderersFactory, trackSelector, loadControl);
mPlayerView.setPlayer(mExoPlayer);
mExoPlayer.addListener(this);
DefaultDataSourceFactory dataSourceFactory = new DefaultDataSourceFactory(mParentActivity, "APP_NAME");
DefaultExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();
MediaSource mediaSource = new ExtractorMediaSource.Factory(dataSourceFactory).setExtractorsFactory(extractorsFactory).createMediaSource(mediaUri);
mExoPlayer.prepare(mediaSource);
mExoPlayer.setPlayWhenReady(true);
解决方案
就我而言,清单中的硬件加速设置为 false。
android:hardwareAccelerated="true"
需要 exoplayer 中的纹理视图才能工作。
推荐阅读
- ios - 访问核心数据以快速返回第一个单词
- java - 当我需要使用浮点数/双精度数时,如何在 Spring 中验证表单输入?
- java - java - 如何使用java中的jsch lib自动连接到具有键盘交互式身份验证的ssh服务器
- sql - 如何优化与自身连接表的红移查询?
- amazon-web-services - 将 EC2 实例指向 GoDaddy 域
- python - 我可以从路径本身就是参数的配置文件构建 Python Click cli 吗?
- kotlin - Room - 如何设置可为空的外键
- python - python找不到文件
- javascript - firebase 存储: storage.ref 不是函数
- python - 如何通过合并两列或多列来创建新列?