iphone - FFmpeg解码H264

标签 iphone ffmpeg h.264

我正在 iPhone 上使用 FFmpeg 解码 H264 流。我知道 H264 流是有效的,并且 SPS/PPS 是正确的,因为 VLC、Quicktime、Flash 都正确解码了流。这张图片最能说明我在 iPhone 上遇到的问题。

enter image description here

就好像正在绘制运动矢量一样。这张照片是在图像中有很多运动时拍摄的。如果场景是静态的,那么角落里就会有点。这种情况总是发生在预测框架中。 block 状颜色也是一个问题。

我尝试了 FFmpeg 的各种build设置,例如关闭优化、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 视频会慢得多且节能。

关于iphone - FFmpeg解码H264,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7548055/

相关文章:

iphone - 在 iPad 中计算纪元时间

ffmpeg - 在将 jpg 转换为视频的 Rasbpi 上初始化输出流 ffmpeg 时出错

h.264 - 这个 H264 NAL header 是什么意思?

android - 如何在没有 MediaExtractor 的情况下为 H264 使用 MediaCodec

iphone - NSArray 和 NSMutableArray 的 Objective-c 内部机制

iphone - 我可以取消“applicationDidEnterBackground”方法吗?

linux - 使用 FFMPEG 转换为 mp4 的 Shell 脚本会产生两次附加 .mp4 扩展名的新视频

node.js - 使用 node fluent-ffmpeg 将图像转换为视频

python - 使用 cv2 时删除 [h264 @ xxx] 错误控制台输出

ios - 在 TableViewCell 内的 TextView 中快速点击背线和字母后,TableView 中重复多个部分