带有视频的FFMPEG重新映射

时间:2018-11-18 04:31:17

标签: video ffmpeg

我正在尝试使用FFMPEG Remap过滤器将圆形鱼眼视频转换为等角矩形。为此,我使用FFMPEG文档的“重新映射”页面中记录的投影脚本来生成相机的地图文件。

我的问题是这个
我可以成功处理静止图像,但是尝试输出视频时,只会出现黑框。

原始 Original Image

已转换 Converted Image




基于此链接:
Is there a fisheye or dual fisheye to equirectangular filter for ffmpeg?

我相信我需要在过滤器文件之前使用-loop参数,以将图像数据作为框架进行处理,但是当我尝试执行此操作时,出现错误:

    failed to reallocate parser buffer



我的问题是:

任何人都可以提供有关如何在视频文件上正确使用FFMPEG重映射的指南吗?

这是我正在使用的当前命令(除非我删除-loop参数,否则它将不起作用)

    ffmpeg -i short.mp4 -loop 1 -i xfly.pgm -loop 1 -i yfly.pgm -filter_complex remap -c:v libx264 -c:a copy out.mp4

[编辑]更新

经过进一步研究,-loop选项应该在输入文件之前,而不是在输入图像地图之前……

    FFMPEG -loop 1 -i file.mp4 -i x.pgm -i y.pgm -filter_complex remap out.mp4

但是现在我得到了:

    Option loop not found

-循环似乎仅受某些图像扩展名支持

2 个答案:

答案 0 :(得分:1)

使用

ffmpeg -i file.mp4 -i x.pgm -i y.pgm -filter_complex remap,format=yuv444p,format=yuv420p out.mp4

重新映射过滤器仅输出完全采样的色度,而不输出subsampled格式,并且大多数播放器仅播放4:2:0子采样的视频,因此必须插入格式过滤器以转换为可接受的格式。

这里的问题与循环播放视频或地图无关。重新映射将为视频的所有帧重用静态非循环映射。

答案 1 :(得分:0)

FFMPEG 的最新版本现在实现了 V360 过滤器:

ffmpeg -i input.jpg -vf v360:fisheye:equirectangular:ih_fov=180:iv_fov=180:pitch=0 -y output.jpg
  • -i 输入文件
  • -vf 视频过滤器
    • v360:VR360 全景转换
      • 鱼眼:源格式
      • 等距矩形:目标格式
      • ih_fov:输入水平视野
      • iv_fov:输入verticalFOV
      • pitch:相机向上/向下方向
  • -y 覆盖
  • 输出文件

可能不是很精确,因为它是“通用的”,但至少它很容易使用。