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