我是gstreamer的新手,我想录制音频和视频,将其保存为.mp4格式,使用网络摄像头录制视频和使用MIC录制音频 这是我的管道
gst-launch-1.0 -e v4l2src!排队! x264enc! h264parse!排队! qtmux0。 alsasrc! 'audio / x-raw,rate = 44100,depth = 24'! audioconvert!听觉样本! voaacenc! aacparse! qtmux! filesink location = test.mp4
当我执行它时,视频只记录10秒钟,音频甚至没有录音,它给出了一些信息,如
警告:来自element / GstPipeline:pipeline0 / GstAlsaSrc:alsasrc0:无法足够快地录制音频 其他调试信息: gstaudiobasesrc.c(866):gst_audio_base_src_create():/ GstPipeline:pipeline0 / GstAlsaSrc:alsasrc0: 丢失了425565个样本。这很可能是因为下游无法跟上并且消耗样本的速度太慢。
帮助我提前通过这个谢谢你
答案 0 :(得分:1)
尝试使用以下管道将音频和视频记录到一个文件中。
gst-launch-1.0 -e v4l2src device="/dev/video0" ! videoconvert ! queue ! x264enc tune=zerolatency ! mux. alsasrc device="hw:2" ! queue ! audioconvert ! audioresample ! voaacenc ! aacparse ! qtmux name=mux ! filesink location=test.mp4 sync=false
答案 1 :(得分:0)
现在正在完成录制音频和视频的管道
这里是管道
gst-launch-1.0 -e v4l2src! 'video / x-raw,width = 960,height = 720,framerate = 30/1'!排队! x264enc tune = zerolatency! MUX。 alsasrc! audio / x-raw,width = 16,depth = 16,rate = 44100,channel = 1!排队! audioconvert!听觉样本! voaacenc! aacparse! qtmux name = mux! filesink location = test.mp4 sync = false
如果管道中仍有任何不正确的内容,请告诉我
答案 2 :(得分:0)
我最终使用了那个(改编自网络的随机回复,抱歉我丢失了来源)
raspivid -t 0 --vflip --hflip -w 1920 -h 1080 -fps 30 --bitrate 14000000 --profile baseline -3d sbs --intra 30 --inline --flush --awb auto --exposure auto --sharpness 0 --contrast -15 --digitalgain 0.0 -o - | gst-launch-1.0 -ve fdsrc num-buffers=-1 ! video/x-h264,width=1920,height=1080,framerate=30/1 ! h264parse ! queue ! smux.video alsasrc device=hw:2,0 ! audio/x-raw,format=S32LE,rate=48000,channel=2 ! audioconvert ! avenc_aac ! aacparse ! queue ! smux.audio_0 splitmuxsink name=smux location=video.mp4 muxer=mpegtsmux
请注意,它用于捕获立体图像,您可以删除“-3d sds”并为单个凸轮调整宽度。您还可以安全地删除仅对调试有用的 -ve,并将您的音频设备硬件更改为您的采集卡编号($ arecord -l
以找出您的卡的 ID)。
我更喜欢使用 qtmux,但由于 raspivid 制作的 h264 流中缺少 PTS 信息而失败。 mpegtsmux 很高兴。
截至目前,生成的 mpeg 已损坏一半,所有玩家都无法读取(quicktime 失败,而 vlc 很高兴)。使用 ffmpeg 重新编码:ffmpeg -vcodec mpeg4 -b:v 7561k -qscale:v 2 -acodec aac -ac 2 -async 1 -strict experimental ./video2.mp4 -threads 0 -i video.mp4
修复了文件。
希望这对某人有帮助。