Video 使用ffmpeg将多个Mp4视频重新映射为单个视频

Video 使用ffmpeg将多个Mp4视频重新映射为单个视频,video,ffmpeg,mp4,avconv,Video,Ffmpeg,Mp4,Avconv,我对根据我计算的查找表将多(6)个MP4视频重新映射为高分辨率最终视频感兴趣。其想法是根据等矩形投影,在360º视频中转换6个独立视频 有没有办法用ffmpeg或任何其他linux程序重新映射? 现在我正在从视频中提取所有帧,创建等矩形的单独图像,并将它们再次连接到视频中。一定有更好的办法 更新: 根据Mulyva的建议,我首先使用重新映射过滤器重新映射每个单独的视频。全景视频中未涵盖的部分被解释为chromakey像素,使用: ffmpeg -i videos/camera1.MP4 -i

我对根据我计算的查找表将多(6)个MP4视频重新映射为高分辨率最终视频感兴趣。其想法是根据等矩形投影,在360º视频中转换6个独立视频

有没有办法用ffmpeg或任何其他linux程序重新映射? 现在我正在从视频中提取所有帧,创建等矩形的单独图像,并将它们再次连接到视频中。一定有更好的办法

更新:

根据Mulyva的建议,我首先使用重新映射过滤器重新映射每个单独的视频。全景视频中未涵盖的部分被解释为chromakey像素,使用:

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

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

您查看过过滤器吗?是的,它部分满足了我的要求,因为我有多个输入文件而不是一个输入文件。。。也许我可以生成多个输出视频,然后尝试覆盖它们,但我需要为每个视频指定“透明”区域,我不知道如何操作。您可以使用
geq
过滤器将
0
alpha分配给黑色边框区域,并将
1
分配给其他地方。喜欢根据重新映射筛选器的处理速度,您可以在一个命令中对多个重新映射实例执行此操作。绿色是由于筛选器导致的,还是源视频中的?我建议采用geq路线。我得到的结果与您建议的方法相同。绿色是由于重新映射过滤器造成的。根据x/y贴图,它将超出原始图像边界的像素设置为“绿色”,我看不到将其设置为黑色的选项。根据wiki,“ymap或xmap中任何高于源帧高度或宽度的数据值都会被默默忽略,留下一个空白/彩色像素。这可以安全地用作创建覆盖的功能。”这可能是由于压缩伪影造成的。你看过过滤器了吗?是的,它做了我想要的部分原因是我有多个输入文件而不是一个。。。也许我可以生成多个输出视频,然后尝试覆盖它们,但我需要为每个视频指定“透明”区域,我不知道如何操作。您可以使用
geq
过滤器将
0
alpha分配给黑色边框区域,并将
1
分配给其他地方。喜欢根据重新映射筛选器的处理速度,您可以在一个命令中对多个重新映射实例执行此操作。绿色是由于筛选器导致的,还是源视频中的?我建议采用geq路线。我得到的结果与您建议的方法相同。绿色是由于重新映射过滤器造成的。根据x/y贴图,它将超出原始图像边界的像素设置为“绿色”,我看不到将其设置为黑色的选项。根据wiki,“ymap或xmap中任何高于源帧高度或宽度的数据值都会被默默忽略,留下一个空白/彩色像素。这可以安全地用作创建覆盖的功能。”这可能是由于压缩瑕疵造成的?太棒了。这正是我所需要的,结果是完美的。非常感谢你的帮助。这正是我所需要的,结果是完美的。非常感谢你的帮助