Raspberry pi flvmux不能以与音频相同的速率播放视频

Raspberry pi flvmux不能以与音频相同的速率播放视频,raspberry-pi,gstreamer,raspberry-pi3,gstreamer-1.0,Raspberry Pi,Gstreamer,Raspberry Pi3,Gstreamer 1.0,我有一个管道,用于从C920摄像机捕获音频和视频,对其进行一些非常简单的处理(低cpu要求),然后重新压缩并将其多路复用到文件中 这是管道的总体轮廓: Platform: - Raspberry Pi 3 - Debian Jessie - GStreamer 1.8 不要担心我的“简单处理”区域。我的总CPU低于25%的CPU 我发现,Q3和Q4开始慢慢填满,直到有一个达到阈值,然后我的音频变得很不稳定(我从alsasrc收到警告“下游没有足够快地消耗缓冲区”)。 我可以在队列中设置漏洞,

我有一个管道,用于从C920摄像机捕获音频和视频,对其进行一些非常简单的处理(低cpu要求),然后重新压缩并将其多路复用到文件中

这是管道的总体轮廓:

Platform:
- Raspberry Pi 3
- Debian Jessie
- GStreamer 1.8

不要担心我的“简单处理”区域。我的总CPU低于25%的CPU

我发现,Q3和Q4开始慢慢填满,直到有一个达到阈值,然后我的音频变得很不稳定(我从alsasrc收到警告“下游没有足够快地消耗缓冲区”)。 我可以在队列中设置漏洞,但这很难解决问题

当我的管道正在运行时,这就是我的队列的样子(以毫秒为单位的当前级别时间)

==实验===

我去掉了管道的黄色部分,这样我就只捕获了视频,效果更好。我没有不断“增长”的队列,输出的视频非常完美

QUEUE CONTENTS IN MILLISECONDS

TIME(s)     Q1     Q2    Q3    Q4    Q5    Q6
      0      0      0     0     0     0     0
      5      0      0     2     0     0     0
     10      0      0     5     0     0     0
     15      0      0     8     0     0     0
     20      0      0     8     0     0     0
     25      0      0     8     0     0     0
     30      0      0     8     0     0     0
     35      0      0     8     0     0     0
     40      0      0     8     0     0     0
     45      0      0     8     0     0     0
     50      0      0     8     0     0     0
此外,我尝试了以下管道(我在图中省略了队列),并获得了完全成功——视频录制至少10分钟,没有任何问题

问题===

发生了什么事

我的猜测是,因为Q3(视频输出)已经满了,所以音频一定会减慢速度。 因为Q4已经满了,而不是Q5——这一定意味着alsa产生音频的速度比aac编码器能够压缩的速度更快——这是正确的吗? 然而,我的CPU使用率非常低——我试过使用2个aac编码器(voaacenc和avenc_aac)和一个MP3编码器,都有同样的问题

=======更新=========

我在音频和视频(直接在音频和视频之后)之后放置了一些标识元素,并将它们的输出点绘制成图表。你可以看到它们很快就开始彼此疏远。当视频达到30秒时,音频已经落后21秒。 这是一张图表

=======更新2=========

我有第二台相机,换了一台,问题就解决了。音频和视频PTS值保持同步至少25分钟。 与这款新相机的不同之处在于,它是一款经过改装的C920,配有定制镜头。巧合的是,镜头被完全拉离了焦点——这就是修正PTS漂移的原因(如果我聚焦定制镜头,我会得到相同的PTS漂移)

所以-问题有点变化:为什么聚焦C920相机的PTS漂移如此严重? 注意:我正在关闭自动曝光,并将曝光绝对值设置为默认值250。
我希望能够使用自动曝光,但是…

好的,我已经解决了这个问题。任何人阅读:)

如果您使用的是Raspberry Pi,即使是v3-请确保在
uvch264src
上已将
峰值比特率配置为不超过
3650000
(3.65Mbps)。我还捕获了24khz的音频-如果你不这样做,你可能可以再多看一点

如果您将其设置为“更多”,或者完全忽略它,您将遇到与我相同的奇怪问题。视频片段中的移动和高细节将导致编码的H264超出Pi所能处理的范围。因此,您的问题将是奇怪和零星的

我只能认为C920正在使USB总线饱和-奇怪,因为USB2应该高达480Mbps-而我设置的限制是3.65Mbps。 我听说Raspberry有一个非常有缺陷的USB固件blob,但直到现在还从未遇到过它


问题解决了。我一直在考虑搬到一个龙板。。。这可能给了我最好的理由。

可能相关吗?处理是否对时间戳进行了任何处理?另外:处理是否有
appsink
?如果启动
GST_DEBUG
变量,是否有关于延迟计算的日志?@Velkan不,我不处理时间戳。。。没有appsink…@Velkan我会尽快检查延迟-我刚刚花了最后一天的时间尝试升级到1.10.4以获得这里提到的修复:不幸的是,结果是一个更坏的实现,产生了完全损坏的h264
QUEUE CONTENTS IN MILLISECONDS

TIME(s)     Q1     Q2    Q3    Q4    Q5    Q6
      0      0      0     0     0     0     0
      5      0      0     2     0     0     0
     10      0      0     5     0     0     0
     15      0      0     8     0     0     0
     20      0      0     8     0     0     0
     25      0      0     8     0     0     0
     30      0      0     8     0     0     0
     35      0      0     8     0     0     0
     40      0      0     8     0     0     0
     45      0      0     8     0     0     0
     50      0      0     8     0     0     0