Transcoding to multiple image size

Bruce Tsai wagamama.tsai at gmail.com
Sat Apr 29 14:41:09 UTC 2017


How about this:

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 ! queue ! mpegtsmux name=muxer alignment=7 ! rtpmp2tpay ! queue ! 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 ! queue ! mpegtsmux name=muxer1 alignment=7 ! rtpmp2tpay ! queue ! 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 ! queue ! mpegtsmux name=muxer2 alignment=7 ! rtpmp2tpay ! queue ! udpsink host=127.0.0.1 port=1113 \
at. ! queue ! aacparse ! muxer2.

I add one more “queue" between “h264parse” and “mpegtsmux”, and one more “queue” between “rtpmp2tpay” and “udpsink”.
First added “queue” is to make sure “x264enc” is not blocked by “mpegtsmux”.
Second added “queue” is to decouple “mpegtsmux” from “udpsink”.

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





> On Apr 25, 2017, at 3:36 PM, Dmitriy Novash <programer at wnet.ua> wrote:
> 
> Maybe fixed in later releases.
> A try to compile from sources, but have some troubles.
> 
> Can you suggest something else?
> What i need to get working pipeline with videoscale?
> 
> 22.04.2017 07:33, Bruce Tsai пишет:
>> This situation is weird to me.
>> I suppose A/V timestamp is fixed in “mpegtsmux” so “filesink” or “udpsink” shall output same result.
>> Maybe “rtpmp2tpay” changes the timestamp information?
>> 
>> --
>> Yi-Lung (Bruce) Tsai
>> wagamama.tsai at gmail.com <mailto:wagamama.tsai at gmail.com>
>> 
>> 
>> 
>> 
>> 
>>> On Apr 21, 2017, at 8:16 PM, Dmitriy Novash <programer at wnet.ua <mailto:programer at wnet.ua>> wrote:
>>> 
>>> Recorded video to disk is perfect, but real time output to udp have A/V sync 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 <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/20170429/1742ab77/attachment-0001.html>


More information about the gstreamer-devel mailing list