1. 查看 android 手机 /etc/media_codecs.xml 文件
2. 修改文件 /vlc/modules/codec/omxil/mediacodec.c:
在下面的 codec 对应中添加手机硬件支持的 mime ,没有的话都会改用软件解码。
/*****************************************************************************
* OpenDecoder: Create the decoder instance
*****************************************************************************/
static int OpenDecoder(vlc_object_t *p_this, pf_MediaCodecApi_init pf_init)
{
decoder_t *p_dec = (decoder_t *)p_this;
......
if (p_dec->fmt_in.i_cat == VIDEO_ES)
{
if (!p_dec->fmt_in.video.i_width || !p_dec->fmt_in.video.i_height)
{
/* We can handle h264 without a valid video size */
if (p_dec->fmt_in.i_codec != VLC_CODEC_H264)
{
msg_Dbg(p_dec, "resolution (%dx%d) not supported",
p_dec->fmt_in.video.i_width, p_dec->fmt_in.video.i_height);
return VLC_EGENERIC;
}
}
switch (p_dec->fmt_in.i_codec) {
case VLC_CODEC_HEVC: mime = "video/hevc"; break;
case VLC_CODEC_H264: mime = "video/avc"; break;
case VLC_CODEC_H263: mime = "video/3gpp"; break;
case VLC_CODEC_MP4V: mime = "video/mp4v-es"; break;
case VLC_CODEC_WMV3: mime = "video/x-ms-wmv"; break;
case VLC_CODEC_VC1: mime = "video/wvc1"; break;
case VLC_CODEC_VP8: mime = "video/x-vnd.on2.vp8"; break;
case VLC_CODEC_VP9: mime = "video/x-vnd.on2.vp9"; break;
/* case VLC_CODEC_MPGV: mime = "video/mpeg2"; break; */
}
}
else
{
switch (p_dec->fmt_in.i_codec) {
case VLC_CODEC_AMR_NB: mime = "audio/3gpp"; break;
case VLC_CODEC_AMR_WB: mime = "audio/amr-wb"; break;
case VLC_CODEC_MPGA:
case VLC_CODEC_MP3: mime = "audio/mpeg"; break;
case VLC_CODEC_MP2: mime = "audio/mpeg-L2"; break;
case VLC_CODEC_MP4A: mime = "audio/mp4a-latm"; break;
case VLC_CODEC_QCELP: mime = "audio/qcelp"; break;
case VLC_CODEC_VORBIS: mime = "audio/vorbis"; break;
case VLC_CODEC_OPUS: mime = "audio/opus"; break;
case VLC_CODEC_ALAW: mime = "audio/g711-alaw"; break;
case VLC_CODEC_MULAW: mime = "audio/g711-mlaw"; break;
case VLC_CODEC_FLAC: mime = "audio/flac"; break;
case VLC_CODEC_GSM: mime = "audio/gsm"; break;
case VLC_CODEC_A52: mime = "audio/ac3"; break;
case VLC_CODEC_EAC3: mime = "audio/eac3"; break;
case VLC_CODEC_ALAC: mime = "audio/alac"; break;
case VLC_CODEC_DTS: mime = "audio/vnd.dts"; break;
/* case VLC_CODEC_: mime = "audio/mpeg-L1"; break; */
/* case VLC_CODEC_: mime = "audio/aac-adts"; break; */
}
}
if (!mime)
{
msg_Dbg(p_dec, "codec %4.4s not supported",
(char *)&p_dec->fmt_in.i_codec);
return VLC_EGENERIC;
}
本文指导如何查看并修改VLC源代码,使其在Android设备上尽量使用硬件解码,通过编辑mediacodec.c文件,添加或更新mime类型对应,以支持更多硬件解码的视频和音频格式。
3420

被折叠的 条评论
为什么被折叠?



