小编abi*_*bir的帖子

使用gstreamer通过rtp流式传输H.264视频

我是gstreamer的新手,我正在尝试使用它.我的第一个目标是在两个设备之间创建一个简单的rtp h2p视频流.我正在使用这两个管道:

发件人: gst-launch-1.0 -v filesrc location=c:\\tmp\\sample_h264.mov ! x264enc ! rtph264pay ! udpsink host=127.0.0.1 port=5000

接收器: gst-launch-1.0 -v udpsrc port=5000 ! rtpmp2tdepay ! decodebin ! autovideosink

但是对于第一个(发件人),我收到以下错误:

Setting pipeline to PAUSED ...
Pipeline is PE*R*O L(LgIsNtG- l.a.u.n
h-1.0:5788): CRITICAL **: gst_adapter_map: assertion `size > 0' failed
ERROR: from element /GstPipeline:pipeline0/GstFileSrc:filesrc0: Internal data flow error.
Additional debug info:
gstbasesrc.c(2812): gst_base_src_loop (): /GstPipeline:pipeline0/GstFileSrc:filesrc0:
streaming task paused, reason not-negotiated (-4)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline …
Run Code Online (Sandbox Code Playgroud)

rtp video-streaming gstreamer h.264

15
推荐指数
1
解决办法
5万
查看次数

Gstreamer1.0:将decodebin链接到视频会话

我有以下管道工作正常:

gst-launch-1.0 -v filesrc location =/home/Videos/sample_h264.mov!decodebin!视频转换!autovideosink

我想写一个C程序来做同样的事情.所以我将以前的管道转换为以下代码:

pipeline = gst_pipeline_new ("video_pipeline"); 
if (!pipeline) {
g_print("Failed to create the pipeline\n");
return -1;
}

bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
watch_id = gst_bus_add_watch (bus, bus_call, loop);
gst_object_unref (bus);

source  = gst_element_factory_make ("filesrc", "file-source");
decoder  = gst_element_factory_make ("decodebin", "standard-decoder");
converter  = gst_element_factory_make ("videoconvert", "converter");
sink     = gst_element_factory_make ("autovideosink", "video-sink");

if (!source  || !decoder || !converter || !sink) {
g_print("Failed to create one or more pipeline elements\n");
return -1;
}

g_object_set(G_OBJECT(source), "location", file_name, NULL);

gst_bin_add_many …
Run Code Online (Sandbox Code Playgroud)

c gstreamer

2
推荐指数
2
解决办法
5937
查看次数

标签 统计

gstreamer ×2

c ×1

h.264 ×1

rtp ×1

video-streaming ×1