2

我想连接到 HTTP MJPEG 实时流并将其作为视频文件在本地转储。所以我做了:

$ gst-launch -vvv 汤httpsrc location=http://bikersschool.dyndns.org/video.cgi?resolution=vga is-live=true do-timestamp=true !多部分解复用!JPEG格式!视频速率!视频/x-raw-yuv,帧率=60/1!理论!奥格多克斯!文件接收器位置="hi.ogg"

但是,在播放 hi.ogg 时,视频是慢动作的。

这是它制作的示例视频

更新:

我尝试降低 videorate 和 caps 过滤器。但它失败并显示以下消息:

$ gst-launch -vvv 汤httpsrc location=http://bikersschool.dyndns.org/video.cgi?resolution=vga is-live=true do-timestamp=true !多部分解复用!JPEG格式!理论!奥格多克斯!文件接收器位置="hi.ogg"

Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstJpegDec:jpegdec0.GstPad:sink: caps = image/jpeg
/GstPipeline:pipeline0/GstJpegDec:jpegdec0.GstPad:src: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)640, height=(int)480, framerate=(fraction)0/1
ERROR: from element /GstPipeline:pipeline0/GstSoupHTTPSrc:souphttpsrc0: Internal data flow error.
Additional debug info:
..\..\..\Source\gstreamer\libs\gst\base\gstbasesrc.c(2507): gst_base_src_loop (): /GstPipeline:pipeline0/GstSoupHTTPSrc:souphttpsrc0:
streaming task paused, reason not-negotiated (-4)
Execution ended after 1547045000 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
/GstPipeline:pipeline0/GstJpegDec:jpegdec0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstJpegDec:jpegdec0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstMultipartDemux:multipartdemux0.GstPad:src_0: caps = NULL
Setting pipeline to NULL ...
Freeing pipeline ...
4

1 回答 1

0

videorate的目的是什么!视频/x-raw-yuv,帧率=60/1?

从技术上讲,videorate 将复制丢帧以使输出速率达到 60fps。如果你降低视频速率怎么办!大写过滤器?gst-launch 为 jpegdec 的上限打印什么?

于 2012-06-16T18:32:22.900 回答