我可以使用下面的 gstreamer 命令一起录制视频和音频。
gst-launch-1.0 -e qtiqmmfsrc camera=1 name=qmmf ! video/x-raw,format=NV12,width=1920,height=1080,framerate=20/1 ! qtic2venc ! h264parse ! queue ! mux. alsasrc device=hw:0,0 buffer-time=50000 ! queue ! audioconvert ! audioresample ! avenc_aac ! aacparse ! queue ! mpegtsmux name=mux ! filesink location=/data/Pratik/test.mp4
Muxer 将用于将视频和音频数据组合在一起并将其存储在文件中。但是如何在c gstreamer代码中转换命令逻辑呢? 您能给我提供一个可以将音频和视频一起录制在一个文件中的示例 C 代码吗?
这是将两个源混合在一起的通用方法:只需将它们与混合器连接起来:
gst_element_link(video_source, muxer);
gst_element_link(audio_source, muxer);
gst_element_link(muxer, sink);
在您的情况下,video_source是qtiqmmfsrc,audio_source是alsasrc,muxer是mpegtsmux,sink是filesink。
要一次链接多个元素(例如您的转换器),您可以使用
gst_element_link_many
不要忘记首先将这些元素添加到管道中。
如果您需要帮助实例化这些元素或将管道设置为播放状态,请告诉我。
无论如何,gstreamer 教程都是在 c 中开始使用 gstreamer 的一个非常好的起点。例如教程 7,它完成了与您想要做的相反的事情。