【发布时间】:2019-07-02 10:18:04
【问题描述】:
我使用 gstreamer-1.0 从相机保存 .avi 视频。然后我尝试在 VLC 播放器中播放此视频,但播放速度太快。
例如,我录制了 20 秒的视频,但 VLS 播放了 7 秒。
gstreamer 的播放脚本运行良好。
录制视频的脚本:
gst-launch-1.0 -e v4l2src device=/dev/video4 ! video/x-bayer,format=grbg,depth=8,width=1920,height=1080,framerate=30/1 ! bayer2rgbneon ! video/x-raw,format=RGBA,width=1920,height=1080,framerate=30/1 ! videoconvert ! video/x-raw,format=I420,width=1920,height=1080,framerate=30/1 ! v4l2h264enc ! video/x-h264,width=1920,height=1080,framerate=30/1 ! avimux ! filesink location=/mnt/video/a.avi
播放脚本:
gst-launch-1.0 filesrc location=/mnt/video/a.avi ! avidemux ! video/x-h264,width=1920,height=1080,framerate=30/1 ! decodebin ! videoconvert ! video/x-raw,format=RGBA,width=1920,height=1080,framerate=30/1 ! videoscale ! kmssink driver-name=imx-drm force-modesetting=false can-scale=false sync=false
此解决方案基于 phyBOARD-Nunki。
【问题讨论】:
-
(1) 请提供一个可测试的 20 秒视频剪辑来显示此问题。要么您已经保存了足够的帧(在输出文件中)以仅显示 7 秒(ie: 您的设备或脚本设法每 2.8 秒编码一个帧)。 (2) 7 秒是否看起来像是跳过了很多帧,还是真的每一帧都播放得更快?同样在VLC中,在媒体信息下,它认为视频帧率是多少?
-
感谢您的回复。看来我的相机不能给我 30fps。看起来它每秒只有 8 帧。在 VLC 中,我有 30 fps。我猜视频只是从 8 fps 和 20 秒的长度压缩到 7 秒的 30 fps 视频。我也试图改变容器。我使用 matroska 并保存 .mkv 视频文件。在 VLC 中它运行良好,但只有 8fps
-
还有一件事。我尝试使用“vidoerate”。视频的长度变得很好。但是出现了很多复制的帧。我猜 'videorate' 复制了缺失的帧以用必要的帧数填充视频以达到 30 fps 值
-
有您的相机型号/品牌的产品链接吗?也许有设置以 30 fps 录制(或者是一些安全闭路电视摄像机,因此低 fps?)。如果 8 fps 是相机功能,那么您将不得不更改相机硬件,因为仅靠软件/代码无法解决此问题。
-
Doc 这里是文档的链接。我的摄像头在 4.6VM-011 – phyCAM-P 摄像头模块章节中。颜色一。关于文档摄像头可以给我 30fps 全高清
标签: linux video gstreamer video-processing gstreamer-1.0