与 Shell 脚本一起使用时在何处添加 FilterChain

Where to add FilterChain when using with Shell Script

我正在尝试从 mp4 视频的中间获取 jpg。我使用了这一行,它就像在一行中生成 jpg 缩略图的魅力一样:

ffmpeg -i input.mp4 -vcodec mjpeg -vframes 1 -an -f rawvideo -ss `ffmpeg -i input.mp4 2>&1 | grep Duration | awk '{print }' | tr -d , | awk -F ':' '{print /2}'` output.jpg

但是,我想使用上面的行应用缩放和裁剪滤镜链 (filter:v),但是无论我把滤镜放在哪里,我都无法让它工作。

-filter:v "scale=720:ih*720/iw, crop=720:720:280:1000".

我应该把它放在哪里?

我收到的错误:

At least one output file must be specified

Invalid duration specification for ss: -filter:v

请注意这有效:

ffmpeg -i fkj.mp4 -vcodec mjpeg -filter:v "scale=720:ih*720/iw, crop=720:720:280:1000" -vframes 1 -an -f rawvideo -ss 4 output.jpg

你可以把它放在-vcodec mjpeg之后,然后将它添加到shell ffmpeg 命令

ffmpeg -i input.mp4 -f null - 2>&1 | grep Duration....

理想情况下,您应该使用 ffprobe input.mp4 而不是 ffmpeg