unix - 如何将帧写入视频文件?

标签 unix video ffmpeg video-streaming avi

我目前正在编写一个应用程序,用于从相机读取帧、修改它们并将它们保存到视频文件中。我打算用 ffmpeg 来做。很少有关于 ffmpeg 的文档。我找不到办法。有人知道怎么做吗?

我需要它在 unix、C 或 C++ 中完成。有没有人可以提供一些说明?

谢谢。

编辑:

对不起,我没写清楚。我想要一些开发人员 API 将帧写入视频文件。我打开相机流,获取每一帧,然后使用 ffmpeg 的公共(public) api 中可用的 API 将它们保存到视频文件中。所以使用命令行工具实际上对我没有帮助。我在 ffmpeg src 文件夹下看到了 output_example.c。我可以直接复制部分代码而不做任何更改,这真是太好了。我仍在寻找更简单的方法。

此外,我正在考虑将我的应用程序移植到 iPhone,据我所知,只有 ffmpeg 已移植到 iPhone。 GStreamer 基于 glib,而且都是 GNU 的东西。我不确定我是否可以在 iPhone 上使用它。所以ffmpeg目前仍然是最好的选择。

任何意见表示赞赏。

最佳答案

这可能有助于您入门 - 文档可用,但较新的功能往往记录在 ffmpeg 的手册页中。

帧需要按顺序编号。

ffmpeg -f image2 -framerate 25 -i frame_%d.jpg -c:v libx264 -crf 22 video.mp4
  • -f定义格式
  • -framerate 定义帧率
  • -i 定义输入文件 ... %d 指定编号文件 .. 添加 0 指定填充,例如%05d 用于零填充的五位数。
  • -vcodec 选择视频编解码器
  • -crf 指定码率控制方式,用于定义x264码流如何 编码
  • video.mp4为输出文件

有关详细信息,请参阅 Slideshow guide .

关于unix - 如何将帧写入视频文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1299196/

相关文章:

linux - 如何使用 awk 在输入文件的最后一行之后插入新记录(行或行)?

linux - 导出此代码的 shell 变量输出

c - FFmpeg - pts 和 dts 对于视频没有正确增加,但对于音频则正确

ffmpeg - 实时转码和流媒体

video - FFMPEG + h264_qsv = 视频底部的绿线

python - Python2/3 中的 time.clock() 和 time.time() 分辨率

bash - 像 `ip` 这样的工具的输出是要被解析的吗?

macos - 如何检测视频是否在 Mac 上运行?

c++ - 如何使用 VideoWriter 从 OpenCV 打开 GStreamer 管道

image - 如何从视频中获取图像并使用 ffmpeg 组合其他图像