使用ffmpeg为h.26x视频的各个帧提取量化参数
如果我执行这样的命令:使用ffmpeg为h.26x视频的各个帧提取量化参数,ffmpeg,h.264,ffprobe,Ffmpeg,H.264,Ffprobe,如果我执行这样的命令: $ ffmpeg -i video.mp4 -qphist -vf codecview=qp=true video_qp.mp4 我得到了帧类型平均值的QP直方图,如下所示: [libx264 @ 0x7f8386803c00] frame I:5 Avg QP:21.65 size: 5960 [libx264 @ 0x7f8386803c00] frame P:172 Avg QP:23.90 size: 3449 [libx264 @ 0x7f
$ ffmpeg -i video.mp4 -qphist -vf codecview=qp=true video_qp.mp4
我得到了帧类型平均值的QP直方图,如下所示:
[libx264 @ 0x7f8386803c00] frame I:5 Avg QP:21.65 size: 5960
[libx264 @ 0x7f8386803c00] frame P:172 Avg QP:23.90 size: 3449
[libx264 @ 0x7f8386803c00] frame B:204 Avg QP:26.77 size: 1168
我想为视频中的每一帧提取QP,而不是得到总体平均值
有没有一种方法可以通过ffmpeg或相关工具(如ffprobe)来实现这一点(实际上,甚至没有)ffmpeg或相关工具(如ffprobe)?看起来ffmpeg并不是现成的 然而:此处的工具:非常有用 您可以请求每宏块打印输出:
./ffmpeg_debug_qp video.mp4 2> qp-values.txt
然后转换成更友好的json:
./parse-qp-output.py -o qp-values.json -f qp-values.txt
或者要求每个帧的平均值:
./parse-qp-output.py -o qp-values-avg.json -a -f qp-values.txt
该工具基本上执行
ffmpeg-debug:v qp-i input-an-v 48-f null-
,确实如此。答案中的工具很好地解析了输出,并很好地呈现了输出。@Gyan我不知道如何在该命令中包含其他宏块级调试信息,如类型、交错、分段等。我应该可以通过将日志级别设置为56来实现这一点,但它似乎不起作用。你知道怎么做吗?ie:类似这样的东西:[h264@0x7f93ba800000]新帧,键入:I[h264@0x7f93ba800000]24i 24i 24i 24i 24i 24i 24i 24
包括-nostats
,Gyan的命令将删除输出帧中的杂散状态日志。不过,ndtreviv的正确之处在于,该工具具有良好的格式选项。