Transcoding to multiple image size

Bruce Tsai wagamama.tsai at gmail.com
Thu Apr 20 15:58:34 UTC 2017


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





> On Apr 20, 2017, at 9:49 PM, Dmitriy Novash <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
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20170420/8e06a559/attachment.html>


More information about the gstreamer-devel mailing list