[英]FFmpeg decoding H264
我正在 iPhone 上使用 FFmpeg 解码 H264 流。 我知道 H264 流是有效的,SPS/PPS 是正确的,因为 VLC、Quicktime、Flash 都正确解码了流。 我在 iPhone 上遇到的问题最好通过这张图片来说明。
就好像正在绘制运动矢量一样。 这张照片是在图像中有很多运动时拍摄的。 如果场景是静态的,那么角落里就会有点。 这总是发生在预测帧中。 块状颜色也是一个问题。
我尝试了 FFmpeg 的各种构建设置,例如关闭优化、asm、neon 和许多其他组合。 似乎没有什么能改变解码器的行为。 我还尝试过 Works with HTML、Love and Peace 版本以及最新的 GIT 源。 是否有我遗漏的设置,或者我无意中在解码器中启用了一些调试设置。
编辑
我正在使用 sws_scale 将图像转换为 RGBA。 我尝试了各种不同的像素格式,结果相同。
sws_scale(convertCtx, (const uint8_t**)srcFrame->data, srcFrame->linesize, 0, codecCtx->height, dstFrame->data, dstFrame->linesize);
设置编解码器上下文时,我使用 PIX_FMT_YUV420P 作为源格式。
您正在查看的是 ffmpeg 的运动矢量可视化。 确保没有设置以下调试标志:
avctx->debug & FF_DEBUG_VIS_QP
avctx->debug & FF_DEBUG_VIS_MB_TYPE
avctx->debug_mv
另外,请记住,与使用硬件解码器相比,在 iOS 上使用 CPU 解码 H264 视频会慢得多且能效更低。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.