Difference between revisions of "User:StasFomin/GstreamerTranslation"

From Wiki4Intranet
Jump to: navigation, search
Line 187: Line 187:
  
 
Та же фигня с графом — звук из TS не идет в FLV
 
Та же фигня с графом — звук из TS не идет в FLV
 +
 +
 +
== Misc ==
 +
=== gst-inspect hdv1394src ===
 +
<pre>
 +
Factory Details:
 +
  Rank                    none (0)
 +
  Long-name                Firewire (1394) HDV video source
 +
  Klass                    Source/Video
 +
  Description              Source for MPEG-TS video data from firewire port
 +
  Author                  Edward Hervey <bilboed@bilboed.com>
 +
 +
Plugin Details:
 +
  Name                    1394
 +
  Description              Source for video data via IEEE1394 interface
 +
  Filename                /usr/lib64/gstreamer-1.0/libgst1394.so
 +
  Version                  1.2.4
 +
  License                  LGPL
 +
  Source module            gst-plugins-good
 +
  Source release date      2014-04-18
 +
  Binary package          ROSA Desktop Fresh R4 gstreamer1.0-plugins-good package
 +
  Origin URL              http://www.rosalab.ru/
 +
 +
GObject
 +
+----GInitiallyUnowned
 +
      +----GstObject
 +
            +----GstElement
 +
                  +----GstBaseSrc
 +
                        +----GstPushSrc
 +
                              +----GstHDV1394Src
 +
 +
Implemented Interfaces:
 +
  GstURIHandler
 +
 +
Pad Templates:
 +
  SRC template: 'src'
 +
    Availability: Always
 +
    Capabilities:
 +
      video/mpegts
 +
          systemstream: true
 +
            packetsize: 188
 +
 +
 +
Element Flags:
 +
  no flags set
 +
 +
Element Implementation:
 +
  Has change_state() function: gst_base_src_change_state
 +
 +
Element has no clocking capabilities.
 +
Element has no indexing capabilities.
 +
 +
URI handling capabilities:
 +
  Element can act as source.
 +
  Supported URI protocols:
 +
    hdv
 +
 +
Pads:
 +
  SRC: 'src'
 +
    Implementation:
 +
      Has getrangefunc(): gst_base_src_getrange
 +
      Has custom eventfunc(): gst_base_src_event
 +
      Has custom queryfunc(): gst_base_src_query
 +
    Pad Template: 'src'
 +
 +
Element Properties:
 +
  name                : The name of the object
 +
                        flags: readable, writable
 +
                        String. Default: "hdv1394src0"
 +
  parent              : The parent of the object
 +
                        flags: readable, writable
 +
                        Object of type "GstObject"
 +
  blocksize          : Size in bytes to read per buffer (-1 = default)
 +
                        flags: readable, writable
 +
                        Unsigned Integer. Range: 0 - 4294967295 Default: 4096
 +
  num-buffers        : Number of buffers to output before sending EOS (-1 = unlimited)
 +
                        flags: readable, writable
 +
                        Integer. Range: -1 - 2147483647 Default: -1
 +
  typefind            : Run typefind before negotiating
 +
                        flags: readable, writable
 +
                        Boolean. Default: false
 +
  do-timestamp        : Apply current stream time to buffers
 +
                        flags: readable, writable
 +
                        Boolean. Default: false
 +
  port                : Port number (-1 automatic)
 +
                        flags: readable, writable
 +
                        Integer. Range: -1 - 16 Default: -1
 +
  channel            : Channel number for listening
 +
                        flags: readable, writable
 +
                        Integer. Range: 0 - 64 Default: 63
 +
  use-avc            : Use AV/C VTR control
 +
                        flags: readable, writable
 +
                        Boolean. Default: true
 +
  guid                : select one of multiple DV devices by its GUID. use a hexadecimal like 0xhhhhhhhhhhhhhhhh. (0 = no guid)
 +
                        flags: readable, writable
 +
                        Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 0
 +
  device-name        : user-friendly name of the device
 +
                        flags: readable
 +
                        String. Default: "Default"
 +
</pre>
  
 
[[File:stas-gst-sample-05.svg|800px]]
 
[[File:stas-gst-sample-05.svg|800px]]

Revision as of 02:08, 23 April 2015

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


Misc

gst-inspect hdv1394src

Factory Details:
  Rank                     none (0)
  Long-name                Firewire (1394) HDV video source
  Klass                    Source/Video
  Description              Source for MPEG-TS video data from firewire port
  Author                   Edward Hervey <bilboed@bilboed.com>

Plugin Details:
  Name                     1394
  Description              Source for video data via IEEE1394 interface
  Filename                 /usr/lib64/gstreamer-1.0/libgst1394.so
  Version                  1.2.4
  License                  LGPL
  Source module            gst-plugins-good
  Source release date      2014-04-18
  Binary package           ROSA Desktop Fresh R4 gstreamer1.0-plugins-good package
  Origin URL               http://www.rosalab.ru/

GObject
 +----GInitiallyUnowned
       +----GstObject
             +----GstElement
                   +----GstBaseSrc
                         +----GstPushSrc
                               +----GstHDV1394Src

Implemented Interfaces:
  GstURIHandler

Pad Templates:
  SRC template: 'src'
    Availability: Always
    Capabilities:
      video/mpegts
           systemstream: true
             packetsize: 188


Element Flags:
  no flags set

Element Implementation:
  Has change_state() function: gst_base_src_change_state

Element has no clocking capabilities.
Element has no indexing capabilities.

URI handling capabilities:
  Element can act as source.
  Supported URI protocols:
    hdv

Pads:
  SRC: 'src'
    Implementation:
      Has getrangefunc(): gst_base_src_getrange
      Has custom eventfunc(): gst_base_src_event
      Has custom queryfunc(): gst_base_src_query
    Pad Template: 'src'

Element Properties:
  name                : The name of the object
                        flags: readable, writable
                        String. Default: "hdv1394src0"
  parent              : The parent of the object
                        flags: readable, writable
                        Object of type "GstObject"
  blocksize           : Size in bytes to read per buffer (-1 = default)
                        flags: readable, writable
                        Unsigned Integer. Range: 0 - 4294967295 Default: 4096
  num-buffers         : Number of buffers to output before sending EOS (-1 = unlimited)
                        flags: readable, writable
                        Integer. Range: -1 - 2147483647 Default: -1
  typefind            : Run typefind before negotiating
                        flags: readable, writable
                        Boolean. Default: false
  do-timestamp        : Apply current stream time to buffers
                        flags: readable, writable
                        Boolean. Default: false
  port                : Port number (-1 automatic)
                        flags: readable, writable
                        Integer. Range: -1 - 16 Default: -1
  channel             : Channel number for listening
                        flags: readable, writable
                        Integer. Range: 0 - 64 Default: 63
  use-avc             : Use AV/C VTR control
                        flags: readable, writable
                        Boolean. Default: true
  guid                : select one of multiple DV devices by its GUID. use a hexadecimal like 0xhhhhhhhhhhhhhhhh. (0 = no guid)
                        flags: readable, writable
                        Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 0
  device-name         : user-friendly name of the device
                        flags: readable
                        String. Default: "Default"

Stas-gst-sample-05.svg