Transcoding to multiple image size
Dmitriy Novash
programer at wnet.ua
Fri Apr 21 10:01:11 UTC 2017
Hi.
First, problem with synchronization video and audio.
Second, with videoscale i get:
gstbin.c(2586): gst_bin_do_latency_func (): /GstPipeline:pipeline0:
Impossible to configure latency: max 0:00:02.700000000 < min
0:00:02.820000000. Add queues or other buffering elements.
Without videoscale 1 pair video+audio working, if I add second pair and
adding videoscale after vt no errors, such a video and audio and if I
remove videoscale and left other:
$ gst-launch-1.0 uridecodebin name=dec uri=udp://239.50.50.50:1234 \
dec. ! videoconvert ! deinterlace ! tee name=vt \
dec. ! audioconvert ! audioresample ! audio/x-raw,rate=48000,channels=1
! audiorate ! queue ! voaacenc bitrate=32000 ! tee name=at \
vt. ! queue ! videorate ! x264enc ! h264parse ! mpegtsmux name=muxer
alignment=7 ! rtpmp2tpay ! udpsink host=127.0.0.1 port=1111 \
at. ! queue ! aacparse ! muxer. \
vt. ! queue ! videoscale method=0 ! videorate !
video/x-raw,width=360,height=288,framerate=25/1 ! queue ! x264enc !
h264parse ! mpegtsmux name=muxer1 alignment=7 ! rtpmp2tpay ! udpsink
host=127.0.0.1 port=1112 \
at. ! queue ! aacparse ! muxer1.
I get 2 working copies of video+audio witout scale and with audio+video
synchronization problem.
21.04.2017 10:35, Bruce Tsai пишет:
> I made a mistake when connecting “mpegtsmux” to “rtpmp2tpay”.
>
> Here is modified version:
>
> gat-launch-1.0 uridecodebin name=dec uri=udp://239.50.50.50:1234 \
> dec. ! videoconvert ! deinterlace ! videoscale method=0 ! tee name=vt \
> dec. ! audioconvert ! audioresample !
> audio/x-raw,rate=48000,channels=1 ! audiorate ! queue ! voaacenc
> bitrate=32000 ! tee name=at \
> vt. ! queue ! videorate !
> video/x-raw,width=640,height=512,framerate=25/1 ! x264enc ! h264parse
> ! mpegtsmux name=muxer alignment=7 ! rtpmp2tpay ! udpsink
> host=127.0.0.1 port=1111 \
> at. ! queue ! aacparse ! muxer. \
> vt. ! queue ! videorate !
> video/x-raw,width=320,height=256,framerate=25/1 ! x264enc ! h264parse
> ! mpegtsmux name=muxer1 alignment=7 ! rtpmp2tpay ! udpsink
> host=127.0.0.1 port=1112 \
> at. ! queue ! aacparse ! muxer1. \
> vt. ! queue ! videorate !
> video/x-raw,width=160,height=128,framerate=25/1 ! x264enc ! h264parse
> ! mpegtsmux name=muxer2 alignment=7 ! rtpmp2tpay ! udpsink
> host=127.0.0.1 port=1113 \
> at. ! queue ! aacparse ! muxer2.
>
> --
> Yi-Lung (Bruce) Tsai
> wagamama.tsai at gmail.com <mailto:wagamama.tsai at gmail.com>
>
>
>
>
>
>> On Apr 21, 2017, at 2:32 PM, Dmitriy Novash <programer at wnet.ua
>> <mailto:programer at wnet.ua>> wrote:
>>
>> Hi, Bruce.
>>
>> Problem with combine video and audio.
>> $ GST_DEBUG=1 gst-launch-1.0 uridecodebin name=dec
>> uri=udp://239.50.50.50:1234 dec. ! videoconvert ! deinterlace ! tee
>> name=vt dec. ! audioconvert ! audioresample !
>> audio/x-raw,rate=48000,channels=1 ! audiorate ! queue ! voaacenc
>> bitrate=32000 ! tee name=at vt. ! videoscale method=0 ! videorate !
>> video/x-raw,width=640,height=512,framerate=25/1 ! x264enc ! h264parse
>> ! mpegtsmux name=muxer alignment=7 at. ! queue ! aacparse ! muxer. !
>> rtpmp2tpay ! udpsink host=127.0.0.1 port=1111
>> 0:00:00.015467297 3955 0x1f2a980 ERROR GST_PIPELINE
>> grammar.y:959:priv_gst_parse_yyparse: syntax error
>> 0:00:00.015490467 3955 0x1f2a980 ERROR GST_PIPELINE
>> grammar.y:959:priv_gst_parse_yyparse: syntax error
>>
>> Simplify code:
>> $ GST_DEBUG=1 gst-launch-1.0 uridecodebin name=dec
>> uri=udp://239.50.50.50:1234 dec. ! videoconvert ! deinterlace ! tee
>> name=vt dec. ! audioconvert ! audioresample !
>> audio/x-raw,rate=48000,channels=1 ! audiorate ! queue ! voaacenc
>> bitrate=32000 ! tee name=at vt. ! videoscale method=0 ! videorate !
>> video/x-raw,width=640,height=512,framerate=25/1 ! x264enc ! h264parse
>> ! mpegtsmux name=muxer alignment=7 at. ! fakesink
>> Установка конвейера в состояние PAUSED…
>> Конвейер работает и не требует состояния PREROLL…
>> Установка конвейера в состояние PLAYING…
>> New clock: GstSystemClock
>>
>>
>> 20.04.2017 18:58, Bruce Tsai пишет:
>>> First, there is no need to mix-use “decodebin” and “tsdemux”.
>>> “decodebin” already has demux capability.
>>> Second, there are too many “queue” in pipeline.
>>> Each “queue” introduces a new thread.
>>> Too many unnecessary threads is not a good idea.
>>> Third, “tee” for audio stream is also necessary.
>>> Each “mux” needs a copy of video and a copy of audio.
>>> Use “tee” to get three copies of video and audio respectively.
>>> Then combine each pair of video and audio to a “mpegtsmux”.
>>>
>>> I tried to rewrite your pipeline as follows:
>>>
>>> gat-launch-1.0 uridecodebin name=dec uri=udp://239.50.50.50:1234 \
>>> dec. ! videoconvert ! deinterlace ! videoscale method=0 ! tee name=vt \
>>> dec. ! audioconvert ! audioresample !
>>> audio/x-raw,rate=48000,channels=1 ! audiorate ! queue ! voaacenc
>>> bitrate=32000 ! tee name=at \
>>> vt. ! queue ! videorate !
>>> video/x-raw,width=640,height=512,framerate=25/1 ! x264enc !
>>> h264parse ! mpegtsmux name=muxer alignment=7 \
>>> at. ! queue ! aacparse ! muxer. ! rtpmp2tpay ! udpsink
>>> host=127.0.0.1 port=1111 \
>>> vt. ! queue ! videorate !
>>> video/x-raw,width=320,height=256,framerate=25/1 ! x264enc !
>>> h264parse ! mpegtsmux name=muxer1 alignment=7 \
>>> at. ! queue ! aacparse ! muxer1. ! rtpmp2tpay ! udpsink
>>> host=127.0.0.1 port=1112 \
>>> vt. ! queue ! videorate !
>>> video/x-raw,width=160,height=128,framerate=25/1 ! x264enc !
>>> h264parse ! mpegtsmux name=muxer2 alignment=7 \
>>> at. ! queue ! aacparse ! muxer2. ! rtpmp2tpay ! udpsink
>>> host=127.0.0.1 port=1113
>>>
>>> I didn’t verify above pipeline on my machine.
>>> You could try it with first pair of output only.
>>> Simplicity is good for debug.
>>> Then you could add second pair and then third pair.
>>>
>>>
>>> --
>>> Yi-Lung (Bruce) Tsai
>>> wagamama.tsai at gmail.com <mailto:wagamama.tsai at gmail.com>
>>>
>>>
>>>
>>>
>>>
>>>> On Apr 20, 2017, at 9:49 PM, Dmitriy Novash <programer at wnet.ua
>>>> <mailto:programer at wnet.ua>> wrote:
>>>>
>>>> Hi all.
>>>>
>>>> I have many TV streams (Mpeg2) in udp multicast.
>>>> I want to have stream in H264+AAC in udp multicast with 3
>>>> resolutions: 1:1 (original),1:2,1:4. Now I do it with 3 processes
>>>> of gst-launch, but for optimization of CPU usage I think I can do
>>>> it in one process.
>>>> After several tries I get 3 videos with 3 resolutions, but i can't
>>>> get audio for all threads, only for one.
>>>> I'm using gstreamer 1.00+ version:
>>>> $ gst-launch-1.0 --version
>>>> gst-launch-1.0 version 1.8.3
>>>> GStreamer 1.8.3
>>>>
>>>> My configuration:
>>>> |gst-launch-||1.0| |udpsrc uri=udp:||//239.50.50.50:1234 ! queue !
>>>> tsparse ! queue ! tsdemux name=demux \
>>>> demux. ! queue ! mpegvideoparse ! queue ! decodebin ! queue !
>>>> deinterlace ! \
>>>> tee name=tee1 ! queue ! videoscale method=0 ! videorate !
>>>> video/x-raw, width=640, height=512, framerate=25/1 ! x264enc !
>>>> h264parse ! mpegtsmux name=muxer alignment=7 \
>>>> demux. ! queue ! decodebin ! queue ! audioconvert ! audioresample
>>>> ! queue ! audio/x-raw, rate=48000, channels=1 ! audiorate !
>>>> voaacenc bitrate=32000 ! queue ! aacparse ! queue ! tee name=tee2 !
>>>> queue ! muxer. \
>>>> muxer. ! rtpmp2tpay ! udpsink host=127.0.0.1 port=1111 \
>>>> tee1. ! queue ! videoscale method=0 ! videorate ! video/x-raw,
>>>> width=320, height=256, framerate=25/1 ! x264enc ! h264parse !
>>>> mpegtsmux name=muxer1 alignment=7 muxer1. ! rtpmp2tpay ! udpsink
>>>> host=127.0.0.1 port=1112 \
>>>> tee1. ! queue ! videoscale method=0 ! videorate ! video/x-raw,
>>>> width=160, height=128, framerate=25/1 ! x264enc ! h264parse !
>>>> mpegtsmux name=muxer2 alignment=7 muxer2. ! rtpmp2tpay ! udpsink
>>>> host=127.0.0.1 port=1113|
>>>>
>>>> I can't join mpedtsmux and tee.
>>>>
>>>> So I want to decode video, get 3 copies, each copy scale to some
>>>> resolution, encode, decode + encode audio and join to each copy of
>>>> video, output each copy in udp unicast to some port.
>>>>
>>>> Help, maybe someone have working solution for my task.
>>>> _______________________________________________
>>>> gstreamer-devel mailing list
>>>> gstreamer-devel at lists.freedesktop.org
>>>> <mailto:gstreamer-devel at lists.freedesktop.org>
>>>> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>>
>>>
>>>
>>> _______________________________________________
>>> gstreamer-devel mailing list
>>> gstreamer-devel at lists.freedesktop.org
>>> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>
>> --
>> BR, Dmitriy Novash
>> Wnet IPTV/Media team
>> tel: +380(44) 5-900-800 (доп. 1132)
>> http://wnet.ua
>> _______________________________________________
>> gstreamer-devel mailing list
>> gstreamer-devel at lists.freedesktop.org
>> <mailto:gstreamer-devel at lists.freedesktop.org>
>> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
>
>
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
--
BR, Dmitriy Novash
Wnet IPTV/Media team
tel: +380(44) 5-900-800 (доп. 1132)
http://wnet.ua
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20170421/453fe12a/attachment-0001.html>
More information about the gstreamer-devel
mailing list