【发布时间】:2020-04-19 17:48:25
【问题描述】:
我正在尝试缩放和裁剪图像并将其用作 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
感谢您的帮助。
【问题讨论】:
标签: image ffmpeg attachment mkv cover