我正在使用IP摄像头,我从摄像头获得了Jpeg帧和音频数据(PCM)。
现在,我想从上面的数据创建.avi或.mp4格式的视频文件(音频和视频)。
我搜索过,我知道ffmpeg库可以做到。但我不知道如何使用ffmpeg来做到这一点。
你能建议我一些示例代码或ffmpeg的功能吗?
答案 0 :(得分:1)
如果您的目标是编写一个c ++应用程序来为您执行此操作,请忽略此答案,我将其留在此处以供将来参考。如果没有,这就是你如何在bash中做到这一点:
首先,确保您的图像格式正确,ffmpeg易于处理。您可以将图像复制到其他目录:
mkdir tmp
x=1; for i in *jpg; do counter=$(printf %03d $x); cp "$i" tmp/img"$counter".jpg; x=$(($x+1)); done
将音频数据复制到tmp目录并对视频进行编码。假设您的相机每十秒拍一张照片:
cd tmp
ffmpeg -i audio.wav -f image2 -i img%03d.jpg -vcodec msmpeg4v2 -r 0.1 -intra out.avi
其中-r 0.1
表示帧速率为0.1,即每10秒一帧。
这里可能存在的问题是:
grep
魔法获得音频(或视频)的长度。即便如此,同步可能是较长剪辑的问题。%03d
格式不够,请务必将3
更改为所需的索引长度视频将从较长的流继承其长度,您可以使用-t
开关限制它:
-t duration
- Restrict the transcoded/captured video sequence to the duration specified in seconds. "hh:mm:ss[.xxx]" syntax is also supported.