我目前正在写,从相机读取帧的应用程序,修改它们,并将它们保存为一个视频文件。 我刨的有关ffmpeg做。 有很少是关于ffmpeg的文档。 我不能找到一种方法。 请问哪位知道怎么办呢?
我需要的是在UNIX上完成,并在C或C ++。 有哪位能提供一些指导?
谢谢。
编辑:
对不起,我没有写清楚。 我想一些开发人员API写帧的视频文件。 我打开摄像头流,我得到的每一个帧,然后我把它们保存到与FFmpeg的公共API提供这些API的视频文件。 因此,使用命令行工具实际上没有帮助我。 而且我ffmpeg的src文件夹下看到output_example.c。 这是非常伟大的,我可以直接复制代码的某些部分没有变化。 我仍然在寻找一个更简单的方法。
另外,我想我的移植应用的iPhone,据我所知,只有ffmpeg的已被移植在iPhone上的。 GStreamer是基于油腔滑调,和它的所有GNU的东西。 我不知道如果我能得到它在iPhone上运行。 所以ffmpeg的仍然是最好的选择现在。
任何意见表示赞赏。
这可能会帮助您开始 - 文档是可用的,但新功能往往在FFmpeg的手册页被记录在案。
帧需要被顺序编号。
ffmpeg -f image2 -r 25 -i frame_%d.jpg -vcodec libx264 -vpre hq -crf 22 video.mp4
-
-f
定义格式 -
-r
定义了帧速率 -
-i
定义了输入文件/ s的... %d
指定编号的文件..加0的指定填充 -
-vcodec
选择视频编解码器 -
-vpre
指定使用预设称为HQ的 -
-crf
指定的速率控制方法,用于限定的x264流如何编码 -
video.mp4
是输出文件
如果其他解决方案比ffmpeg的是你是可行的,你可能想看看GStreamer的 。 我认为,这可能只是正确的事情你的情况,并有相当一些文件在那里。
你可以做你需要什么,而无需使用库,在UNIX中,你可以管RGBA数据到一个程序,所以你可以这样做:
在你的程序:
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
我相信你也可以使用的ffmpeg这种方式,或X264。 您也可以从你的程序中启动编码器,并写入到管道(使得整个过程简单,如果你使用的是库)。
虽然不太你想要什么,不适合iPhone的发展,但它的优势在于Unix的将自动使用第二个处理器的编码。