在我的项目中,我使用 Media3 ExoPlayer 来播放视频。
问题:我想播放的流可能不受支持。
到其他一些流的链接有效。
build.gradle.kts
:
...
// Media3 ExoPlayer
implementation("androidx.media3:media3-exoplayer:1.0.1")
implementation("androidx.media3:media3-exoplayer-dash:1.0.1")
implementation("androidx.media3:media3-ui:1.0.1")
...
activity_main.xml
:
...
<androidx.media3.ui.PlayerView
android:id="@+id/player"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintDimensionRatio="16:9"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
...
创建MediaSource的代码:
...
val mediaSource = DashMediaSource
.Factory(DefaultHttpDataSource.Factory())
.createMediaSource(MediaItem.Builder()
.setUri(url)
.setMimeType(MimeTypes.APPLICATION_MPD)
.build())
exoPlayer = ExoPlayer
.Builder(context)
.build()
.apply{
trackSelectionParameters = trackSelectionParameters
.buildUpon()
.setMaxVideoSizeSd()
.build()
addAnalyticsListener(EventLogger())
setMediaSource(mediaSource)
prepare()
}
binding.player.player = exoPlayer
...
在其余的代码中,我没有看到重点,因为播放了其他视频。因此,我应用了来自
manifest.mpd
的有问题的视频编解码器:
<Representation
id="f3-v1-x3"
mimeType="video/webm"
codecs="av01.0.04M.08"
width="854"
height="480"
frameRate="1000/41"
sar="1:1"
startWithSAP="1"
bandwidth="429310">
</Representation>
我看到了什么?
播放器有音频(由于额外的
AdaptationSet
);
播放器中没有图片。
我怎么想?
由于具有不同编解码器的其他视频工作正常,并且根据我的观察,即我查看了
MimeTypes.getVideoMediaMimeType("av01.0.04M.08")
将返回一个空数组,而对于其他一些编解码器,它返回一个非空数组。
我认为该编解码器不受支持。
请告诉我,如果我的假设没有错误,我该如何向 exoPlayer 添加对此编解码器的支持?
)
av01.0.04M.08
是 AV1 并且您的设备没有硬件支持。
您可以尝试在本地使用 media3 并提供编程支持。 说明在media3库的github上
还需要配置NDK、CMAKE。关于它写在指令中。