是否有任何简单的小型库或代码示例可以用c ++编写未压缩的avi视频文件?
我找到的每个资源都使用视频用于Windows,我需要它是可移植的。
我尝试查看AVI容器文档,但看起来非常麻烦。
答案 0 :(得分:0)
我自己没有这样做,但我建议使用libavformat
,ffmpeg
(LGPLv2.1 / GPLv2 +)的一部分。
答案 1 :(得分:0)
如果你想要一些超级简单的东西,那么将BMP作为编号序列写入磁盘,然后通过ffmpeg
或类似的东西调用system()
:
ffmpeg -i picture_%04d.bmp -r 15 -vcodec rawvideo -y output.avi
注意:-r
参数表示您希望最终电影的帧速率。
您可以通过调用ffmpeg所基于的libavformat / libavcodec库来获得相同的结果,但这可能不符合您的“小”和“简单”要求。
答案 2 :(得分:0)
总是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可执行文件之外,没有许可问题,因为您没有链接到任何代码或编译任何代码。
虽然不是您想要的,但它确实具有第二个处理器将自动用于编码的优势。