视频流中的 mv、fd、aq、vq、sq 和 f 是啥?

Posted

技术标签:

【中文标题】视频流中的 mv、fd、aq、vq、sq 和 f 是啥?【英文标题】:What are mv, fd, aq, vq, sq and f in a video stream?视频流中的 mv、fd、aq、vq、sq 和 f 是什么? 【发布时间】:2015-03-02 22:34:26 【问题描述】:

我正在使用 FFPLAY 通过 TCP 使用 RTSP 播放视频流,当 vq 值增加时它可以正常播放,但当只有 M-V 之前的值增加时,它会在 5-6 秒后停止。

nan M-V:    nan fd=   0 aq=    0KB vq=    0KB sq=    0B f=0/0   
......
......

Duration: N/A, start: 2.133467, bitrate: N/A
    Stream #0:0: Video: h264 (Main), yuvj420p(pc), 1280x1024, 15 fps, 25 tbr, 90k tbn, 30 tbc
[swscaler @ 0x7fd9502403c0] deprecated pixel format used, make sure you did set range correctly
  "76.81" M-V: -5.409 fd=   0 aq=    0KB vq=    0KB sq=    0B f=2/2 ` 

谁能解释一下这些M-V、fd、aq、vq、f是什么,以及M-V之前的值(“76.81”)?

【问题讨论】:

【参考方案1】:

我有同样的问题,通过查看ffplay 来源发现:

        av_log(NULL, AV_LOG_INFO,
               "%7.2f %s:%7.3f fd=%4d aq=%5dKB vq=%5dKB sq=%5dB f=%"PRId64"/%"PRId64"   \r",
               get_master_clock(is),
               (is->audio_st && is->video_st) ? "A-V" : (is->video_st ? "M-V" : (is->audio_st ? "M-A" : "   ")),
               av_diff,
               is->frame_drops_early + is->frame_drops_late,
               aqsize / 1024,
               vqsize / 1024,
               sqsize,
               is->video_st ? is->viddec.avctx->pts_correction_num_faulty_dts : 0,
               is->video_st ? is->viddec.avctx->pts_correction_num_faulty_pts : 0)

播放示例视频得到了输出示例:

7.11 A-V: 0.003 fd= 1 aq= 21KB vq= 321KB sq= 0B f=0/0

7.11 (master clock) 是从流/视频开始的时间

A-V (avdiff)音视频时间戳的区别

fd丢帧数

aq 音频帧大小

vq视频帧大小

sq字幕框大小

f时间戳纠错率(不是100%肯定)

M-VM-A分别表示仅视频流、仅音频流。

【讨论】:

他们当然应该在他们的手册中提到这一点man ffplay @neverMind9 你会惊讶于有多少功能没有在 FFmpeg 中记录,只能通过阅读代码来了解【参考方案2】:

我想澄清aq, vq 分别是“音频队列大小”和“视频队列大小”,而不是 Marware 回答中的“音频/视频帧大小”。

很抱歉发布了一个不完整的答案,但这个帖子在谷歌搜索ffmpeg vq 中排名第一,我希望我的澄清对那些碰巧在这里寻找vq 含义的人有所帮助。

这里有一些实用(但小众)的例子,说明vq(视频队列大小)在实际意义上的含义。

假设您正在使用 ffplay 显示来自安全摄像头的视频。在这种特殊情况下,vq 数字(连同相机流带宽)将定义从“实时”到 ffplay 中看到的图片的延迟。

例如,如果安全摄像头提供高质量的 10Mbps 流,而 vq 大约是 300K,则延迟/延迟大约为 1/4 秒。四分之一秒的延迟几乎不会引起注意。

delay (seconds) = vq_number * 8 * 1024 / video_stream_bits_per_second

现在,如果摄像头以 2Mbps 的速度传输并且vq 为 1000K(并不罕见),则延迟(延迟)约为 4 秒。这意味着你现在在 ffplay 中看到的事情发生在四秒前。

在任何其他情况下 - vq 越多越好。较大的vq 意味着有足够的数据排队(缓冲)以实现流畅的视频播放。

【讨论】:

以上是关于视频流中的 mv、fd、aq、vq、sq 和 f 是啥?的主要内容,如果未能解决你的问题,请参考以下文章

蚂蚁电竞ANT27VQ评测

scipy.cluster.vq.kmeans2 中的“矩阵不是正定的”错误

ffmpeg使用

c语言:求圆周长圆面积圆球表面积圆球体积圆柱体积。

EAC3 mantissa quantization(VQ & GAQ)

AQS原理探究