Transcoding to multiple image size
Bruce Tsai
wagamama.tsai at gmail.com
Fri Apr 21 07:35:53 UTC 2017
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
> On Apr 21, 2017, at 2:32 PM, Dmitriy Novash <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 <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
> 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/679d8e91/attachment-0001.html>
More information about the gstreamer-devel
mailing list