【问题标题】:GStreamer When the frame rate is 10/1, the video playback speed gets fasterGStreamer 当帧率为10/1时,视频播放速度变快
【发布时间】:2018-02-05 11:16:05
【问题描述】:

我想在以下环境中使用 GStreamer 保存视频。

硬件:Raspberry pi(BCM 2709 修订版:a 22082)

操作系统:Raspbian GNU / Linux 9(延伸) 网络摄像头:罗技高清网络摄像头 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.

怎么了?

【问题讨论】:

    标签: linux video gstreamer raspbian raspberry-pi2


    【解决方案1】:

    您在管道中缺少 mp4mux 元素。尝试以下管道:

    $ gst-launch-1.0 v4l2src ! 视频/x-raw,宽度=640,高度=480,格式=YV12,帧率=10/1! 视频转换! omxh264enc !视频/x-h264 ! h264解析! mp4 多路复用器! 文件接收位置=video.h264

    【讨论】:

    • 感谢您的回复!我试过你的建议。然而,我并没有得到我期望的结果......
    • 行为是什么?您可以尝试以下管道:gst-launch-1.0 v4l2src!视频/x-raw,宽度=640,高度=480,格式=YV12,帧率=10/1!视频转换! omxh264enc ! “视频/x-h264,帧率=10”! h264解析! mp4 多路复用器!文件接收位置=video.h264
    • 非常感谢。我试过上面的管道,“内部数据流错误”。发生了。 “framerate = 10”是“10/1”的错误吗?我将其更改为“10/1”并尝试了,但“缓冲区没有 PTS”。错误发生了...
    • 要修复缓冲区没有 PTS 问题,请在此处尝试我的答案:stackoverflow.com/questions/45455279/…
    猜你喜欢
    • 1970-01-01
    • 2019-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多