我是gstreamer的新手,我想把音频和视频都保存成.mp4格式,用摄像头录制视频,用MIC录制音频--这是我的管道。
gst-启动-1.0 -e v4l2src!排队!x264enc!h264parse!排队!qtmux0。阿尔萨斯克!‘音频/x-原始,rate=44100,depth=24’!声音转换!声音很好!哇!啊哈!qtmux!文件墨迹location=test.mp4
当我执行它时,视频只录制了10秒--音频甚至没有录制,它给出了一些信息,比如
警告: from /Gst管道:管线0/GstAlsaSrc:alsasrc0 0:无法录制足够快的音频附加调试信息:gstaudobasesrc.c(866):gst_audio_base_src_create ():/gst管道:管道0/GstAlsaSrc:alsasrc0 0:丢弃425565样例。这很可能是因为下游无法跟上,而且消耗的样本太慢。
帮我度过这段时间谢谢
发布于 2020-11-11 07:02:04
尝试使用以下管道将音频和视频记录到一个文件中。
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发布于 2018-03-14 07:28:09
现在它已经把音视频录得很好了
在这里,管道
gst-启动-1.0 -e v4l2src!‘width=960 /x-raw,height=720,framerate=30/1’!排队!x264enc tune=zerolatency!穆克斯。阿尔萨斯克!width=16,depth=16,rate=44100,channel=1!排队!声音转换!声音很好!哇!啊哈!qtmux name=mux!文件墨迹location=test.mp4 sync=false
如果还有什么不正确的地方请告诉我。
发布于 2021-03-29 07:04:10
最后我使用了那个(改编自网络的随机响应,很抱歉我失去了来源)。
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,并将音频设备hw更改为捕获卡的编号($ arecord -l用于查找卡的id )。
我更喜欢使用qtmux,但由于在raspivid制作的h264流中缺少PTS信息,它失败了。mpegtsmux很高兴。
到目前为止,所产生的mpeg是半坏的,不能被所有的玩家读取(快速时间失败,而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修复了文件。
希望这对某人有帮助。
https://stackoverflow.com/questions/49270207
复制相似问题