当前位置: 首页 > news >正文

ffmpeg 实用命令 -- 设置预览图

在为视频文件设置预览图(缩略图)之前,我们首先要准备这样一张图片。FFmpeg 支持用 thumbnail 过滤器自动从视频中抽取一张预览图。它会从头到尾以 thumbnail=n 中的 n (默认为 100)数量的帧为扫描步长来抽取预览图。

# 自动选取 1 张预览图,按宽边为 1080 缩放分辨率,然后保存到文件
ffmpeg -i clip.mp4 -vf thumbnail,scale=-1:1080 -vframes 1 thumb.png
# 以 30 帧为扫描步长,从视频中自动选取 3 张预览图以供挑选(并在保存时进行三位数编号)
ffmpeg -i clip.mp4 -vf thumbnail=30,scale=-1:1080 -vframes 3 thumb-%03d.pngs

或者,利用在 截取帧为图片 一节中提到的帧截取方法,指定截取某一帧作为图片:

# 指定截取视频中的第 100 帧
ffmpeg -i clip.mp4 -vf 'select=eq(n\,100)' -vframes 1 thumb.png

最后,预览图当然也可以由用户利用 FFmpeg 以外的软件自行准备。甚至,即使图与视频内容无关,在技术上也是能把它设置为预览图的——但还是别了吧。

在预览图文件 thumb.png 准备完成后,我们就可以将其嵌入到视频文件了。对于 MP4 文件,这需要使用 disposition 参数:

ffmpeg -i video.mp4 -i thumb.png -map 0 -map 1 -c copy -c:v:1 png -disposition:v:1 attached_pic out.mp4

上例接受了第 1 个输入文件(#0) video.mp4 与第 2 个输入文件(#1) thumb.jpg 的所有流数据,然后将输入 #1 设置为预览图。请注意,我们必须像例中一样用 -map 指明接受两个输入的流数据,否则 ffmpeg 会自动只保留一个视频流。

对于 MKV 文件,我们则需要使用 -attach 参数来嵌入缩略图(也称 MKV 封面)。

# 文件名必须为 cover.jpg或conver.png。如果使用 PNG 文件(cover.png),请相应地将后续参数改为 mimetype=image/png
ffmpeg -i video.mkv -c copy -attach cover.jpg -metadata:s:t:0 mimetype=image/jpeg out.mkv

相关文章:

  • 【.NET Core】深入理解任务并行库 (TPL)
  • 使用ajax异步获取下拉列表的值
  • 单片机中MCU跑RTOS相比裸机的优势
  • 网安渗透攻击作业(1)
  • 不停机迁移,TDengine 在 3D 打印技术中的“焕新”之路
  • Linux的权限(三)
  • 数据库学习命令总结(持续更新)
  • 倍增算法笔记
  • python07-Python的数字类型之浮点类型
  • 如何解决服务器端口被占用的问题,减少带来的影响
  • 如何在Vue项目中应用TypeScript?
  • msvcp140.dll丢失是什么意思?找不到msvcp140.dll哪个解决方法简单
  • 【webrtc】neteq测试工程
  • Linux(2)——Linux中的Vim编辑器:从入门到精通
  • JWT令牌(JSON Web Token)
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • CEF与代理
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • Linux后台研发超实用命令总结
  • Protobuf3语言指南
  • python 学习笔记 - Queue Pipes,进程间通讯
  • Vue全家桶实现一个Web App
  • win10下安装mysql5.7
  • 关于extract.autodesk.io的一些说明
  • 微信支付JSAPI,实测!终极方案
  • 译自由幺半群
  • 运行时添加log4j2的appender
  • 翻译 | The Principles of OOD 面向对象设计原则
  • # include “ “ 和 # include < >两者的区别
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (HAL库版)freeRTOS移植STMF103
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (算法)Game
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (状压dp)uva 10817 Headmaster's Headache
  • .java 9 找不到符号_java找不到符号
  • .NET Core 项目指定SDK版本
  • .net FrameWork简介,数组,枚举
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • .NET企业级应用架构设计系列之应用服务器
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • @angular/cli项目构建--Dynamic.Form
  • @EnableWebMvc介绍和使用详细demo
  • [ARC066F]Contest with Drinks Hard
  • [BUUCTF NewStarCTF 2023 公开赛道] week4 crypto/pwn
  • [bzoj 3124][sdoi 2013 省选] 直径
  • [CareerCup] 14.5 Object Reflection 对象反射
  • [hive] 窗口函数 ROW_NUMBER()
  • [Oracle]如何观察Table 的各种Lock 之间的冲突
  • [Servlet 3]会话管理、进阶API、监听过滤器
  • [Swift] Enum 好用, Enum 可以更易用
  • [swust1745] 餐巾计划问题(费用流)
  • [UI5 常用控件] 08.Wizard,NavContainer