[英]Downloading a missing codec?
我遇到無法下載某些隨機媒體文件的編解碼器的問題。 我希望有一種方法可以告訴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,播放效果會很好。
您正在嘗試在各種設備上播放以H.264編碼的UHD(2160x3840)視頻。 這是一個壞主意,因為即使使用硬件解碼,每個設備都具有可以合理解碼的上限。 這可以解釋為什么您可以聽到音頻但看不到任何聲音。
通用解決方案是為目標客戶端提供適當的編碼視頻。 暗含的意思是,如果最終用戶處於計量數據連接中,則您傳送的文件/流不會大於所需的大小。
Android網站有尺寸/格式建議:
https://developer.android.com/guide/topics/media/media-formats
但實際詳細信息在Android兼容性定義文檔(CDD)中列出
您應該將視頻transcode
成一組適合您期望並交付的適當編解碼器和比特率的文件。 例如,如果文件用於具有UHD屏幕的高端設備Display.getSupportedModes()
由Display.getSupportedModes()
確定Display.getSupportedModes()
則您應該以20 Mbps的速度在H.265或VP9中對視頻進行編碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.