使用filter_complex输出作为ffmpeg中的MKV附件



我试图缩放和裁剪一张图像,并将其用作MKV附件,但没有成功。我知道"-attach"命令正是这样做的,但问题是我没有将最终图像作为文件。相反,我试图在飞行中裁剪和缩放文件,做这样的事情:

ffmpeg -fflags +genpts 
-i video.h265 
-i audio.ac3 
-i sub.ass 
-i cover_img.jpg 
-filter_complex "[3:v]crop=in_h:in_h,scale=600:600[cover]; [3:v]crop=in_h:in_h,scale=120:120[small_cover]; [3:v]scale='-1:600'[cover_land]; [3:v]scale='-1:120'[small_cover_land]" 
-map 0:v:0 -map 1:a:0 -map 2:s:0 
-map "[cover]" -disposition:v:1 attached_pic -metadata:s:v:1 filename="cover.jpg" -metadata:s:v:1 mimetype="image/jpeg" 
-map "[small_cover]" -disposition:v:2 attached_pic -metadata:s:v:2 filename="small_cover.jpg" -metadata:s:v:2 mimetype="image/jpeg" 
-map "[cover_land]" -disposition:v:3 attached_pic -metadata:s:v:3 filename="cover_land.jpg" -metadata:s:v:3 mimetype="image/jpeg" 
-map "[small_cover_land]" -disposition:v:4 attached_pic -metadata:s:v:4 filename="small_cover_land.jpg" -metadata:s:v:1 mimetype="image/jpeg" 
-r 24000/1001 -c:s ass -c:a copy 
-c:v mjpeg -c:v:0 libx265 
out.mkv

但它不起作用,因为流被映射为视频,而不是附件。

我还尝试将filter_complex中的"[3:v]"更改为"[3:t]",但它不起作用,因为图片被视为视频流。

现在我采取了两步走的方法,但我正在寻找一种同时做这两件事的方法:

ffmpeg -i cover_img.jpg 
-filter_complex "[0:v]crop=in_h:in_h,scale=600:600[cover]; [0:v]crop=in_h:in_h,scale=120:120[small_cover]; [0:v]scale='-1:600'[cover_land]; [0:v]scale='-1:120'[small_cover_land]" 
-c:v mjpeg 
-map "[cover]" cover.jpg 
-map "[small_cover]" small_cover.jpg 
-map "[cover_land]" cover_land.jpg 
-map "[small_cover_land]" small_cover_land.jpg
ffmpeg -fflags +genpts 
-i video.h265 
-i audio.ac3 
-i sub.ass 
-map 0:v:0 -map 1:a:0 -map 2:s:0 
-attach "cover.jpg" -metadata:s:t:0 mimetype="image/jpeg" 
-attach "small_cover.jpg" -metadata:s:t:1 mimetype="image/jpeg" 
-attach "cover_land.jpg" -metadata:s:t:2 mimetype="image/jpeg" 
-attach "small_cover_land.jpg" -metadata:s:t:3 mimetype="image/jpeg" 
-r 24000/1001 -c:s ass -c:a copy 
-c:v libx265 
out.mkv

谢谢你的帮助。

-attach需要一个外部文件URL,并且不适用于从filtergraph输出发送的流。

相关内容

  • 没有找到相关文章

最新更新