用于h264流的Gstreamer多路原始音频和视频



我有一个运行Linux的嵌入式设备。它有一个图像传感器和一个麦克风,我用GStreamer来处理输入数据。下面的工作将视频转换为H.264,音频转换为AAC,并将结果保存在MP4文件中:

gst-launch-1.0 -v v4l2src 
! video/x-raw,width=2560,height=720,framerate=30/1,format=GRAY8 
! queue 
! videocrop right=1280 
! videoconvert 
! vpuenc_h264 
! h264parse 
! mpegtsmux name=mux 
! filesink location=/run/media/mmcblk2p4/test.mp4 sync=false async=false 
alsasrc device="hw:0,0" 
! audio/x-raw,format=S16LE,rate=22050,channels=1 
! queue 
! audioconvert 
! avenc_aac 
! mux.

硬件的原生视频是双宽720p (2560x720),我将其裁剪为1280x720。vpuenc_h264是我的SoC硬件H.264编码器。

但是我希望能够流式传输多路音频和视频。

我可以这样成功地播放视频:

gst-launch-1.0 -v v4l2src 
! video/x-raw,width=2560,height=720,framerate=30/1,format=GRAY8 
! videocrop left=0 right=1280 
! videoconvert 
! vpuenc_h264 
! h264parse 
! rtph264pay 
! udpsink host=192.168.5.2 port=5000 sync=false async=false

有没有人知道一个好方法来流的多路音频和视频?

mpegtsmuxrtph264pay不相容。这并不奇怪。但我不熟悉无数的GST插件,我可能可以使用代替。是否有与rtph264pay兼容的不同的mux ?

此外,是否有任何方法来混合音频和视频的方式,结果既可以流和保存到一个文件(例如使用tee元素)?我认为如果我需要执行两个不同的互斥,这将是相当浪费的,尽管我肯定会这样做,如果我必须。

您可以通过UDP直接从mpegtsmux发送结果。不需要将其封装到RTP中。但是如果你想把它封装到RTP中,你应该使用rtpmp2tpay

最新更新