gstreamer rtmpsrc в rtmpsink

Я хочу захватить входящий поток флеш-медиа в реальном времени, созданный через веб-камеру с клиентского компьютера, с помощью плагина gstreamer rtmpsrc и преобразовать его в какой-либо обрабатываемый формат. Проблема в том, что когда я пытаюсь просмотреть входящий поток rtmp flash media с помощью следующей команды, я вижу вывод, но когда я пытаюсь сохранить поток в файл с помощью 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 бит

crtmpсервер x86_64

gstreamer 0.10


person Devendra    schedule 27.08.2012    source источник


Ответы (2)


Я думаю, вы можете использовать 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

person hailuodev    schedule 06.12.2016

Зачем вам нужны appsrc и appsink? Попробуйте rtmpsrc! filesink для вывода файла напрямую.

person av501    schedule 27.08.2012
comment
Как я уже упоминал, я хочу обрабатывать входящий поток и выводить обработанные данные, поэтому мне нужны appsrc и appsink . Если вы думаете, что я ошибаюсь, или вы знаете какой-либо другой метод для того же, пожалуйста, поделитесь. - person Devendra; 28.08.2012
comment
Ну, трудно сказать, что делать, если вы не объясните, что вы подразумеваете под тем, что это не работает. Не прероллит, не переходит в игровое состояние. Некоторый выходной дамп и т. д. Попробуйте добавить очередь между вашими приложениями и приложениями и проверьте. Либо вы проверяете, выходят ли данные из appsrc, выполняя fwrite в своем приложении, либо что-то в этом роде. Затем убедитесь, что данные поступают из appsink, поместив filesink после appsink и так далее. Проверьте, где проблема. - person av501; 28.08.2012
comment
Можете ли вы сказать мне, где я могу получить учебные пособия по написанию приложений gstreamer и тому подобное, используя appsrc и особенно rtmpsrc и его API. И под этим не работает, я имею в виду, что он выдает ошибку, отправленную сервером rtmp, и завершает работу. во-вторых, еще одна команда, например gst-launch-0.10 rtmpsrc location='rtmp://127.0.0.1/flvplayback/mynewstream live=1'! имя flvdemux = видео ! видео / x-flash-видео ! filesink location=/home/dev/ko.flv сохраняет файл .flv на диск, но когда я пытаюсь открыть его с помощью mplayer, он выдает ошибку, и если я пытаюсь просмотреть простые файлы rc ---> xvimagesink, он показывает снег. - person Devendra; 28.08.2012
comment
Лучше всего начать с руководства по написанию приложений gstreamer. Здесь нужно идти шаг за шагом. gstreamer.net — это место, где можно получить все документы. Кстати, зачем демультиплексировать перед записью в файл. Не можете ли вы написать напрямую без демультиплексирования того, что вам дает rtmpsrc? Просто спрашиваю. - person av501; 28.08.2012
comment
Ну, как я уже сказал, я новичок в gstreamer, и я пробую что-то, ища в сети. Какое решение вы предлагаете для моей задачи. Я имею в виду, какую команду или конвейерную линию я должен использовать, если я хочу перехватить входящий поток флеш-медиа через rtmp и получить к нему доступ в программе для его обработки, а затем поместить другой живой поток rtmp на сервер crtmpd. Как я уже сказал, когда я открываю этот файл o.flv через mplayer, он выдает ошибку неподдерживаемого потока, а когда я смотрю его с помощью xvimagesink, он показывает снег. не означает ли это, что при погружении файла произошла ошибка или ошибка? Правильно ? Вы можете предложить что-нибудь относительно tht? - person Devendra; 28.08.2012
comment
Хорошо, что здесь нет ярлыков. Вы должны отшлифовать его, чтобы понять компоненты, которые вы используете, и делать это шаг за шагом. Сначала убедитесь, что каждый элемент работает правильно и дает желаемый результат. Я сам не выполнял флеш-стриминг с помощью gstreamer, поэтому мне нечего вам сообщить. Но плагины определенно работают, если их правильно использовать. Так что удачи в этом. - person av501; 28.08.2012
comment
Спасибо . В любом случае я покопаюсь в руководстве по разработке для решения, если вы знаете какие-либо хорошие учебники, кроме руководств gstreamer.net, пожалуйста, дайте мне знать - person Devendra; 28.08.2012
comment
эй, я пытаюсь использовать плагин gstreamer-bad в своей программе, но когда я увидел список всех пакетов, установленных на моей машине с помощью команды pkg-config --list-all, он действительно показывает пакет gstreamer-plugins-bad- 0.10 означает ли это, что я не могу успешно скомпилировать программу, в которой я использую эти плохие плагины? - person Devendra; 28.08.2012