ffmpeg -re -i input1.mp4 -i input2.mp4 -i input3.mp4 -i input4.mp4\-filter_complex “nullsrc=size=640×480 [base];\[0:v] setpts=PTS-STARTPTS,scale=320×240 [upperleft]; \[1:v] setpts=PTS-STARTPTS,scale=320×240 [upperright]; \[2:v] setpts=PTS-STARTPTS,scale=320×240 [lowerleft];\[3:v] setpts=PTS-STARTPTS,scale=320×240 [lowerright]; \[base][upperleft] overlay=shortest=1[tmp1];\[tmp1][upperright] overlay=shortest=1:x=320 [tmp2]; \[tmp2][lowerleft]overlay=shortest=1:y=240 [tmp3];\[tmp3][lowerright] overlay=shortest=1:x=320:y=240” \-f mp4 -y $(date +%Y%m%d)_output-re_$(date +%H%M%S).mp4 input1.mp4 input2.mp4 input3.mp4 input4.mp4 20251103_output-re_172154.mp4
Day: November 3, 2025
ffmpeg_watermarker
#ffmpeg -i 20251018_1519.mp4 -vf crop=900:900:0:10 -f mp4 20251018_1519_0.mp4 #ffmpeg -i 20251018_1519.mp4 -vf crop=640:480:950:50 -an -f mp4 20251018_1519_1.mp4 #左上角 #ffmpeg -i test.mp4 -i logo.png -filter_complex overlay test-overlay.mp4 #右上角 #ffmpeg -i test.mp4 -i logo.png -filter_complex overlay=W-w test-overlay.mp4 #左下角 #ffmpeg -i test.mp4 -i logo.png -filter_complex overlay=0:H-h test-overlay.mp4 #右下角 #ffmpeg -i test.mp4 -i logo.png -filter_complex overlay=W-w:H-h test-overlay.mp4 #ffplay -i… Continue reading ffmpeg_watermarker
ffmpeg_mp4_bash
#!/bin/bash DATE=$(date +”%Y-%m-%d_”) TIME=$(date +”_%H-%M-%S”) ffmpeg -f concat -safe 0 -i file_mp4 -c:v copy -c:a copy -f mp4 ${DATE}output${TIME}.mp4 DATE=$(date +”%Y-%m-%d_”) TIME=$(date +”_%H-%M-%S”) ffmpeg -f concat -safe 0 -i file_mp3 -c:v copy -c:a copy -f mp4 ${DATE}output${TIME}.mp3 DATE=$(date +”%Y-%m-%d_”) TIME=$(date +”_%H-%M-%S”) ffmpeg -i input.mp4 -f lavfi -i color=#FFFFFF:size=400×400 -vf drawtext=fontfile=msyh.ttf:textfile=text:fontcolor=#FFFFFF:fontsize=30:borderw=1:bordercolor=#FF0000:x=1020-w:y=h-380,drawbox=w-480:h-150:500:160:#FF0000:1 -t 60 -f mp4 ${DATE}text${TIME}.mp4… Continue reading ffmpeg_mp4_bash
ffmpeg from… to…
#中心点水平旋转 #ffmpeg -i 20250926_1607.mp4 -loop 1 -i 2.png -filter_complex “[0:v]copy;[0:a]acopy;[1:v]copy[pm1];[pm1]format=rgba,colorchannelmixer=aa=1,scale=200:60,format=rgba,rotate=’0:c=0x00000000:ow=hypot(iw,ih):oh=ow’,format=rgba,rotate=’PI/5*t:c=0x00000000:ow=hypot(iw,ih):oh=ow'[pm1];[pm1]overlay=(W-w)/2+0:(H-h)/2+0” -t 00:00:15 -map “” -map “” -f mp4 $(date +%Y%m%d)-$(date +%H%M%S).mp4 #测试视频中心旋转-successful #ffmpeg -i input-0.mp4 -i input-1.mp4 -filter_complex “[0:v]copy;[0:a]acopy;[1:v]copy[pm1];[pm1]format=rgba,colorchannelmixer=aa=1,scale=300:150,format=rgba,rotate=’0:c=0x00000000:ow=hypot(iw,ih):oh=ow’,format=rgba,rotate=’PI/5*t:c=0x00000000:ow=hypot(iw,ih):oh=ow'[pm1];[pm1]overlay=(W-w)/2+0:(H-h)/2+0” -t 00:00:15 -map “” -map “” -f mp4 $(date +%Y%m%d)-$(date +%H%M%S).mp4 #单独视频旋转-successful #ffmpeg -i 20251028-154457.mp4 -filter_complex “rotate=’0:c=#FFFFFF:ow=hypot(iw,ih):oh=ow’,format=rgba,rotate=’PI/5*t:c=#FF00FF:ow=hypot(iw,ih):oh=ow'” -f mp4 $(date +%Y%m%d)-$(date +%H%M%S).mp4 #ffmpeg -i input-0.mp4 -filter_complex… Continue reading ffmpeg from… to…
ffmpeg录制的视频,图像与音频不对应时,可以这样做。
ffmpeg -i 2025-11-02_news_20-16-57.mp3 -ss 2 -f mp3 2025-11-02_news_20-16-57_0.mp3 -y && #将新处理的mp3文件覆盖原视频的音频文件,形成新视频文件 ffmpeg -i 2025-11-02_news_20-16-57.mp4 -i 2025-11-02_news_20-16-57_0.mp3 -map 0:v -map 1:a -c:v copy -c:a copy -f mp4 2025-11-02_news_20-16-57_0.mp4 -y && rm -rfv 2025-11-02_news_20-16-57.mp{3,4} 2025-11-02_news_20-16-57_0.mp3 && ls -lth 2025-11-02_news_20-16-57_0.mp4 && DATE=$(date +”%Y-%m-%d_”) TIME=$(date +”_%H-%M-%S”) ffmpeg -i 2025-11-02_news_20-16-57_0.mp4 -f mp4 ${DATE}news${TIME}.mp4 && rm -rfv 2025-11-02_news_20-16-57_0.mp4 && find .… Continue reading ffmpeg录制的视频,图像与音频不对应时,可以这样做。