FFmpeg

news2024/12/23 20:51:04

介绍

        FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。

        FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。这个项目最早由Fabrice Bellard发起,2004年至2015年间由Michael Niedermayer主要负责维护。许多FFmpeg的开发人员都来自MPlayer项目,而且当前FFmpeg也是放在MPlayer项目组的服务器上。项目的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward"。 [1]  FFmpeg编码库可以使用GPU加速。

安装 

FFmpeg 被许多开源项目采用, QQ 影音、暴风影音、 VLC 等。
下载:FFmpeg https://www.ffmpeg.org/download.html#build-windows

 

 

 将zip解压

 将bin目录配置到环境变量

 测试 ffmpeg -version 有输出安装成功

将一个 .avi 文件转成 mp4 mp3 gif 等。
比如我们将 lucene.avi 文件转成 mp4 ,运行如下命令:
ffffmpeg -i lucene.avi lucene.mp4

 

转成 mp3 ffffmpeg -i lucene.avi lucene.mp3
转成 gif ffffmpeg -i lucene.avi lucene.gif

基本使用

 生成m3u8/ts文件

 使用ffffmpeg生成 m3u8的步骤如下:

第一步:先将avi视频转成mp4

ffmpeg.exe ‐i lucene.avi ‐c:v libx264 ‐s 1280x720 ‐pix_fmt yuv420p ‐b:a 63k ‐b:v 753k ‐r 18
.\lucene.mp4
下面把各参数意思大概讲讲,大概了解意思即可,不再此展开流媒体专业知识的讲解。
  • -c:v 视频编码为x264 x264编码是H264的一种开源编码格式。
  • -s 设置分辨率
  • -pix_fmt yuv420p:设置像素采样方式,主流的采样方式有三种,YUV4:4:4YUV4:2:2YUV4:2:0,它的作用是
  • 根据采样方式来从码流中还原每个像素点的YUV(亮度信息与色彩信息)值。
  • -b 设置码率,
  • -b:a-b:v分别表示音频的码率和视频的码率,
  • -b表示音频加视频的总码率。码率对一个视频质量有很大的作用,后边会介绍。
  • -r:帧率,表示每秒更新图像画面的次数,通常大于24肉眼就没有连贯与停顿的感觉了。

第二步:将mp4生成m3u8

ffmpeg ‐i lucene.mp4 ‐hls_time 10 ‐hls_list_size 0 ‐hls_segment_filename
./hls/lucene_%05d.ts ./hls/lucene.m3u8
  • -hls_time 设置每片的长度,单位为秒
  • -hls_list_size n: 保存的分片的数量,设置为0表示保存所有分片
  • -hls_segment_fifilename :段文件的名称,%05d表示5位数字
生成的效果是:将 lucene.mp4 视频文件每 10 秒生成一个 ts 文件,最后生成一个 m3u8 文件, m3u8 文件是 ts 的索引 文件。
使用 VLC 打开 m3u8 文件,测试播放效果, VLC 是一款自由、开源的跨平台多媒体播放器及框架,可播放大多数多 媒体文件,以及 DVD 、音频 CD VCD 及各类流媒体协议。( http://www.videolan.org/

 码率

码率又叫比特率即每秒传输的 bit 数,单位为 bps(Bit Per Second) ,码率越大传送数据的速度越快。
码率的计算公式是:文件大小(转成 bit / 时长(秒) /1024 = kbps 即每秒传输千位数
例如一个 1M 的视频,它的时长是 10s ,它的码率等于
 1*1024*1024*8/10/1024 = 819Kbps
码率设置到多少才能达到最好,通过根据个人的经验或参考一些视频网台给出的参考,下图是优酷对码率的要求:

如果要将视频上传到优酷则必须按照上面的要求,如果是自己搭建视频服务器,码率设置不易过大,最终达到的视频清晰度满足业务需求即可。

 

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

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

相关文章

Windows 下安装共享文件夹(一步一步带你创建,亲测有效果)

目录1 需求2 实现1 需求 我们想要在自己的Windows电脑上面安装一个共享文件夹,想让其他电脑连我们的共享文件夹,或者我们需要使用代码,连接这个共享文件夹,所以我们必须先在Windows电脑创建一个共享文件夹 2 实现 首先我们创建…

centos7.9安装harbor-offline-installer-v2.4.1.tgz

1.首先下载安装包 可以去github上搜索下载: GitHub: Let’s build from here GitHub 然后选择版本进行下载,一般从githut上下载速度很慢,我已提前下载好,从csdn上下载会比较快: harbor-offline-installer-v2.4.1.tgz: https:…

聊聊跳表?

什么是跳表 跳表(Skip List)是一种类似于链表的数据结构,其查询、插入、删除的时间复杂度都是O(logn)。 在传统的单链表结构中,查找某个元素需要从链表的头部按顺序遍历,直到找到目标元素为止,查找的时间复…

PowerShell木马免杀利器: Invoke-Obfuscation(过火绒)

Invoke-Obfuscation 简介 Invoke-Obfuscation工具下载地址: https://github.com/danielbohannon/Invoke-Obfuscation Invoke-Obfuscation是一款PowerShell混淆工具,可以将PowerShell脚本加密,使得它的检测和分析变得更加困难。该工具包含多种加密方法&…

HTML实现右下角闪烁弹窗

演示 完整HTML <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head&…

【系列01】java运算符及运算符优先级[附带目录 按需服用]

运算符、三元运算符、位运算符、拓展赋值、运算优先级、自增自减 运算符 java代码优先级多用括号**,多用括号()**不仅方便而且增加可读性 自增自减 a 是先赋值再增加a 是先增加再赋值上面都表示 a a1;自减同理由 public class Demo05 {public static void main(String[] ar…

CSS3 之属性

文章目录calcborderbox-shadowbackground-image垂直渐变水平渐变左上角渐变渐变方向写法组合background-clipbackground-attachmentword-wrap:break-word&#xff1a;允许长单词换行到下一行;word-wrap:word-break&#xff1a;text-shadow3、字体white-space 设置如何处理元素内…

Java设计模式中建造者模式是啥/建造者模式实现细节是什么/工厂模式,抽象工厂与建造者模式之间区别是啥

继续整理记录这段时间来的收获&#xff0c;详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用&#xff01; 4.6 建造者模式 4.6.1 概述 分离部件构造(由Builder来创建)和装配(Director组装)实现构建与装配解耦用户只需指定复杂对象类型就可得到最终对象&#xff0c;不需…

医药行业应用APS生产排产软件的必要性

高级计划与排程APS生产排产软件(advanced planning and scheduling) 是一个立足于整个企业生产活动的计算机系统。利用APS生产排产软件的管理手段和信息&#xff0c;企业可优化其从制定生产产量到管理最终产品的整个生产流程中的各个环节。利用实时、准确的数据&#xff0c;APS…

umi4 多环境配置改变

umi3 多环境我们可以根据脚本配置环境变量&#xff0c;然后配置不同的umirc 或者config 文件&#xff0c;从而达到配置多环境的效果。 问题描述 umi4 发布了&#xff0c;还是按照umi3 的配置了多环境&#xff0c; package.json 配置 了不同环境运行和编译脚本&#xff1a; co…

Netty进阶——粘包与半包(固定长度方式解决粘包问题)

目录一、固定长度方式解决粘包问题&#xff08;代码示例&#xff09;1.1、固定长度方式解决粘包问题的服务端代码示例1.2、固定长度方式解决粘包问题的客户端代码示例1.3、分别启动服务端&#xff0c;客户端&#xff0c;查看服务端结果输出一、固定长度方式解决粘包问题&#x…

一零四六、Spark性能调优

本文分为四个部分&#xff0c;基本涵盖了所有Spark优化的点&#xff0c;面试和实际工作中必备。 《Spark性能优化&#xff1a;开发调优篇》《Spark性能优化&#xff1a;资源调优篇》《Spark性能优化&#xff1a;数据倾斜调优篇》《Spark性能优化&#xff1a;shuffle调优篇》Spa…

如何在C++ 中调用 Python

在一些场景下&#xff0c;C 通过调用脚本语言实现一些功能会比用C实现更加的方便。 这里要介绍的是pybind11&#xff0c;pybind11 借鉴了“前辈”Boost.Python&#xff0c;能够在 C 和 Python 之间自由转换&#xff0c;任意翻译两者的语言要素&#xff0c;比如把 C 的 vector …

0-1背包 完全背包 (模板)

目录 【模板】01背包_牛客题霸_牛客网 描述 输入描述&#xff1a; 输出描述&#xff1a; 【模板】完全背包_牛客题霸_牛客网 描述 输入描述&#xff1a; 输出描述&#xff1a; 【模板】01背包_牛客题霸_牛客网 描述 你有一个背包&#xff0c;最多能容纳的体积…

使用语义分割架构的文档扫描仪 DeepLabV3

0 介绍 地址:https://learnopencv.com/deep-learning-based-document-segmentation-using-semantic-segmentation-deeplabv3-on-custom-dataset/ 文档扫描是一个背景分割问题,可以使用多种方法解决。 它是计算机视觉广泛使用的应用程序之一。 在本文中,我们将文档扫描视为语…

从动态的角度分析DDR的时序结构

从整体上了解了DDR的特性和静态图&#xff0c;包括原理、管脚图等。那么本章就要从动态的角度来分析时序结构&#xff0c;包括read/write的整个过程到数据返回发生了什么。一&#xff0c;DRAM基本组成对于DRAM&#xff0c;其主要由行和列组成&#xff0c;每一个bit中都是由类似…

84、【栈与队列】leetcode ——1047. 删除字符串中的所有相邻重复项:栈+双指针解法(C++版本)

题目描述 原题链接&#xff1a;1047. 删除字符串中的所有相邻重复项 解题思路 一、栈顶匹配重复元素 本题需要删除重复且相邻元素&#xff0c;存入不重复元素。根据相邻特点&#xff0c;可采用栈进行实现。 当栈顶元素和遍历的字符串中的字符相同时&#xff0c;则将其弹栈。…

spring内置验证码kaptcha,baomidou使用详解

引入pom <dependency><groupId>com.baomidou</groupId><artifactId>kaptcha-spring-boot-starter</artifactId><version>1.1.0</version></dependency>application.yml 配置 kaptcha:height: 50width: 200content:length: 5s…

【Linux从入门到放弃】Linux编辑器——vim的使用

&#x1f9d1;‍&#x1f4bb;作者&#xff1a; 情话0.0 &#x1f4dd;专栏&#xff1a;《Linux从入门到放弃》 &#x1f466;个人简介&#xff1a;一名双非编程菜鸟&#xff0c;在这里分享自己的编程学习笔记&#xff0c;欢迎大家的指正与点赞&#xff0c;谢谢&#xff01; L…

TPM知识点集锦

1. 实体类型&#xff08;Entity Types&#xff09; &#xff08;1&#xff09;永久实体&#xff08;Permanent Entities&#xff09; 层级&#xff08;Hierarchies&#xff09;字典攻击锁定机制&#xff08;the dictionary attack lockout mechanism&#xff09;平台配置寄存…