Transcoding to multiple image size

Bruce Tsai wagamama.tsai at gmail.com
Fri Apr 21 10:31:57 UTC 2017


Let’s write one pair of A/V to disk to see if A/V sync problem occurs.

gat-launch-1.0 uridecodebin name=dec uri=udp://239.50.50.50:1234 <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 ! filesink location=test.ts \
at. ! queue ! aacparse ! muxer. \

=====
Then check UDP output of one pair of A/V to see if A/V sync problem occurs.

gat-launch-1.0 uridecodebin name=dec uri=udp://239.50.50.50:1234 <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.


--
Yi-Lung (Bruce) Tsai
wagamama.tsai at gmail.com





> On Apr 21, 2017, at 6:01 PM, Dmitriy Novash <programer at wnet.ua> wrote:
> 
> 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 <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 <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 <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 <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 <https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel>
>>>> 
>>>> 
>>>> 
>>>> _______________________________________________
>>>> 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 <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 <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 <https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel>
>> 
>> 
>> 
>> _______________________________________________
>> 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 <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 <http://wnet.ua/>_______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20170421/ed924615/attachment-0001.html>


More information about the gstreamer-devel mailing list