有没有简单小巧的库或C++代码示例可以编写未压缩的AVI视频文件?
我找到的每个资源都使用Windows视频,而我需要它具有可移植性。
我尝试查看AVI容器文档,但看起来非常繁琐。
总是有OpenCV这个跨平台且相对容易将数据推送进去的选择。
或者 - 您始终可以将视频数据传输到另一个可执行文件中。
例如,在Unix中,您可以执行以下操作:
在您的程序中:
char myimage[640*480*4];
// read data into myimage
fputs(myimage,1,640*480*4,stdout);
在运行您的程序的脚本中:
./myprogram | \
mencoder /dev/stdin -demuxer rawvideo -rawvideo w=640:h=480:fps=30:format=rgba \
-ovc lavc -lavcopts vcodec=mpeg4:vbitrate=9000000 \
-oac copy -o output.avi
(请注意,这确实压缩了视频 - 未压缩只需更改mencoder命令行即可)
我相信您也可以以这种方式使用ffmpeg或x264。您还可以从程序内部启动编码器,并写入管道(使整个过程就像使用库一样简单)-并且这应该适用于Windows、Linux或Mac(对mencoder命令行进行微小修改)。
显然,除了分发mencoder可执行文件之外,没有任何许可问题,因为您不链接到任何代码或编译任何内容。
虽然不完全符合您的要求,但它具有一个优点,即自动使用第二个处理器进行编码。
我自己没有做过,但我建议使用libavformat
,它是ffmpeg
的一部分(LGPLv2.1/GPLv2+)。
system()
或类似的方式调用 ffmpeg
:ffmpeg -i picture_%04d.bmp -r 15 -vcodec rawvideo -y output.avi
-r
表示您希望最终电影的帧速率。