我正在尝试使用 alphamerge 命令模糊视频的特定部分。我使用的命令如下:
ffmpeg -y -i "odd resolution.3g2" -loop 1 -i cahceg0 -filter_complex "[0:v]scale='320:178',split=3[er0][ero1][er2];[er0][1:v]alphamerge,boxblur=chroma_radius=4:luma_radius=4:ap=0[alfb0];[er2]crop=256.0:18.956467:32.0:10.797836,boxblur=chroma_radius=4:luma_radius=4[alfb1];[ero1][alfb0]overlay[v0];[v0][alfb1]overlay=32.0:10.797836[v1]" -map [v1] -c:a copy -c:v libx264 output.3g2
整个过程正常工作,直到最后一帧,然后 ffmpeg 就无限期地挂起并显示最后的输出,
frame= 312 fps= 19 q=27.0 size= 512kB time=00:00:17.22 bitrate= 243.5kbits/s speed=1.03x .
此时只有 fps 和速度值会发生变化。如果我从第二个输入中删除“-loop 1”开关或不缩放第一个输入,问题就会解决但它并没有模糊我想要的视频
我正在附加输入文件和 ffmpeg 日志
答案1
尝试将repeatlast=0
开关添加到您的 filtercomplex 中
ffmpeg -y -i "odd resolution.3g2" -loop 1 -i cahceg0 -filter_complex "[0:v]scale='320:178',split=3[er0][ero1][er2];[er0][1:v]alphamerge,boxblur=chroma_radius=4:luma_radius=4:ap=0[alfb0];[er2]crop=256.0:18.956467:32.0:10.797836,boxblur=chroma_radius=4:luma_radius=4[alfb1];[ero1][alfb0]overlay[v0];[v0][alfb1]overlay=32.0:10.797836:repeatlast=0[v1]" -map [v1] -c:a copy -c:v libx264 output.3g2
答案2
问题在于拆分命令中别名的顺序,因此别名的使用顺序应与拆分表达式中声明的顺序相同,否则 ffmpeg 将卡住,以下是修复命令。
ffmpeg -y -i "odd resolution.3g2" -loop 1 -i cahceg0 -filter_complex "[0:v]scale='320:178',split=3[er0][ero1][er2];[er0][1:v]alphamerge,boxblur=chroma_radius=4:luma_radius=4:ap=0[alfb0];[er1]crop=256.0:18.956467:32.0:10.797836,boxblur=chroma_radius=4:luma_radius=4[alfb1];[ero2][alfb0]overlay[v0];[v0][alfb1]overlay=32.0:10.797836[v1]" -map [v1] -c:a copy -c:v libx264 output.3g2