视频音频合并
视频音频合并,以视频时间为主,音频短了循环
方法1:混音,视频权重0,volume调节音量,aloop无限循环,duration:first为第一个素材的长度
ffmpeg -i video.mp4 -i audio.mp3 -filter_complex "[1:a]volume=0.5[a1];[a1]aloop=loop=-1:size=2e+09[a2];[0:a][a2]amix=inputs=2:duration=first:weights='0 1'[a]" -map 0:v -map "[a]" out.mp4
有的音频:first不起作用,需要-t截止时间
方法2:替换音频
ffmpeg -an -i video.mp4 -stream_loop -1 -i audio.mp3 -af volume=0.5 -shortest -fflags +shortest -y out.mp4
有的音频shortest不管用,需要-t截止时间
合并视频的时候加字幕
ffmpeg -i /video/0.ts -i /video/4.ts -filter_complex "[0:v:0][0:a:0][1:v:0][1:a:0]concat=n=2:v=1:a=1[v][outa];[outv]drawtext=text='字幕Text':fontcolor=#ffffff:fontsize=192:fontfile=/conf/msyhbd.ttc:x=(w-text_w)/2:y=(h-text_h)/1.5:enable='between(t\,0\,1)'[dv]" -map [dv] -map [outa] -vsync 2 -y out.mp4
视频合并,有的视频没有音频,找到没有音频的视频,用虚拟音频,concat=n=的数量不包括虚拟音频
./ffmpeg -i /video/0.mp4 -i /video/1.mp4 -i /video/无音频视频.mp4 -f lavfi -t 0.1 -i anullsrc -filter_complex "[0:v:0][0:a:0][1:v:0][1:a:0][2:v:0][3:a]concat=n=3:v=1:a=1[outv][outa]" -map [outv] -map [outa] -vsync 2 -y out.mp4
切割视频
按关键帧切割视频
ffmpeg.exe -i video.m4v -c copy -f segment -reset_timestamps 1 video\output-%d.mp4
按帧切割视频
./ffmpeg -i ./video/video.m4v -vf "select=between(n\,0\,52),setpts=N/FRAME_RATE/TB" -af "aselect='between(n\,0\,52)',asetpts=N/SR/TB" -y ./video/output.mp4
./ffmpeg -i ./video/video.m4v -vf "trim=start_frame=0:end_frame=52+1,setpts=PTS-STARTPTS" -an -y ./video/output1.mp4
音频渐入渐出
音频音量+渐入渐出,st起始时间,d持续时间
ffmpeg -an -i video.m4v -stream_loop -1 -i 3m.mp3 -filter_complex [1:a]volume=0.5[a1];[a1]afade=t=in:st=0:d=3,afade=t=out:st=29:d=3 -t 32 -vcodec copy -y out.mp4