Media3 ExoPlayer有声音无画面分析

1.问题发现

播放有声音无画面

2.问题分析

2.1 错误解析
  • 组件: amlogic.avc.decoder.awesome - 这是Amlogic平台上的H.264硬件解码器
  • 参数: OMX.google.android.index.storeMetaDataInBuffers(0x7f000002) - 试图设置元数据存储参数
  • 端口: Output:1 - 输出端口1
  • 错误码: BadPortIndex(0x8000101b) - 无效的端口索引

继续从其它方面分析

2.2 对比ijk

从日志中可以看到,错误信息ERROR: BadPortIndex(0x8000101b)

使用的解码器是OMX.amlogic.avc.decoder.awesome ,再来看下ijkplayer设置硬解时播放的情况

ini 复制代码
selected codec: OMX.amlogic.avc.decoder.awesome rank=800

也是使用的该解码器,出现了同样的有声音无画面的问题。设置ijkplayer使用软解

Java 复制代码
//对于ijkPlayer的设置,有如下两种视频格式,0为软解,1为硬解
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec", 0);

发现可以播放正常了!可能和这个解码器有关。

2.3 对比sys

系统播放器可以正常播放,但是看到了一些奇怪的日志

sh 复制代码
amffmpeg  mediaserver  I  [av_find_stream_info:5268] st 0, para: 1, codec_info_nb_frames: 1,
amffmpeg  mediaserver  I  [av_find_stream_info:5268] st 1, para: 1, codec_info_nb_frames: 3,
amplayer  mediaserver  I  [audio_type_convert]audio codec_id=0x15002 format=2

日志中出现的amffmpeg ,av_find_stream_info等信息明显来自FFmpeg,表明该Android系统播放器扩展FFmpeg的能力 。

3.问题处理

硬件解码器初始化成功,解码的时候有问题也没有通知上层,无法触发解码器回滚机制,扩展ffmpeg能力,并根据盒子型号配置优先使用ffmpeg软解

Java 复制代码
DefaultRenderersFactory renderersFactory = new DefaultRenderersFactory(this);
//根据条件设置扩展解码能力优先
if(isNotSupportHardwareDecoding()){
	renderersFactory.setExtensionRendererMode(DefaultRenderersFactory.EXTENSION_RENDERER_MODE_PREFER);
}
player = new ExoPlayer.Builder(this,renderersFactory)
         .build();
相关推荐
ryn483981 天前
关于我是如何用AI创作一个1分半的短视频的
aigc·音视频开发
码流怪侠2 天前
FFmpeg 开发实战全解析:从入门到精通(附完整代码示例)
ffmpeg·音视频开发·视频编码
redreamSo6 天前
HeyGen 开源了一个"用 HTML 写视频"的框架,我研究了一下,发现事情没那么简单
前端·开源·音视频开发
MonkeyKing6 天前
iOS 音频会话 AVAudioSession 完整机制:分类、模式、激活策略
ios·音视频开发
JMchen12312 天前
集成第三方 C/C++ 库到 Android NDK 项目:OpenCV 与 FFmpeg 实战指南
opencv·ffmpeg·音视频开发·cmake·jni·ndk·abi 兼容性
qwfy13 天前
从零实现一个 IM + 直播 App:Kotlin + Compose 多模块架构全流程记录
app·音视频开发·直播
音视频牛哥17 天前
鸿蒙 NEXT 下 RTSP/RTMP 播放器如何实时调节音量、亮度、对比度与饱和度?
harmonyos·音视频开发·直播
冬奇Lab18 天前
音视频同步与渲染:PTS、VSYNC 与 SurfaceFlinger 的协作之道
android·音视频开发
冬奇Lab20 天前
MediaPlayer 播放器架构:NuPlayer 的 Source/Decoder/Renderer 三驾马车
android·音视频开发·源码阅读
冬奇Lab21 天前
硬件加速与 OMX/Codec2:解密编解码器的底层世界
android·音视频开发·视频编码