我想看的《海贼王》很多封面都是统一的,我想要看剧情到哪里了。所以,我需要从视频提取一个视频帧显示成封面。网上的批量设置封面工具太贵,而ffmpeg工具批处理命令能满足自己的需求。

修改前:

在这里插入图片描述

修改后:

海贼王封面图结果页面



以下是实现方案

方法一:

将图片作为附加图片信息封装到视频上,以下是代码。将bat文件放到视频文件夹运行

@echo off
 chcp 65001
 
::在下方设置需要处理的视频格式
set Ext=*.ts,*.avi,*.mp4,*.wmv,*.flv,*.mkv,*.rmvb,*.rm,*.mov

md temp
md output

for %%a in (%Ext%) do (
	ffmpeg -ss 315 -i "%%a" -vf thumbnail,scale=1280:720 -frames:v 1 -y "temp\%%~na.jpg"
	ffmpeg -i "%%a" -i "temp\%%~na.jpg" -map 1 -map 0 -c copy -disposition:0 attached_pic -y "output\%%~na.mp4"
)

pause

方法来源于 ffmpeg批量修改视频缩略图(封面)-CSDN博客,如有侵权请联系。

如果要代码具体参数含义的看 使用 ffmpeg 为视频文件添加封面 - J.晒太阳的猫 - 博客园

方法二:

将图片插入到视频第1帧或者说插入视频前几帧,作为遮盖物overlay到视频开头。以下是代码

@echo off
 chcp 65001
 
::在下方设置需要处理的视频格式
set Ext=*.ts,*.avi,*.mp4,*.wmv,*.flv,*.mkv,*.rmvb,*.rm,*.mov

md temp
md output

for %%a in (%Ext%) do (
	ffmpeg -ss 315 -i "%%a" -vf thumbnail -frames:v 1 -y "temp\%%~na.jpg"
	ffmpeg -i "%%a" -i "temp\%%~na.jpg" -filter_complex "[0:v][1:v]overlay=0:0:enable='between(n,0,11)'" -c:a copy "temp\%%~na.mp4"
)

pause

-filter_complex这个是主要参数,意思是将图片跟视频完全重叠。当然如果要部分重叠可以更改以下后面的数字。后面的enable='between(n,0,11)'的n表示帧,如果是enable='between(t,0,11)'就表示秒。参考 也许能用得上的FFmpeg常用命令 - 哔哩哔哩-搜文字【按秒加入图片】。

疑问集锦

  1. 方法一运行速度快于方法二,也就是修改附加信息要比插入帧更快。
  2. 方法一如果运行后发现有些软件并没有显示封面,比如billfish,需要用以下代码解决
@echo off
 chcp 65001
 
::在下方设置需要处理的视频格式
set Ext=*.ts,*.avi,*.mp4,*.wmv,*.flv,*.mkv,*.rmvb,*.rm,*.mov

md temp
md output

for %%a in (%Ext%) do (
	ffmpeg -ss 315 -i "%%a" -vf thumbnail -frames:v 1 -y "temp\%%~na.jpg"
	ffmpeg -i "%%a" -i "temp\%%~na.jpg" -filter_complex "[0:v][1:v]overlay=0:0:enable='between(n,0,11)'" -c:a copy "temp\%%~na.mp4"
	ffmpeg -i "temp\%%~na.mp4" -i "temp\%%~na.jpg" -map 1 -map 0 -c copy -disposition:0 attached_pic -y "output\%%~na.mp4"
)

pause

注意:for循环里第2行和第3行顺序不能反,否则封面设置会失效。

总结

分享

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐