Audio gstreamer将音频和视频编码为avi文件

Audio gstreamer将音频和视频编码为avi文件,audio,video,gstreamer,h.264,avi,Audio,Video,Gstreamer,H.264,Avi,我正在尝试使用gstreamer将h264视频和音频编码到一个.avi文件中。 我可以使用此选项对音频或视频进行编码: gst-launch-1.0 appsrc name=appsrc ! deinterlace name=deinterlace ! mfxh264enc name=mfxh264enc ! avimux name=mux ! filesink name=filesink location=test.avi 这是音频: gst-launch-1.0 alsasrc ! qu

我正在尝试使用gstreamer将h264视频和音频编码到一个.avi文件中。 我可以使用此选项对音频或视频进行编码:

gst-launch-1.0 appsrc name=appsrc ! deinterlace name=deinterlace ! mfxh264enc name=mfxh264enc ! avimux name=mux ! filesink name=filesink  location=test.avi
这是音频:

gst-launch-1.0 alsasrc ! queue ! audioconvert ! vorbisenc ! oggmux ! filesink location=audioTestQueue.mp3
我试图根据示例将它们与此管道结合起来:

gst-launch-1.0 appsrc name=appsrc ! deinterlace name=deinterlace ! mfxh264enc name=mfxh264enc ! queue name=queue1 ! mux. alsasrc name=alsasrc ! audioconvert name=audioconvert ! vorbisenc name=vorbisenc ! queue name=queue2 ! mux. avimux name=mux ! filesink name=filesink  location=test.avi
这将返回一个错误:“无法将队列2链接到mux”

我知道这个例子是使用lame来编码的,但我宁愿不使用它,因为当gstremer 说:“请注意,MP3不是免费格式,需要考虑许可和专利问题。有关免版税(通常更高质量)的替代方案,请参阅Ogg/Vorbis。”

我做错了什么

编辑:
似乎在将声音设置为audiotestsrc并禁用音频编码gstreamer时,会创建.avi文件,我可以在VLC中播放它:

gst-launch-1.0 appsrc name=appsrc1 ! deinterlace name=deinterlace1 ! mfxh264enc name=mfxh264enc1 ! queue name=queue11 ! mux. audiotestsrc name=alsasrc1 ! audioconvert name=audioconvert1 ! queue name=queue31 ! mux. avimux name=mux ! filesink name=filesink1 location=test.avi
但尝试对alsasrc执行相同操作会使avi文件仅保存音频数据而不保存视频:

gst-launch-1.0 appsrc name=appsrc1 ! deinterlace name=deinterlace1 ! mfxh264enc name=mfxh264enc1 ! queue name=queue11 ! mux. alsasrc name=alsasrc1 ! audioconvert name=audioconvert1 ! queue name=queue31 ! mux. avimux name=mux ! filesink name=filesink1 location=/home/user/Downloads/HDTest1.avi

在深入研究Gstreamer文档后,我发现: 其中列出了所有可用的编码器

再次检查时,我看到它可以接收音频/x-alaw格式的数据。 有了这个事实,我可以使用属于gst插件的,而不是好的

因此,我的最终管道如下所示:

gst-launch-1.0 alsasrc name=pulsesrc1 ! audioconvert name=audioconvert1 ! alawenc name=alawenc1 ! queue name=aud1 ! mux. appsrc name=appsrc1 ! deinterlace name=deinterlace1 ! mfxh264enc name=mfxh264enc1 ! mux. avimux name=mux ! filesink name=filesink1 location=HDTest1.avi

在深入研究Gstreamer文档后,我发现: 其中列出了所有可用的编码器

再次检查时,我看到它可以接收音频/x-alaw格式的数据。 有了这个事实,我可以使用属于gst插件的,而不是好的

因此,我的最终管道如下所示:

gst-launch-1.0 alsasrc name=pulsesrc1 ! audioconvert name=audioconvert1 ! alawenc name=alawenc1 ! queue name=aud1 ! mux. appsrc name=appsrc1 ! deinterlace name=deinterlace1 ! mfxh264enc name=mfxh264enc1 ! mux. avimux name=mux ! filesink name=filesink1 location=HDTest1.avi