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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

高德地图简单实现点标,和区域绘制

高德地图开发文档:https://lbs.amap.com/api/javascript-api/guide/abc/quickstart 百度搜索高德地图开发平台 注册高德地图开发账号 在应用管理中 我的应用中 添加一个Key 点击提交 进入高德地图开发文档:https://lbs.amap.com/api/javascript-api/guide/abc/quickstart …

CTE-6作文

第一段 现象 引出原因 第二段 感受 举例 意义 危害 第三段 建议 展望

使用MFC DLL

本文仅供学习交流,严禁用于商业用途,如本文涉及侵权请及时联系本人将于及时删除 应用程序与DLL链接后,DLL才能通过应用程序调用运行。应用程序与DLL链接的方式主要有如下两种:隐式链接和显式链接。 隐式链接又称为静态加载&…

【python】python化妆品销售logistic逻辑回归预测分析可视化(源码+课程论文+数据集)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

Apache Pulsar 从入门到精通

一、快速入门 Pulsar 是一个分布式发布-订阅消息平台,具有非常灵活的消息模型和直观的客户端 API。 最初由 Yahoo 开发,在 2016 年开源,并于2018年9月毕业成为 Apache 基金会的顶级项目。Pulsar 已经在 Yahoo 的生产环境使用了三年多&#…

AI服务器相关知识

在当今社会,人工智能的应用场景愈发广泛,如小爱同学、天猫精灵等 AI 服务已深入人们的生活。随着人工智能时代的来临,AI 服务器也开始在社会各行业发挥重要作用。那么,AI 服务器与传统服务器相比,究竟有何独特之处&…

速度位置规划实现精确定位的问题

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

npm install 的原理

1. 执行命令发生了什么 ? 执行命令后,会将安装相关的依赖,依赖会存放在根目录的node_modules下,默认采用扁平化的方式安装,排序规则为:bin文件夹为第一个,然后是开头系列的文件夹,后…

汇聚荣科技有限公司实力怎么样?

汇聚荣科技有限公司,一家专注于高新技术研发和应用的企业,在业界享有一定的声誉。那么,这家公司的实力究竟如何?我们将从公司概况、技术研发、市场表现、企业文化和未来展望五个方面进行详细探讨。 一、公司概况 汇聚荣科技有限公司经过多年…

Linux系统编程(十一)线程、线程控制

线程 一、线程概念: ps -eLf 查看线程号(cpu 执行的最小单位) 二、Linux内核线程实现原理 三、三级映射(三级页表) 进程PCB-->页面(可看成数组,首地址位于PCB中)--》页表--》页…

Silanna UV光荣推出了一款革命性的高功率远紫外线LED

这款令人瞩目的光源,拥有令人震撼的235nm波长,并被巧妙地封装在紧凑的6.8mm结构中,其魅力与实力兼具。 今年六月,在苏格兰圣安德鲁斯大学举行的盛大2024年远紫外科学和技术国际大会(ICFUST)上,S…

C# BindingSource 未完BindingNavigator

数据绑定导航事件数据验证自定义示例示例总结 在 C#中, BindingSource 是一个非常有用的控件,它提供了数据绑定的基础设施。 BindingSource 允许开发者将数据源(如数据库、集合、对象等)与用户界面控件(如文本框、下…

集成学习模型对比优化—银行业务

1.Data Understanding 2.Data Exploration 3.Data Preparation 4.Training Models 5.Optimization Model 集成学习模型对比优化—银行业务 1.Data Understanding import pandas as pd from matplotlib import pyplot as plt import seaborn as sns df pd.read_csv(&quo…

《TCP/IP网络编程》(第十四章)多播与广播

当需要向多个用户发送多媒体信息时,如果使用TCP套接字,则需要维护与用户数量相等的套接字;如果使用之前学习的UDP,传输次数也需要和用户数量相同。 所以为了解决这些问题,可以采用多播和广播技术,这样只需要…

pxe自动装机:

pxe自动装机: 服务端和客户端 pxe c/s模式,允许客户端通过网络从远程服务器(服务端)下载引导镜像,加载安装文件,实现自动化安装操作系统。 无人值守 无人值守,就是安装选项不需要人为干预&am…

当前 Python 版本中所有保留字keyword.kwlist

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 当前 Python 版本中 所有保留字 keyword.kwlist [太阳]选择题 根据给定的Python代码,哪个选项是正确的? import keyword print("【执行】keyword.kwlist"…

vue面试题2-根据以下问题回答

以下是针对提供的关于Vue的问题的回答: Vue的基本原理: Vue.js是一个流行的JavaScript框架,用于构建用户界面和单页面应用。其基本原理包括响应式数据、模板、组件系统、指令、生命周期钩子和虚拟DOM。 双向数据绑定的原理: Vue通…

自动化测试-Selenium(一),简介

自动化测试-Selenium 1. 什么是自动化测试 1.1 自动化测试介绍 自动化测试是一种通过自动化工具执行测试用例来验证软件功能和性能的过程。与手动测试不同,自动化测试使用脚本和软件来自动执行测试步骤,记录结果,并比较预期输出和实际输出…

第十一篇——信息增量:信息压缩中的保守主义原则

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么? 四、总结五、升华 一、背景介绍 通过信息中的保守主义,我想到了现实中人的保守主义一样&#…

【InternLM实战营第二期笔记】07:OpenCompass :是骡子是马,拉出来溜溜

文章目录 课程实操 课程 评测的意义是什么呢?我最近也在想。看到这节开头的内容后忽然有个顿悟:如果大模型最终也会变成一种基础工具(类比软件),稳定或可预期的效果需要先于用户感知构建出来,评测 case 就…