如何使用jpeg框架制作.avi,.mp4文件?

时间:2012-03-25 16:00:46

标签: c++ bash ffmpeg ip-camera

我正在使用IP摄像头,我从摄像头获得了Jpeg帧和音频数据(PCM)。

现在,我想从上面的数据创建.avi或.mp4格式的视频文件(音频和视频)。

我搜索过,我知道ffmpeg库可以做到。但我不知道如何使用ffmpeg来做到这一点。

你能建议我一些示例代码或ffmpeg的功能吗?

1 个答案:

答案 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秒一帧。

这里可能存在的问题是:

  • 除非您事先仔细计算所需的帧速率,否则您的音频/视频可能会略微不同步。你应该能够使用ffmpeg和一些grep魔法获得音频(或视频)的长度。即便如此,同步可能是较长剪辑的问题。
  • 如果您的图片超过999张%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.