我正在使用TI DM365 EVM录制视频和音频。我需要对这两个流进行编码,并将它们保存在.avi或.mp4之类的容器文件中。我正在使用以下gstreamer管道:
结果是我得到一个.avi文件,但是当我使用Totem Movie Player在PC上播放该文件时,视频播放速度过快,而音频以正常速度播放。例如,在5分钟的文件中,视频在40秒内完成播放。
另外,在录制时,我会收到以下几条消息:
WARNING: from element /GstPipeline:pipeline0/GstAlsaSrc:alsasrc0: Can't record audio fast enough
Additional debug info:
gstbaseaudiosrc.c(822): gst_base_audio_src_create (): /GstPipeline:pipeline0/GstAlsaSrc:alsasrc0:
Dropped 33516 samples. This is most likely because downstream can't keep up and is consuming samples too slowly.
有人看到过这种行为吗?有什么想法或解决方案吗?
最佳答案
我想问题是您的设备无法按您要求的速率传送帧。
一种可能的解决方案是通过videorate
元素对其进行“重新采样”:
v4l2src ! 'video/x-raw-yuv,format=(fourcc)NV12,width=1280,height=720' ! videorate force-fps=30 ! ...
UPDATE :或者类似的东西也可以工作:
... ! 'video/x-raw-yuv,format=(fourcc)NV12,width=1280,height=720' ! videorate ! 'video/x-raw-yuv,framerate=(fraction)30/1' ! ...