Media3 Transformer编码码率异常及旋转问题求助
Media3 Transformers API 视频编码问题修复方案
一、编码参数(码率/帧率/分辨率)未生效问题
- 确认参数传递链路:需通过
EncoderSettings.Builder构建编码参数,再通过TransformationRequest.Builder().setVideoEncoderSettings(encoderSettings)绑定到转换请求中,避免参数未被Transformer正确接收。 - 修正分辨率计算逻辑:输入视频的90度旋转元数据会干扰尺寸识别,先解析输入媒体的
rotationDegrees,再根据实际像素尺寸设置目标分辨率(比如原视频带90度旋转,元数据显示1024x576,实际像素为576x1024,需对应设置竖屏或旋转后的横屏目标尺寸)。 - 核对码率单位:Media3中码率单位为比特每秒(bps),确保设置
setBitrate(1000000)对应1Mbps,而非kbps,避免实际码率超出预期。
二、输出元数据带90度旋转、尺寸显示异常问题
- 强制清除旋转元数据:通过
TransformationRequest.Builder().setVideoRotation(VideoOutputRotation.ROTATE_0)强制输出无旋转标记的视频,同时设置与实际播放尺寸匹配的目标分辨率(比如原视频旋转后显示为1024x576,直接设置目标分辨率为你需要的横屏尺寸,如720x480)。 - 校验输入媒体真实信息:使用
MediaItem.Factory解析输入视频的MediaMetadata,打印videoWidth、videoHeight和rotationDegrees,确认实际像素尺寸,避免被旋转元数据误导。
三、设置BITRATE_MODE_CBR后触发VideoEncoder错误
- 验证编码器兼容性:部分设备硬件编码器不支持CBR模式,可先切换为软件编码器测试:
Transformer.Builder(context).setEncoderSelector(EncoderSelector.SOFTWARE_ONLY),排除硬件编码器限制问题。 - 微调码率适配CBR模式:日志显示实际码率略高于目标值,可能是CBR模式下编码器需要缓冲空间,尝试将目标码率微调至编码器支持的范围(比如设为1200000bps),或降低帧率后再匹配码率。
- 捕获详细错误日志:开启Media3详细日志(过滤
ExoPlayerImpl、Transformer标签),查看具体编码器错误码(如ERROR_INVALID_OPERATION),针对性调整参数。
示例代码片段
// 构建编码器配置 val encoderSettings = VideoEncoderSettings.Builder() .setBitrate(1000000) // 1Mbps .setFrameRate(24) .setResolution(720, 480) .setBitrateMode(VideoEncoderSettings.BITRATE_MODE_CBR) .build() // 构建转换请求,强制去除旋转 val transformationRequest = TransformationRequest.Builder() .setVideoEncoderSettings(encoderSettings) .setVideoRotation(VideoOutputRotation.ROTATE_0) .build() // 初始化Transformer(先测试软件编码器) val transformer = Transformer.Builder(context) .setEncoderSelector(EncoderSelector.SOFTWARE_ONLY) .build() // 执行转换任务 transformer.startTransformation( MediaItem.fromUri(inputUri), outputUri, transformationRequest, object : Transformer.Listener { override fun onCompleted(mediaItem: MediaItem) { // 处理完成逻辑 } override fun onError(mediaItem: MediaItem, exception: TransformationException) { Log.e("TransformerError", exception.message, exception) } } )
内容的提问来源于stack exchange,提问作者terlan abaszade
相关产品推荐
相关产品推荐

