我想在以下环境中使用GStreamer保存视频。
硬件:Raspberry pi(BCM 2709修订版:a 22082)
OS:Raspbian GNU / Linux 9(拉伸) 网络摄像头:罗技HD WEBCAM C270
使用以下命令保存的视频,播放速度变得比预期的快。
$ gst-launch-1.0 v4l2src ! video/x-raw,width=640,height=480,format=YV12,framerate=10/1 ! videoconvert ! omxh264enc ! video/x-h264 ! h264parse ! filesink location=video.h264
但是,如果我将“帧率”更改为30/1,我可以毫无问题地观看
我使用以下命令
检查了视频的帧速率$ ffmpeg -i video.h 264
Input # 0, h 264, from 'video. H 264':
Duration: N / A, bitrate: N / A
Stream # 0: 0: Video: h 264 (High), yuv 420 p (progressive), 640 x 480 [SAR 1: 1 DAR 4: 3], 25 fps, 25 tbr, 1200 k tbn, 50 tbc
帧率为25/1。
我尝试使用以下命令将帧速率指定给硬件。
$ v4l2-ctl -d / dev / video0 -p 10
Frame rate set to 10.000 fps
但没有效果。
我也尝试使用“videorate”插件。
$ gst-launch-1.0 v4l2src ! videorate ! video/x-raw,width=640,height=480,format=YV12,framerate=10/1 ! videoconvert ! omxh264enc ! video/x-h264 ! h264parse ! filesink location=video.h264
但结果更糟。 即使开始播放,视频也会保持停止状态,一段时间后它将以高速播放
GStreamer的版本是1.10.4。 这是apt-get唯一可用的版本。 我试图从源代码编译,但不支持在Raspbian上构建,这非常困难。
更新 我试过Lad的建议(谢谢!)
但是显示以下错误消息......
gst-launch-1.0 v4l2src ! video/x-raw,width=640,height=480,format=YV12,framerate=10/1 ! videoconvert ! omxh264enc ! video/x-h264 ! h264parse ! mp4mux ! filesink location=video.h264
...
ERROR: from element /GstPipeline:pipeline0/GstMP4Mux:mp4mux0: Could not multiplex stream.
Additional debug info:
gstqtmux.c(3391): gst_qt_mux_add_buffer (): /GstPipeline:pipeline0/GstMP4Mux:mp4mux0:
Buffer has no PTS.
有什么问题?
答案 0 :(得分:1)
您缺少管道中的mp4mux元素。尝试以下管道:
$ gst-launch-1.0 v4l2src! video / x-raw,width = 640,height = 480,format = YV12,framerate = 10/1! 视频转换! omxh264enc! video / x-h264! h264parse! mp4mux! filesink location = video.h264