有没有什么简单小巧的库或者代码示例可以用c++编写未压缩的avi视频文件?
我找到的每个资源都使用windows的视频,我需要它是可移植的。
我试着看了AVI容器文档,但它看起来真的很麻烦。
发布于 2011-10-04 08:29:19
我自己没有做过,但我建议使用ffmpeg (LGPLv2.1/GPLv2+)中的libavformat。
发布于 2011-10-04 10:37:56
如果您想要超级简单的东西,那么将BMP作为编号序列写入磁盘,然后通过system()或类似如下所示的方式调用ffmpeg:
ffmpeg -i picture_%04d.bmp -r 15 -vcodec rawvideo -y output.avi注意:-r参数表示您希望最终电影的帧率。
您可以通过调用ffmpeg所基于的libavformat/libavcodec库来获得相同的结果,但这可能不符合您的“小”和“简单”要求。
发布于 2012-03-22 16:33:21
总是有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可执行文件的分发),因为您没有链接到任何代码,也没有在中编译任何内容。
虽然不完全是你想要的,但它确实有一个好处,那就是第二个处理器将自动用于编码。
https://stackoverflow.com/questions/7642099
复制相似问题