下载丢失的编解码器?

问题描述 投票:0回答:1

我面临一个问题,我无法下载一些随机媒体文件的编解码器。我希望有一种方法可以告诉Android操作系统下载受尊重的编解码器以播放文件?现在我正在使用https://github.com/brianwernick/ExoMedia播放器,这是Android的exoPlayer的一种分叉。我不支持编解码器,只会播放音频或什么也不播放。我怎么能得到它(甚至操作系统)来下载丢失的编解码器?

这里是mp4文件编解码器信息,无法在我想要解决的许多设备上播放:

enter image description here

代码本身很简单:

 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播放器没有提供安装编解码器。相反,它只播放音频,没有视觉效果。如果我用铬打开mp4它也可以。

android kotlin codec exoplayer
1个回答
1
投票

您正在尝试在各种设备上播放以H.264编码的UHD(2160x3840)视频。这是一个坏主意,因为即使使用硬件解码,每个设备也有合理解码的上限。这可以解释为什么你可以听到音频但看不到任何东西。

一般的解决方案是为目标客户端提供适当的编码视频。通过暗示,这意味着如果最终用户使用计量数据连接,则不会提供大于必要的文件/流。

Android网站有大小/格式建议:

https://developer.android.com/guide/topics/media/media-formats

但真实的细节列在Android Compatibility Definition Document (CDD)

你应该将你的视频transcode变成一组适当的编解码器和比特率的文件,供你期望和交付的客户使用。例如,如果文件用于具有UHD屏幕的高端设备,由Display.getSupportedModes()确定,那么您应该以20 Mbps的H.265或VP9编码视频。

© www.soinside.com 2019 - 2024. All rights reserved.