Gstreamer Combine Video and Sound from different sources and Broadcast to RTMP

1.1k views Asked by At

I have googled it all but I couldn't find solution to my problem. I will be happy if anyone had similiar need and resolved somehow.

I do stream to RTMP server by following command. It captures video from HDMI Encoder, crops, rotates video.

gst-launch-1.0 -e v4l2src device=/dev/v4l/by-path/platform-fe801000.csi-video-index0 ! video/x-raw,format=UYVY,framerate=20/1 ! videoconvert ! videoscale ! video/x-raw, width=1280,height=720 ! videocrop top=0 left=0 right=800 bottom=0 ! videoflip method=counterclockwise ! omxh264enc ! h264parse!  flvmux name=mux streamable=true ! rtmpsink sync=true async=true location='rtmp://XXXXX live=true'

and I want to add Audio to existing microphone on Raspberry. For example I can record microphone input to wav file by below pipeline.

gst-launch-1.0 alsasrc num-buffers=1000 device="hw:1,0" ! audio/x-raw,format=S16LE  ! wavenc  !  filesink location = a.wav

My question is; how can I add audio to my existing command line which streams to RTMP Server? And also, when I capture audio to file, there is a lots of Noise. How can I avoid?

Thank you

2

There are 2 answers

0
mevlut topal On

I have combined Audio & Video. But I have still Noise on Audio.

gst-launch-1.0 -e v4l2src device=/dev/v4l/by-path/platform-fe801000.csi-video-index0 ! video/x-raw,format=UYVY,framerate=20/1 ! videoconvert ! videoscale ! video/x-raw, width=1280,height=720 ! videocrop top=0 left=0 right=800 bottom=0 ! videoflip method=counterclockwise ! omxh264enc ! h264parse!  flvmux name=mux streamable=true ! rtmpsink sync=true async=true location='rtmp://XXXXXXXXXXXXXXXX' alsasrc device="hw:1,0" ! queue ! audioconvert ! audioresample ! audio/x-raw,rate=44100 ! queue ! voaacenc bitrate=128000 ! audio/mpeg ! aacparse ! audio/mpeg, mpegversion=4 ! mux.
0
mevlut topal On

I have kind of resolved Noise by following code. but still not so good.

"ffmpeg -ar 48000  -ac 1 -f alsa -i hw:1,0 -acodec aac -ab 128k -af 'highpass=f=200, lowpass=f=200' -f flv rtmp://XXXXX.XXXXXXX.XXXXX/LiveApp/"+ str(Id) + "-" + str(deviceId)+"-Audio"