User:StasFomin/GstreamerTranslation

From Wiki4Intranet
Jump to: navigation, search
gst-launch hdv1394src ! queue ! decodebin name=d ! queue ! xvimagesink d. ! queue ! alsasink

— Работает, показывает.

Надо задемуксить, и собрать FLV-поток в RTMP.



Путаюсь в mux-demux синтаксисе.



Sample 01

Без звука уже получается... осталось засунуть звук

gst-launch-1.0 -v \
        hdv1394src \
        ! queue \
        ! tsdemux name=demux\
            ! queue \
            ! mpeg2dec \
            ! queue \
            ! x264enc bitrate=700 tune=zerolatency pass=17  \
            ! queue \
      ! flvmux streamable=1 name=mux \
      ! fakesinc

Sample 02

Вот тут я считал, что demux. в предпоследней строчке даст аудиопоток, который придет в flvmux. Но по графу, видно, что не пришел, т.е. «demux.» ссылка почему-то не работает..

gst-launch-1.0 -v \
        hdv1394src \
        ! queue \
        ! tsdemux name=demux\
            ! queue \
            ! mpeg2dec \
            ! queue \
            ! x264enc bitrate=700 tune=zerolatency pass=17  \
            ! queue \
      ! flvmux streamable=1 name=mux \
            ! filesink location="output.flv"  \
       demux. ! audioresample ! voaacenc bitrate=64 \
      ! mux.


Stas-gst-sample-02.svg

Sample 03

Попытки указать порт для звука (с видео все и так вроде отлично) не помогают.

gst-launch-1.0 -v \
        filesrc location=mydump.ts \
        ! queue \
        ! tsdemux name=demux\
            ! queue \
            ! mpeg2dec \
            ! queue \
            ! x264enc bitrate=700 tune=zerolatency pass=17  \
            ! queue \
      ! flvmux streamable=1 name=mux \
            ! fakesink \
       demux.audio_0814 ! audioresample ! voaacenc bitrate=64 \
      ! mux.

Stas-gst-sample-03.svg

Sample 04

Помощь от gmelnikov

gst-launch hdv1394src \
! tsdemux name=dem \
! queue \
! ac3parse \
! a52dec \
! audioconvert \
! audioresample \
! flvmux streamable=1 name=mux \
dem. \
! queue \
! mpegvideoparse \
! mpeg2dec \
! x264enc bitrate=768 tune=zerolatency pass=17  \
! mux. mux. ! filesink location="out.flv"

Stas-gst-sample-04.svg

Вариант, который можно тестировать на тестовом входном файле https://cloud.mail.ru/public/2KtUehQBJLx2/mydump.ts

gst-launch filesrc location="mydump.ts" \
! tsdemux name=dem \
! queue \
! ac3parse \
! a52dec \
! audioconvert \
! audioresample \
! flvmux streamable=1 name=mux \
dem. \
! queue \
! mpegvideoparse \
! mpeg2dec \
! x264enc bitrate=768 tune=zerolatency pass=17  \
! mux. mux. ! filesink location="out.flv"

Sample 05

Проверенный работающий пример от gmelnikov.

Пытался запустить на своем тестовом https://cloud.mail.ru/public/2KtUehQBJLx2/mydump.ts

Версия 0.10 зафейлилась

gst-launch-0.10 \
filesrc location=mydump.ts \
! tsdemux name=dem \
! queue \
! ac3parse \
! a52dec \
! audioconvert \
! audioresample \
! flvmux streamable=1 name=mux \
dem. \
! queue \
! mpegvideoparse \
! mpeg2dec \
! x264enc bitrate=768 tune=zerolatency pass=17 ! \
mux. mux.! \
filesink location=test.flv

Получил ошибки

No accelerated IMDCT transform found
Подготовка конвейера (PREROLL)...
0:00:00.039853666 14497      0x1cb20f0 WARN              mpegtsbase mpegtsbase.c:843:mpegts_base_apply_pmt: Got pmt without pat first. Returning
0:00:00.039918622 14497      0x1cb20f0 WARN              mpegtsbase mpegtsbase.c:961:mpegts_base_handle_psi:<dem> bad crc in psi pid 0x810
0:00:00.040253360 14497      0x1cb20f0 WARN              mpegtsbase mpegtsbase.c:961:mpegts_base_handle_psi:<dem> bad crc in psi pid 0x814
0:00:00.040726205 14497      0x1cb20f0 WARN              mpegtsbase mpegtsbase.c:961:mpegts_base_handle_psi:<dem> bad crc in psi pid 0x810
0:00:00.040803007 14497      0x1cb20f0 WARN              mpegtsbase mpegtsbase.c:961:mpegts_base_handle_psi:<dem> bad crc in psi pid 0x814
0:00:00.041350560 14497      0x1cb20f0 WARN              mpegtsbase mpegtsbase.c:961:mpegts_base_handle_psi:<dem> bad crc in psi pid 0x814
0:00:00.041469962 14497      0x1cb20f0 WARN              mpegtsbase mpegtsbase.c:961:mpegts_base_handle_psi:<dem> bad crc in psi pid 0x810
0:00:00.041866178 14497      0x1cb20f0 WARN              mpegtsbase mpegtsbase.c:961:mpegts_base_handle_psi:<dem> bad crc in psi pid 0x814
0:00:00.043802936 14497      0x1cb20f0 ERROR             mpegtsbase mpegtsbase.c:895:mpegts_base_apply_pmt: Attempted to apply a PMT on a program that wasn't created
0:00:00.049958082 14497      0x1cb20f0 WARN              mpegtsbase mpegtsbase.c:1409:mpegts_base_loop:<dem> error: Внутренняя ошибка потока данных.
0:00:00.050013169 14497      0x1cb20f0 WARN              mpegtsbase mpegtsbase.c:1409:mpegts_base_loop:<dem> error: stream stopped, reason error
ОШИБКА: из элемента /GstPipeline:pipeline0/GstTSDemux:dem: Внутренняя ошибка потока данных.
Дополнительная отладочная информация:
mpegtsbase.c(1409): mpegts_base_loop (): /GstPipeline:pipeline0/GstTSDemux:dem:
stream stopped, reason error
ОШИБКА: конвейер не хочет подготавливаться (PREROLL).
Установка конвейера в состояние NULL...
Освобождение конвейера...

Версия 1.0 не упала,

gst-launch-1.0 \
filesrc location=mydump.ts \
! tsdemux name=dem \
! queue \
! ac3parse \
! a52dec \
! audioconvert \
! audioresample \
! flvmux streamable=1 name=mux \
dem. \
! queue \
! mpegvideoparse \
! mpeg2dec \
! x264enc bitrate=768 tune=zerolatency pass=17 ! \
mux. mux.! \
filesink location=test.flv

но тестовый файл пустой.

Та же фигня с графом — звук из TS не идет в FLV

Stas-gst-sample-05.svg