2

我想使用 gstreamer rtmpsrc 插件从客户端机器捕获通过网络摄像头生成的实时传入 Flash 媒体流,并将其转换为一些可处理的格式。问题是当我尝试使用以下命令查看传入的 rtmp flash 媒体流时,我可以看到输出,但是当我尝试使用 filesink 将流保存到文件时,它根本不起作用。

gst-launch-0.10 rtmpsrc location='rtmp://127.0.0.1/flvplayback/mynewstream live=1' ! flvdemux name=d d. ! queue ! decodebin ! xvimagesink

我也不会将此管道构建到 C/C++ 程序中,以便我可以处理传入的元素。我已经为“ filesrc --> appsrc --> appsink --> filesink ”编写了代码,它工作正常。

但是,当我为“rtmpsrc -->appsrc --> appsink--> rtmpsink”编写代码时,它不起作用。我是 gstreamer 编程的新手,所以你能帮我或告诉我在哪里可以获得这样的编程教程或示例的好资源。

我的系统配置:

Linux Ubuntu 12.04 64 位

crtmpserver x86_64

gstreamer 0.10

4

2 回答 2

1

我认为您可以使用 flvdemux 分离视频(H.264)和音频(MPEG 4 AAC),然后处理它们。例如延迟10秒:queue max-size-buffers=0 max-size-time=0 max-size-bytes=0 min-threshold-time=10000000000

例子:

gst-launch-1.0 rtmpsrc location=rtmp://XXXX ! flvdemux name=mydemuxer flvmux name=mymuxer ! queue ! rtmpsink location=rtmp://XXXX mydemuxer.audio ! queue ! mymuxer.audio mydemuxer.video ! queue ! mymuxer.video

于 2016-12-06T02:33:12.053 回答
0

为什么需要appsrc 和appsink?试试 rtmpsrc !filesink 直接转储文件。

于 2012-08-27T19:37:46.523 回答