Transcoding to multiple image size
Dmitriy Novash
programer at wnet.ua
Fri Apr 21 06:32:06 UTC 2017
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20170421/0820d1ac/attachment.html>
More information about the gstreamer-devel
mailing list