2016-05-13 55 views
1

我正在尝试使用FFMPEG做一个“剖面图”(更改摄像机角度)。我有来自左侧相机和右侧相机的HLS视频。开始时间有点不同步,因此在右侧视频开始录制后,左侧视频实际上开始录制4.21秒。我试图展示从开始到5秒标记的正确视频,然后从0.79秒标记切换到左侧视频直到5.79秒标记(这将是右侧相机上的5-10秒范围)。如何使用FFMPEG进行音频交叉淡入淡出处理?

我意识到这些切割可能落在p-帧 - 这是这里的测试的一部分。我想看看FFMPEG是否会正确插入必要的i帧来平滑切割。

最后,为了获得平滑的最终产品,我试图在转换过程中进行1秒的音频交叉淡入淡出(不需要任何视频淡入淡出)。

我是FFMPEG的新手。我尝试了以下,但它没有奏效。任何人都知道什么是正确的命令?

ffmpeg -i right.m3u8 -ss 0 -t 5 -i left.m3u8 -ss 0.79 -t 5 -async 1 -filter_complex acrossfade=d=1:c1=exp:c2=exp mixed.m3u8 

回答

0

明白了它与Mulvya的答案几个小调整工作。您需要为第二个文件指定一个setset以确保它从-0.5秒开始(-22050个采样)。此外,我需要摆脱这些曲线,并让它在麻烦的一面做线性曲线,以便通过转换来保持恒定的音量。

ffmpeg -i right.m3u8 -i left.m3u8 -filter_complex 
    "[0]trim=duration=5,setpts=PTS-STARTPTS[vr]; 
    [1]trim=0.79:duration=5,setpts=PTS-STARTPTS[vl]; 
    [0]atrim=duration=5.5,asetpts=PTS-STARTPTS[ar]; 
    [1]atrim=0.29:duration=5.5,asetpts=(PTS-STARTPTS - 22050)[al]; 
    [ar][al]acrossfade=d=1[a]; 
    [vr][vl]concat=n=2[v]" -map "[v]" -map "[a]" mixed.m3u8 
0

如果视频不重叠,音频流也不会交叉淡入淡出。所以,在这种情况下,我们必须使用不同的修剪滤镜来完成这项工作。

ffmpeg -i right.m3u8 -i left.m3u8 -filter_complex \ 
     "[0]trim=duration=5,setpts=PTS-STARTPTS[vr]; \ 
     [1]trim=0.79:duration=5,setpts=PTS-STARTPTS[vl]; \ 
     [0]atrim=duration=6,asetpts=PTS-STARTPTS[ar]; \ 
     [1]atrim=0.79:duration=5,asetpts=PTS-STARTPTS[al]; \ 
     [ar][al]acrossfade=d=1:c1=exp:c2=exp[a]; \ 
     [vr][vl]concat=n=2[v]" -map "[v]" -map "[a]" mixed.m3u8 
+0

只是为了澄清,视频DO重叠。此测试的左侧相机在右侧相机记录后面4.21秒。但是来自这些标记的两个视频已同步。 (我目前无法尝试你的命令。) – jreikes

+0

我的意思是,时间线范式。您希望从一个视频切换到另一个视频,但音段不重叠,因此音频也不会重叠。 – Mulvya

+0

好的,现在我按照你的意思。是的,如果在整个淡入淡出期间从两个文件中提取音频,音频只能淡入淡出。澄清虽然,这是在这里的情况。第一个视频在切割点后延伸约15秒。第二个视频在剪辑前0.79秒开始。交叉渐变持续时间为1秒,所以视频剪切点两侧只需要半秒的音频。除非我误解了某些东西。 – jreikes