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

Ffmpeg安装和简单使用

Ffmpeg安装

下载并解压

进入官网 (https://ffmpeg.org/download.html),选择 Window

image-20240606132009520

然后再打开的页面中下滑找到 release builds,点击 zip 文件下载

image-20240606132116466

环境变量配置

下载好之后解压,找到 bin 文件夹,里面有3个 .exe 文件

image-20240606132416557

image-20240606132445125

然后复制这个 bin 目录地址

image-20240606132543962

然后再环境变量中的 Path 中添加保存即可

image-20240606132700052

测试运行

打开cmd,输入 ffmpeg -version 测试

image-20240606132806315

mp4转ts文件

命令

ffmpeg -y -i 你的视频地址.mp4 -vcodec copy -acodec copy -bsf:v h264_mp4toannexb ts文件输出地址.ts

参数解释

  1. ffmpeg:
    • 命令行工具的名称,用于处理多媒体文件。
  2. -y:
    • 这个选项告诉 ffmpeg 在输出文件已存在时,无需提示直接覆盖目标文件。
  3. -i 你的视频地址.mp4:
    • -i 表示输入文件。
    • 你的视频地址.mp4 是输入视频文件的路径或文件名。
  4. -vcodec copy:
    • -vcodec-c:v 指定视频编解码器。
    • copy 表示直接复制视频流而不重新编码。
  5. -acodec copy:
    • -acodec-c:a 指定音频编解码器。
    • copy 表示直接复制音频流而不重新编码。
  6. -bsf:v h264_mp4toannexb:
    • -bsf:v 表示对视频流应用位流过滤器(Bitstream Filter)。
    • h264_mp4toannexb 是具体的位流过滤器,作用是将 H.264 内容从 MP4 的格式转换为 TS 中使用的 Annex B 格式。这是因为 MP4 中 H.264 使用的是一种不同的封装格式,不适合直接存储在 TS 容器中。
  7. ts文件输出地址.ts:
    • 指定输出文件的路径或文件名,这里是一个 TS 格式文件。

示例

ffmpeg -y -i D:\javaLogs\filePan\files\114\大屏视频.mp4 -vcodec copy -acodec copy -bsf:v h264_mp4toannexb D:\javaLogs\filePan\files\114\大屏视频.ts

image-20240606133638014

运行结果

image-20240606133724706

生成索引文件.m3u8和切片.ts

在处理视频在线播放时可以将一个大的ts视频文件切成多个小的ts文件,并生成一个m3u8索引文件

命令

ffmpeg -i input.mp4 -c copy -map 0 -f segment -segment_list list.m3u8 -segment_time 60 output_dir/output_%04d.ts
  • input.mp4: 输入文件。
  • -c copy: 对视频和音频流进行无损复制。
  • -map 0: 映射所有流。
  • -f segment: 使用 segment 多路复用器。
  • -segment_list list.m3u8: 生成包含所有片段文件名的播放列表文件,这里用 m3u8 格式。
  • -segment_time 60: 每个片段的时长为 60 秒。
  • output_dir/output_%04d.ts: 输出的片段文件(存放在 output_dir 目录,命名为 output_0000.ts, output_0001.ts 等)。

示例

mkdir D:\javaLogs\filePan\files\114\大屏视频ffmpeg -i D:\javaLogs\filePan\files\114\大屏视频.mp4 -c copy -map 0 -f segment -segment_list D:\javaLogs\filePan\files\114\大屏视频\index.m3u8 -segment_time 60 D:\javaLogs\filePan\files\114\大屏视频\output_%04d.ts

image-20240606134846828

输出的内容

image-20240606134901650

image-20240606134917844

生成视频缩略图

使用 ffmpeg 生成视频缩略图是一项常见任务。在下面的例子中,我将向你展示如何从视频中生成一张或多张缩略图。

生成单个缩略图

假设你希望从视频的特定时间帧生成一张缩略图,例如在视频的第 30 秒生成缩略图,命令如下:

ffmpeg -i 你的视频地址.mp4 -ss 00:00:30 -vframes 1 -q:v 2 缩略图输出路径.jpg

参数解释

  • -i 你的视频地址.mp4: 输入视频文件。
  • -ss 00:00:30: 定位到视频的第 30 秒。也可以使用更精确的时间格式,比如 00:01:30.500 表示 1 分 30 秒之后的第 500 毫秒。
  • -vframes 1: 指定只输出一帧图片。
  • -q:v 2: 设置输出图片的质量。数值范围为 1-31,数值越小质量越高,2 是一个常用的高质量值。
  • 缩略图输出路径.jpg: 输出图片的路径和文件名。

生成多张缩略图

如果你希望从视频中定时生成多张缩略图,例如每隔 10 秒生成一张,命令如下:

ffmpeg -i 你的视频地址.mp4 -vf "fps=1/10" 缩略图输出路径_%03d.jpg

参数解释

  • -i 你的视频地址.mp4: 输入视频文件。
  • -vf "fps=1/10": 使用视频过滤器,每 10 秒生成一帧图片(1/10 表示每 1/10 秒生成一帧)。
  • 缩略图输出路径_%03d.jpg: 输出图片的路径和文件名,%03d 会被替换为当前帧号,生成一系列的图片如 缩略图输出路径_001.jpg缩略图输出路径_002.jpg 等。

示例

以下是示例命令:

生成单个缩略图

ffmpeg -i video.mp4 -ss 00:00:30 -vframes 1 -q:v 2 thumbnail.jpg

image-20240606135440862

image-20240606135505526

生成多张缩略图,每30秒生成一张

ffmpeg -i video.mp4 -vf "fps=1/30" thumbnails_%03d.jpg

image-20240606135729964

image-20240606135754971

视频压缩

使用 ffmpeg 压缩视频是一项常见任务,尤其是在需要减小文件大小以便于存储或传输时。以下是几个基本的例子,涵盖常见的压缩场景。

  1. 使用 H.264 编码器压缩视频

H.264 是一种常用的高效视频压缩标准。你可以使用如下命令将视频压缩为 H.264 格式:

ffmpeg -i input.mp4 -vcodec libx264 -crf 23 -preset medium output.mp4

参数解释

  • -i input.mp4: 输入视频文件。
  • -vcodec libx264: 使用 H.264 编码器。
  • -crf 23: 恒定质量因子,范围为 0(无损)到 51(最差),默认值是 23。数值越小,质量越好,文件越大。数值越大,文件越小,质量越低。
  • -preset medium: 预设参数,决定编码速度与压缩率之间的平衡。常用预设有 ultrafastsuperfastveryfastfasterfastmediumslowslowerveryslowmedium 是默认值。
  1. 压缩视频并降低分辨率

如果你不仅想要压缩视频文件大小,还希望降低分辨率,可以使用下面的命令:

ffmpeg -i input.mp4 -vcodec libx264 -crf 23 -preset medium -vf scale=1280:720 output.mp4

参数解释

  • -vf scale=1280:720: 调整视频分辨率为 1280x720。你可以根据需要设置其他分辨率。
  1. 压缩视频并降低比特率

如果你希望控制视频的比特率,可以使用如下命令:

ffmpeg -i input.mp4 -b:v 1000k -vcodec libx264 -preset medium output.mp4

参数解释

  • -b:v 1000k: 设置视频比特率为 1000 kbps。你可以根据需要调整这个值。
  1. 压缩视频音频

如果你希望同时压缩视频和音频,可以添加音频参数:

ffmpeg -i input.mp4 -vcodec libx264 -crf 23 -preset medium -acodec aac -b:a 128k output.mp4

参数解释

  • -acodec aac: 使用 AAC 音频编码器。
  • -b:a 128k: 设置音频比特率为 128 kbps。

示例命令

使用 H.264 编码压缩视频

ffmpeg -i input.mp4 -vcodec libx264 -crf 23 -preset medium output.mp4

压缩视频并降低分辨率

ffmpeg -i input.mp4 -vcodec libx264 -crf 23 -preset medium -vf scale=1280:720 output.mp4

压缩视频并设置比特率

ffmpeg -i input.mp4 -b:v 1000k -vcodec libx264 -preset medium output.mp4

同时压缩视频和音频

ffmpeg -i input.mp4 -vcodec libx264 -crf 23 -preset medium -acodec aac -b:a 128k output.mp4

运行这些命令时,请确保输入文件路径正确,并且你有输出目录的写入权限

图片生成缩略图

使用ffmpeg生成缩略图

以下是使用ffmpeg生成128x128像素缩略图的命令:

ffmpeg -i input.jpg -vf "thumbnail,scale=128:128" -frames:v 1 output_thumbnail.jpg

参数解释

  • -i input.jpg:输入图片文件。
  • -vf "thumbnail,scale=128:128":使用缩略图滤镜和缩放滤镜,将图片缩放至128x128像素。
  • -frames:v 1:仅输出一帧图像。
  • output_thumbnail.jpg:生成的缩略图文件名。

示例

ffmpeg -i ./大屏视频.jpg -vf "thumbnail,scale=128:128" -frames:v 1 output_thumbnail.jpg

image-20240606141411531

image-20240606141426973

更多其他用法

可参考:https://blog.csdn.net/m0_37624402/article/details/125123818

官方文档:https://ffmpeg.org/ffmpeg.html#Options

相关文章:

Ffmpeg安装和简单使用

Ffmpeg安装 下载并解压 进入官网 (https://ffmpeg.org/download.html),选择 Window 然后再打开的页面中下滑找到 release builds,点击 zip 文件下载 环境变量配置 下载好之后解压,找到 bin 文件夹,里面有3个 .exe 文件 然后复制…...

29、matlab算数运算汇总2:加、减、乘、除、幂、四舍五入

1、乘法:times, .* 语法 C A.*B 通过将对应的元素相乘来将数组 A 和 B 相乘。 C times(A,B) 是执行 A.*B 的替代方法, 1)将两个向量相乘 代码及运算 A [1 0 3]; B [2 3 7]; C A.*BC 2 0 212) 将两个数组相乘 代码及运算 A [1 0 3;…...

<Rust><iced>基于rust使用iced库构建GUI实例:动态改变主题色

前言 本专栏是Rust实例应用。 环境配置 平台:windows 软件:vscode 语言:rust 库:iced、iced_aw 概述 本篇构建了这样的一个实例,可以动态修改UI的主题,通过菜单栏来选择预设的自定义主题和官方主题&#…...

k8s——安全机制

一、安全机制说明 Kubernetes作为一个分布式集群的管理工具,保证集群的安全性是其一个重要的任务。API Server是集群内部各个组件通信的中介, 也是外部控制的入口。所以Kubernetes的安全机制基本就是围绕保护API Server来设计的。 比如 kubectl 如果想…...

Linux驱动应用编程(三)UART串口

本文目录 前述一、手册查看二、命令行调试串口1. 查看设备节点2. 使用stty命令设置串口3. 查看串口配置信息4. 调试串口 三、代码编写1. 常用API2. 例程线程优化 前述 在开始实验前,请一定要检查测试好所需硬件是否使用正常,不然调试过程中出现的问题&am…...

【设计模式深度剖析】【4】【行为型】【策略模式】

文章目录 策略模式定义英文原话直译 角色类图策略接口Strategy:具体策略类上下文类Context测试类 策略模式的应用策略模式的优点策略模式的缺点策略模式的使用场景 策略模式 策略模式(Strategy Pattern) Strategy策略也称作Policy政策。 想…...

opencv dnn模块 示例(26) 目标检测 object_detection 之 yolov10

文章目录 1、yolov10简要介绍1.1、双标签分配策略1.2、架构改进1.3、性能1.4、预训练模型1.5、网络有关层说明 2、测试2.1、官方测试2.2、opencv dnn2.2.1、仅运行到内部"NMS"步骤之前的层2.2.2、完整代码2.2.2、完整实现所有层 2.3、onnxruntime测试2.4、tensorrt 1…...

【python进阶】python图形化编程之美--tkinter模块初探

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...

discuz点微同城源码34.7+全套插件+小程序前端

discuz点微同城源码34.7全套插件小程序前后端 模板挺好看的 带全套插件 自己耐心点配置一下插件 可以H5可以小程序...

ActiveMQ 介绍、下载、安装和控制台

ActiveMQ 介绍 Apache ActiveMQ 是一款非常成熟且功能全面的开源消息中间件,由Apache软件基金会维护。它遵循 Java Message Service (JMS) 规范,这意味着它提供了一组标准的 API,允许 Java 应用程序以一种标准化的方式发送和接收消息。 以下…...

MacOS M系列芯片一键配置多个不同版本的JDK

第一步:下载JDK。 官网下载地址:Java Archive | Oracle 选择自己想要下载的版本,一般来说下载一个jdk8和一个jdk11就够用了。 M系列芯片选择这两个,第一个是压缩包,第二个是dmg可以安装的。 第二步:编辑…...

源码文章上传无忧,论坛小程序支持

前言 在数字化时代,知识的分享与传播显得愈发重要。为了满足广大创作者和求知者的需求,我们推出了全新的论坛小程序,不仅支持文章、源码、链接等多样化内容的上传,还实现了付费观看功能,为创作者们提供了一个展示才华…...

Docker面试整理-如何优化Docker容器的性能?

优化Docker容器的性能可以从多个方面入手,以下是一些建议: 选择合适的基础镜像:使用轻量级的基础镜像,如基于Alpine Linux的镜像,可以减少镜像的大小和启动时间。避免使用过于庞大的操作系统镜像。优化Dockerfile:减少Dockerfile中的不必要指令和层,以最小化镜像的大小。…...

list(二)和_stack_queue

嗨喽大家好,时隔许久阿鑫又给大家带来了新的博客,list的模拟实现(二)以及_stack_queue,下面让我们开始今天的学习吧! list(二)和_stack_queue 1.list的构造函数 2.设计模式之适配器和迭代器 3.新容器de…...

查询SQL02:寻找用户推荐人

问题描述 找出那些 没有被 id 2 的客户 推荐 的客户的姓名。 以 任意顺序 返回结果表。 结果格式如下所示。 题目分析: 这题主要是要看这null值会不会用,如果说Java玩多了,你去写SQL时就会有问题。在SQL中判断是不是null值用的是is null或…...

2、Tomcat 线程模型详解

2、Tomcat 线程模型详解 Tomcat I/O模型详解Linux I/O模型详解I/O要解决什么问题Linux的I/O模型分类 Tomcat支持的 I/O 模型Tomcat I/O 模型如何选型 网络编程模型Reactor线程模型单 Reactor 单线程单 Reactor 多线程主从 Reactor 多线程 Tomcat NIO实现Tomcat 异步IO实现 Tomc…...

对硬盘的设想:纸存、执行存

固态硬盘出现后,发现它的擦写次数受限,越是便宜的固态硬盘,擦写次数越少。于是,有了“纸存”的设想,即硬盘上的单元只能改写一次,就像拿钢笔在纸上写字一样。这时,文件系统、数据库该怎么设计&a…...

最新付会进群多群同时变现社群系统V3.5.3版本 详细教程+源码下载

市面1888最新付费进群多群同时变现系统V3.5.3版本 详细教程源码下载介绍: 续男粉变现,相亲群变现后 演化出来的最新多群同时变现系统 可同时进行40个群同时变现 可设置地域群,相亲,男粉变现等多种群 购买后包括详细的 域名服…...

python tk实现标签切换页面

import tkinter as tk from tkinter import ttk# 初始化主窗口 root tk.Tk() root.title("标签页示例")# 设置窗口大小 root.geometry("400x300")# 创建 Notebook 小部件 notebook ttk.Notebook(root) notebook.pack(expandTrue, fill"both")#…...

引擎:UI

一、控件介绍 Button 按钮 创建一个按钮 按钮禁用 精灵模式 颜色模式 缩放模式 绑定点击事件 EditBox 输入框 Layout 布局 支持水平排列、垂直排列、背包排列 PageView 页面视图 ProgressBar 进度条 RichText 富文本 绑定点击事件 事件可以被其它标签包裹 图文混排 Scroll…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来&#xf…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"&#xff0…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...