我遇到了无法为某些随机媒体文件下载编解码器的问题。我希望有一种方法可以告诉android OS下载受尊敬的编解码器以播放文件?现在我正在使用https://github.com/brianwernick/ExoMedia播放器,它是exoPlayer for Android的一种分支。而且我不支持编解码器,只会播放音频或什么都不会播放。我如何获得它(甚至是操作系统)来下载缺少的编解码器?
这是我想解决的许多设备上无法播放的mp4文件编解码器信息:
代码本身很简单:
class MediaPlayerActivity : AppCompatActivity(), OnPreparedListener {
private var uri: String = ""
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_media_player)
uri = intent.getStringExtra("uri")
setupVideoView(uri)
}
private fun setupVideoView(uri: String) {
videoView.setOnPreparedListener(this)
videoView.setVideoURI(Uri.parse(uri))
}
override fun onPrepared() {
//Starts the video playback as soon as it is ready
videoView.start()
}
}
以及xml文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black">
<com.devbrackets.android.exomedia.ui.widget.VideoView
android:id="@+id/videoView"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:useDefaultControls="true" />
</RelativeLayout>
我还在Android设备上安装了mx播放器,而mx播放器不提供安装编解码器的功能。相反,它只播放音频,没有视觉效果。另外,如果我在Chrome中打开mp4,播放效果会很好。
答案 0 :(得分:1)
您正在尝试在各种设备上播放以H.264编码的UHD(2160x3840)视频。这是一个坏主意,因为即使使用硬件解码,每个设备都具有可以合理解码的上限。这可以解释为什么您可以听到音频但看不到任何声音。
一般的解决方案是为目标客户端提供适当的编码视频。暗示着,这意味着如果最终用户处于计量数据连接中,则您所传递的文件/流不会大于所需的大小。
Android网站有尺寸/格式建议:
https://developer.android.com/guide/topics/media/media-formats
但实际详细信息在Android Compatibility Definition Document (CDD)
中列出您应该将视频transcode
分成一组适合您期望并交付的适当编解码器和比特率的文件。例如,如果文件用于具有Display.getSupportedModes()
的具有UHD屏幕的高端设备,则您应该以20 Mbps的速度在H.265或VP9中对视频进行编码。