使用 ffmpeg 将多个 Mp4 视频重新映射为一个视频
Remapping multiple Mp4 videos into a single one with ffmpeg
我有兴趣根据我计算的查找表将多个 (6) MP4 视频重新映射为高分辨率的最终视频。这个想法是根据等距柱状投影将 6 个独立视频转换为 360º 视频。
Example of equirectangular video here
有没有办法用 ffmpeg 或任何其他 linux 程序进行重新映射?
现在我正在从视频中提取所有帧,创建等矩形的单个图像并将它们再次加入视频中。必须有更好的方法...
更新:
根据 Mulyva 的建议,我首先使用重新映射过滤器重新映射每个单独的视频。未覆盖的全景视频的那些部分被解释为色度像素使用:
ffmpeg -i videos/camera1.MP4 -i camera0_map_x_radius5.pgm -i camera0_map_y_radius5.pgm -lavfi remap -qscale 1 out0.MP4
然后我尝试使用 chomakey 过滤器覆盖它们:
ffmpeg -i out0.MP4 -i out1.MP4 -filter_complex "[1:v]chromakey=0x12da11:0.2:0.2[chromakey_res];[0:v][chromakey_res]overlay=eof_action=pass[out]" -map "[out]" out.mp4
如您所见,最终结果有一个不受欢迎的绿色阴影。知道如何删除它吗?
#1 生成个人视频。
ffmpeg -i camera0.mp4 -i camera0_map_x_radius5.pgm -i camera0_map_y_radius5.pgm
-filter_complex "color=white:2704x2028[c];[0]format=rgb24,split[vm][va];
[va][c]overlay=shortest=1:format=rgb[ac];
[vm][1][2]remap[m];
[ac][1][2]remap[a];
[m][a]alphamerge"
-c:v qtrle c0.mov
这将创建一个重新映射的视频,其中包含对齐的 alpha 通道。
#2 叠加重新映射的视频
ffmpeg -i c0.Mov -i c1.Mov -i c2.mov -i c3.mov -i c4.mov -i c5.mov
-filter_complex
"[0][1]overlay=eof_action=pass[a];
[a][2]overlay=eof_action=pass[b];
[b][3]overlay=eof_action=pass[c];
[c][4]overlay=eof_action=pass[d];
[d][5]overlay=eof_action=pass" out.mp4
(如果处理速度慢,可能需要fifo过滤器)
我有兴趣根据我计算的查找表将多个 (6) MP4 视频重新映射为高分辨率的最终视频。这个想法是根据等距柱状投影将 6 个独立视频转换为 360º 视频。
有没有办法用 ffmpeg 或任何其他 linux 程序进行重新映射? 现在我正在从视频中提取所有帧,创建等矩形的单个图像并将它们再次加入视频中。必须有更好的方法...
更新:
根据 Mulyva 的建议,我首先使用重新映射过滤器重新映射每个单独的视频。未覆盖的全景视频的那些部分被解释为色度像素使用:
ffmpeg -i videos/camera1.MP4 -i camera0_map_x_radius5.pgm -i camera0_map_y_radius5.pgm -lavfi remap -qscale 1 out0.MP4
然后我尝试使用 chomakey 过滤器覆盖它们:
ffmpeg -i out0.MP4 -i out1.MP4 -filter_complex "[1:v]chromakey=0x12da11:0.2:0.2[chromakey_res];[0:v][chromakey_res]overlay=eof_action=pass[out]" -map "[out]" out.mp4
如您所见,最终结果有一个不受欢迎的绿色阴影。知道如何删除它吗?
#1 生成个人视频。
ffmpeg -i camera0.mp4 -i camera0_map_x_radius5.pgm -i camera0_map_y_radius5.pgm
-filter_complex "color=white:2704x2028[c];[0]format=rgb24,split[vm][va];
[va][c]overlay=shortest=1:format=rgb[ac];
[vm][1][2]remap[m];
[ac][1][2]remap[a];
[m][a]alphamerge"
-c:v qtrle c0.mov
这将创建一个重新映射的视频,其中包含对齐的 alpha 通道。
#2 叠加重新映射的视频
ffmpeg -i c0.Mov -i c1.Mov -i c2.mov -i c3.mov -i c4.mov -i c5.mov
-filter_complex
"[0][1]overlay=eof_action=pass[a];
[a][2]overlay=eof_action=pass[b];
[b][3]overlay=eof_action=pass[c];
[c][4]overlay=eof_action=pass[d];
[d][5]overlay=eof_action=pass" out.mp4
(如果处理速度慢,可能需要fifo过滤器)