使用ffmpeg将多个Mp4视频重新映射到一个视频

时间:2016-05-25 08:20:02

标签: video ffmpeg mp4 avconv

我有兴趣根据我计算的查找表将多个(6)MP4视频重新映射到高分辨率的最终视频中。这个想法是根据一个equirectangular投影转换360º视频中的6个独立视频。

Equirectangular image example Example of equirectangular video here

有没有办法用ffmpeg或任何其他Linux程序重新映射? 现在我正在从视频中提取所有帧,创建equirectangular单个图像并再次将它们连接到视频中。必须有一个更好的方法......

更新

根据Mulyva的建议,我首先使用重映射过滤器重新映射每个单独的视频。未覆盖的全景视频的那些部分使用以下内容解释为色度键像素:

ffmpeg -i videos/camera1.MP4 -i camera0_map_x_radius5.pgm -i camera0_map_y_radius5.pgm -lavfi remap -qscale 1 out0.MP4

Camera0

Camera1

然后我尝试使用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

如您所见,最终结果有一个不受欢迎的绿色阴影。知道如何删除它?

Result

1 个答案:

答案 0 :(得分:5)

#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过滤器)