为处理过的视频创建缩略图的在线方式

In-line way to create a thumbnail for a processed video

通常,当 FFmpeg 转换视频时,结果在我的电脑上没有缩略图,只显示默认的空白 'mp4' 缩略图。我正在尝试制作一个命令行来转换视频并为输出提供缩略图。我找到了很多关于如何从视频中提取图像的示例,但没有找到如何在线确保它有缩略图的示例。

我要的主要功能是将任意类型的视频转换成hevc_nvenc/aac/mov_text。

目前,我的命令是这样的:

ffmpeg -i "pth_in.mp4" -i "pth_in.mp4" -movflags faststart -map 0:v:0 -map 1:v -c:v hevc_nvenc -preset slow -map 1:a? -c:a aac -b:a 128k -map 1:s? -c:s ssa -filter:v:0 thumbnail,scale=360:-1,trim=end_frame=1 -c:v:0 mjpeg -disposition:0 attached_pic "pth_out.mp4"

双输入和 -filter:v:0 thumbnail,scale=360:-1,trim=end_frame=1 -c:v:0 mjpeg -disposition:0 attached_pic 应该创建缩略图。然而,它确实如此,因为它代表这个命令也会导致视频的搜索栏出现故障,使用 MPC-HC 和 VLC 只能工作大约 3 秒,尽管视频仍会完整播放。

有没有办法像我一样在 'one' pass 中做到这一点?还是我必须将其拆分并做其他事情?我还有其他失礼吗?感谢您的帮助!

试试这个:

ffmpeg -i pth_in.mp4 \
       -movflags faststart \
       -filter_complex [0:v]thumbnail,trim=end_frame=1,scale=360:-1[thumb] \
       -map 0:v -c:v:0 hevc_nvenc -preset slow \
       -map [thumb] -frames:v:1 1 -c:v:1 mjpeg -disposition:v:1 attached_pic \
       -map 0:a? -c:a aac -b:a 128k \
       -map 0:s? -c:s ssa 
       pth_out.mp4
    ]
)

使用复杂的滤镜图,您只需指定一次输入视频,视频输出选项的仔细流指定应该让您一次性完成所有工作。