Ffmpeg安装和简单使用

news2024/10/6 12:20:12

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1796287.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

度安讲 | 第二期「安全左移·业务护航」技术沙龙成功举办

当下,“安全左移”作为落地DevSecOps的重要实践之一,已在业界达成共识。DevSecOps作为一种集开发、安全、运维于一体的软件开发和运营模式,强调在敏捷交付下,“安全”在软件开发生命周期的全覆盖贯穿和核心位置。所谓“安全左移”…

vue 文件预览mp4、txt、pptx、xls、xlsx、docx、pdf、html、xml

vue 文件预览 图片、mp4、txt、pptx、xls、xlsx、docx、pdf、html、xml 最近公司要做一个类似电脑文件夹的功能,支持文件夹操作,文件操作,这里就不说文件夹操作了,说说文件预览操作,本人是后端java开发,前端vue&#…

gRPC实战 | 实现Python 和 Go 之间的 gRPC 交互

前言 📢博客主页:程序源⠀-CSDN博客 📢欢迎点赞👍收藏⭐留言📝如有错误敬请指正! 一、gRPC 简介 gRPC是一个高性能、通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设…

eNSP学习——RIP路由协议的汇总

目录 主要命令 原理概述 实验目的 实验内容 实验拓扑 实验编址 实验步骤 1、基本配置 2、配置RIPv1协议 3、配置RIPv2自动汇总 4、配置RIPv2手动汇总 需要eNSP各种配置命令的点击链接自取:华为eNSP各种设备配置命令大全PDF版_ensp配置命令大全…

Acwing 786.第K个数

Acwing 786.第K个数 题目描述 786. 第k个数 - AcWing题库 运行代码 #include <iostream> #include <algorithm> using namespace std; const int N 100010; int q[N];int main() {int n, k;scanf("%d%d", &n, &k);for (int i 0; i < n; …

网络通讯协议UDP转发TCP工具_UdpToTcpRelay

网络通讯协议UDP转发TCP工具_UdpToTcpRelay 本程序旨在提供一个灵活的、可配置的服务&#xff0c;它处理特定的UDP端口以接收命令&#xff0c;然后将这些命令转换为TCP命令并通过网络发送到指定的TCP服务器【TCP支持十六进制和ASCII】。 此设计特别适用于需要远程控制或自动化…

百度/迅雷/夸克,网盘免费加速,已破!

哈喽&#xff0c;各位小伙伴们好&#xff0c;我是给大家带来各类黑科技与前沿资讯的小武。 之前给大家安利了百度网盘及迅雷的加速方法&#xff0c;详细方法及获取参考之前文章&#xff1a; 刚刚&#xff01;度盘、某雷已破&#xff01;速度50M/s&#xff01; 本次主要介绍夸…

Day23 自定义对话框服务

​本章节实现了,自定义对话框服务的功能 当现有的对话框服务无法满足特定需求时,我们可以采用自定义对话框的解决方案,以更好地满足一些特殊需求。 一.自定义对话框主机服务步骤 在Models 文件夹中,再建立一个 IDialogHostService 接口类,继承自 IDialogService 对话框服…

[个人总结]-java常用方法

1.获取项目根路径 user.dir是一个系统属性&#xff0c;表示用户当前的工作目录&#xff0c;大多数情况下&#xff0c;用户的当前工作目录就是java项目的根目录&#xff08;src文件的同级路径&#xff09; System.getProperty("user.dir") 结果&#xff1a;D:\code…

什么是IDE?– 集成开发环境

IDE &#xff08;集成开发环境&#xff09;是将常用的开发人员工具组合到紧凑的 GUI&#xff08;图形用户界面&#xff09;应用程序中的软件。它是代码编辑器、代码编译器和代码调试器等工具与集成终端的组合。 为什么 IDE 很重要&#xff1f; 人们当然不需要 IDE来编码或开发…

【动手学深度学习】softmax回归从零开始实现的研究详情

目录 &#x1f30a;1. 研究目的 &#x1f30a;2. 研究准备 &#x1f30a;3. 研究内容 &#x1f30d;3.1 softmax回归的从零开始实现 &#x1f30d;3.2 基础练习 &#x1f30a;4. 研究体会 &#x1f30a;1. 研究目的 理解softmax回归的原理和基本实现方式&#xff1b;学习…

Python SQLAlchemy库详解

大家好&#xff0c;在Python生态系统中&#xff0c;SQLAlchemy库是一个强大的工具&#xff0c;为开发人员提供了便捷的方式来处理与数据库的交互。无论是开发一个小型的Web应用程序&#xff0c;还是构建一个大型的企业级系统&#xff0c;SQLAlchemy都能满足你的需求&#xff0c…

hid.dll丢失怎么办?hid.dll丢失多种解决方法详解

hid.dll&#xff0c;即Human Interface Device (HID) Dynamic Link Library&#xff0c;是Windows操作系统中用于管理人机交互设备&#xff08;如键盘、鼠标、游戏控制器等&#xff09;的动态链接库文件。它负责处理这些设备的输入和输出&#xff0c;确保设备与系统之间的通信顺…

SpringBoot+Vue在线考试答题系统【附:资料➕文档】

前言&#xff1a;我是源码分享交流Coding&#xff0c;专注JavaVue领域&#xff0c;专业提供程序设计开发、源码分享、 技术指导讲解、各类项目免费分享&#xff0c;定制和毕业设计服务&#xff01; 免费获取方式--->>文章末尾处&#xff01; 项目介绍016&#xff1a; 本…

windows10子系统wsl ubuntu22.04下GN/ninja环境搭建

打开windows10子系统 ubuntu22.04 ubuntu22.04: 首先需要 安装ninja $sudo apt install ninja-build $ ninja --version 1.10.0 安装clang $sudo apt install clang $clang --version Ubuntu clang version 14.0.0-1ubuntu1.1安装gn Github: https://github.com/timniederh…

如何在npm上发布自己的包

如何在npm上发布自己的包 npm创建自己的包 一、一个简单的创建 1、创建npm账号 官网&#xff1a;https://www.npmjs.com/创建账号入口&#xff1a;https://www.npmjs.com/signup 注意&#xff1a;需要进入邮箱验证 2、创建目录及初始化 $ mkdir ufrontend-test $ cd ufron…

LLM主流开源代表模型

LLM主流开源大模型介绍 1 LLM主流大模型类别 随着ChatGPT迅速火爆&#xff0c;引发了大模型的时代变革&#xff0c;国内外各大公司也快速跟进生成式AI市场&#xff0c;近百款大模型发布及应用。 目前&#xff0c;市面上已经开源了各种类型的大语言模型&#xff0c;本章节我们…

用idea将java文件打成jar包

一、用idea将java文件打成jar包 1、在idea上选择file—Project Structure 2、Artifacts —点–JAR—From modules with dependencies 3、选择要打包的java文件 4、Build — Build Artifacts 5、找到刚才添加的Artifacts直接Build 6、生成jar包文件

tomcat服务器之maxHttpHeaderSize

背景&#xff1a;在OA流程表单中&#xff0c;填写了200条数据&#xff0c;一提交&#xff0c;秒报400错误&#xff0c;且请求没有打到后端中&#xff08;无报错日志&#xff09;&#xff0c;一开始以为是谷歌浏览器的问题&#xff0c;可百度上关于这个错误的解决方案都是清除缓…

Renesas MCU之FreeRTOS的应用

目录 概述 1 FSP配置FreeRTOS 1.1 软件版本信息 1.2 配置FreeRTOS 2 FreeRTOS的Task 2.1 FSP下的项目结构 2.2 Task代码 2.2.1 Task测试案例配置 2.2.2 测试代码实现 3 自定义Task 3.1 编写代码 3.2 测试函数 4 测试 4.1 Task断点测试 4.2 板卡运行测试 概述 …