Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用gstreamer录制实时视频而不丢失帧?_Python_Linux_Gstreamer - Fatal编程技术网

Python 如何使用gstreamer录制实时视频而不丢失帧?

Python 如何使用gstreamer录制实时视频而不丢失帧?,python,linux,gstreamer,Python,Linux,Gstreamer,我试图使用Python中的gstreamer 0.10来同时显示v4l2视频源并将其录制到avi中的xvid。在很长一段时间内,计算机的速度足以做到这一点,但如果另一个程序使用该磁盘,它会丢弃帧。这已经够糟糕的了,但在播放时,视频中会出现突发的运动,其中帧被丢弃,而不是显示我们能够以较低帧速率编码的帧 管道是v4l2src!capsfilter!球座!队列十六!阿维穆克斯!filesink和tee也会下沉到队列!xImageSink sync=false。我曾尝试在xvidenc前面添加vide

我试图使用Python中的gstreamer 0.10来同时显示v4l2视频源并将其录制到avi中的xvid。在很长一段时间内,计算机的速度足以做到这一点,但如果另一个程序使用该磁盘,它会丢弃帧。这已经够糟糕的了,但在播放时,视频中会出现突发的运动,其中帧被丢弃,而不是显示我们能够以较低帧速率编码的帧

管道是
v4l2src!capsfilter!球座!队列十六!阿维穆克斯!filesink
和tee也会下沉到
队列!xImageSink sync=false
。我曾尝试在
xvidenc
前面添加
videorate
,但这似乎让事情变得更糟


我考虑过在这个管道中将未压缩的视频假脱机到磁盘,并在后台线程中对其进行编码。我还能做些什么来解决这个问题?
xvidenc
avimux
是否对丢弃的帧做了错误的处理?我可以大幅增加编码器前面队列的大小吗?

tee
如果其中一个输出阻塞,它将阻塞,因此这可能是您的瓶颈。我建议将需要更长时间编码的流写入磁盘并从磁盘编码。

并且您需要写入xImageSink,而不是xImageSync

如何对输出进行分块,以便在转码后立即删除每个分块?我最后切换到了运动jpeg。压缩是可怕的,但它没有过度的CPU。