如何使用FFMPEG进行音频交叉淡入淡出的切除?

时间:2016-05-13 02:59:21

标签: ffmpeg

我正在尝试使用FFMPEG进行“剖视”(更改摄像机角度)。我有左摄像头和右摄像头的HLS视频。开始时间有点不同步,因此左视频实际上在右视频开始录制后4.21秒开始录制。我试图从开始到5秒标记显示正确的视频,然后从0.79秒标记切换到左视频,直到5.79秒标记(这将是右镜头的5-10秒范围) )。

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

最后,为了获得平滑的最终产品,我试图在过渡期间进行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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

通过对Mulvya的回答进行一些小调整。您需要为第二个文件指定asetpts,以确保它从-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