ffmpeg教程及加速视频转码

news2024/11/15 23:28:07

ffmpeg教程及加速视频转码

1、ffmpeg简介:

ffmpeg来自MPEG视频编码标准。

是一套可以用来记录,转换数字音频、视频,并能将其转化为流的开源计算机程序。

可以轻易的实现多种视频格式之间的相互转换。

2、基础知识:

  • 容器、文件(conainer、file)

    即特定格式的多媒体文件,比如MP4、flv、mkv等

  • 媒体流(stream):

    表示时间轴上的一段连续数据,如一段声音数据、一段视频数据或一段字幕数据。

    可以是压缩的,也可以是非压缩的,压缩的数据需要关联特定的编解码器。

  • 数据帧、数据包(frame、packet)

    一个媒体流是由大量的数据帧组成,对于压缩数据,帧对应着编解码器的最小处理单元,分属于不同媒体流的数据帧交错存储于容器之中。

    frame对应压缩前的数据,packet对应压缩后的数据。

  • 编解码器:

    以帧为单位实现压缩数据和原始数据之间的转换。

  • 复用:

    把不同的流按照某种容器的规则放入容器。

  • 解复用:

    把不同的流从某种容器中解析出来。

在这里插入图片描述

在这里插入图片描述

3、码率和帧率:

码率和帧率是视频文件的最重要的基本特征,对于他们的特有设置会决定视频质量。

如果我们知道码率和时长,可以很容易的计算出文件的大小。

帧率:是视频文件中每一秒的帧数。肉眼想看到连续移动图像至少需要15帧。

码率:也叫比特率,是一个确定整体视频、音频质量的参数,秒为单位处理的位数,码率和视频质量成正比,在视频文件中比特率用bps来表达。

4、Windows搭建ffmpeg

1、官网下载编译好的shared库;

在这里插入图片描述

2、将执行文件ffmpeg.exe、ffplay.exe、ffprobe.exe拷贝到C:\Windows目录;

或者将这三个执行文件添加至Path环境变量中,就不需要2、3步骤了。

在这里插入图片描述

3、将相应的动态库拷贝到C:\Windows\SysWOW64日录;注:WOW64(Windows-on-Windows 64-bit)

4、查看是否安装完成:ffmpeg -version

5、ffmpeg、ffplay、ffprobe区别:

  • ffmpeg:超快音视频编码器(类似爱剪辑)
  • ffplay:简单媒体播放器
  • ffprobe:简单多媒体流分析器
6、ffmpeg命令查看:

ffmpeg -h、ffmpeg -h long、ffmpeg -h full

ffplay -h

ffprobe -h

7、ffmpeg处理流程:

先看两条命令:

ffmpeg -i test_1920x1080.mp4 -acodec copy -vcodec libx264 -s 1280x720 test_1280x720.flv
ffmpeg -i test_1920x1080.mp4 -acodec copy -vcodec libx265 -s 1280x720 test_1280x720.mkv

在这里插入图片描述

在这里插入图片描述

5、ffmpeg参数说明:

1、主要参数:

  • -i :设定输入流
  • -f:设定输出格式
  • -ss:开始时间
  • -t:时间长度

2、音频参数:

  • -aframes:设置要输出的音频帧数
  • -b:a:音频码率
  • -ar:设定采样率
  • -ac:设定声音的channel数
  • -acodec:设定声音编解码器,如果用copy表示原始编解码器数据必须被拷贝
  • -an:不处理音频
  • -af:音频过滤器

3、视频参数:

  • -vframes:设置要输出的视频帧数
  • -b:设定视频码率
  • -b:v:视频码率
  • -r:设定帧速度
  • -s:设定画面的宽与高
  • -vn 不处理视频
  • -aspect aspect 设置纵横比4:3,或者16:9
  • -vcodec:设定视频编解码器,如果用copy表示原始编解码器数据必须被拷贝
  • -vf 视频过滤器

在这里插入图片描述

强制格式:-vcodec libx264

6、IPTV影片转码详解:

ffmpeg -i /home/mysftp/mydrive/4K/dsls/1/1.ts -color_primaries bt2020 -color_trc smpte2084 -colorspace bt2020nc -color_range tv -pix_fmt yuv420p -c:v libx264 -preset ultrafast -b:v 35500k -minrate 35500k -bufsize 35500k -maxrate 40500k -nal-hrd cbr -s 3840*2160 -y /home/mysftp/mydrive/4K/dsls/1/1_1724639135824_transcoding.mp4
  1. ffmpeg: 调用 FFmpeg 工具,开始进行视频处理。
  2. -i /home/mysftp/mydrive/4K/dsls/1/1.ts: 指定输入文件的位置和名称。在这里,输入文件是 /home/mysftp/mydrive/4K/dsls/1/1.ts
  3. -color_primaries bt2020: 设置颜色原点为 BT.2020。BT.2020 是一种广色域标准,常用于 4K 和 8K 视频。
  4. -color_trc smpte2084: 设置色彩传递特性(色调映射曲线)为 SMPTE 2084。SMPTE 2084 又称为 PQ(Perceptual Quantizer),用于 HDR 视频的色彩处理。
  5. -colorspace bt2020nc: 设置颜色空间为 BT.2020 non-constant luminance(非恒定亮度)。这是 BT.2020 标准的一种变体,主要用于 HDR 内容。
  6. -color_range tv: 设置色彩范围为电视标准(TV),通常表示色彩范围在 16-235 之间。这与 PC 标准(PC)的 0-255 色彩范围不同。
  7. -pix_fmt yuv420p: 指定像素格式为 YUV 4:2:0 平面。YUV 4:2:0 是一种常见的视频压缩格式,具有较低的色彩分辨率,但能够有效减少文件大小。
  8. -c:v libx264: 设置视频编码器为 libx264。这是一个用于 H.264/AVC 编码的开源库,广泛用于视频压缩。
  9. -preset ultrafast: 设置编码预设为 ultrafastultrafast 是 FFmpeg 提供的一个编码预设选项,速度最快,但压缩效率较低。这通常用于需要快速编码的场景。
  10. -b:v 35500k: 设置视频比特率为 35500 kbps(35.5 Mbps)。这是视频编码的目标比特率,影响视频的质量和文件大小。
  11. -minrate 35500k: 设置最小比特率为 35500 kbps。确保视频编码过程中不会低于此比特率,以避免质量下降。
  12. -bufsize 35500k: 设置缓冲区大小为 35500 kbps。这影响码率控制,特别是在动态场景中,以平滑比特率的波动。
  13. -maxrate 40500k: 设置最大比特率为 40500 kbps(40.5 Mbps)。此设置允许视频编码在瞬间使用更高的比特率,以提高高复杂度场景的质量。
  14. -nal-hrd cbr: 设置 NAL(网络抽象层)单元的码率控制模式为 CBR(恒定比特率)。这确保了编码过程中输出的比特率保持稳定。
  15. -s 3840\*2160: 设置输出视频的分辨率为 3840x2160,即 4K 分辨率。
  16. -y: 强制覆盖输出文件。如果输出文件已经存在,使用此选项会自动覆盖它。
  17. /home/mysftp/mydrive/4K/dsls/1/1_1724639135824_transcoding.mp4: 指定输出文件的位置和名称。在这里,输出文件将保存为 /home/mysftp/mydrive/4K/dsls/1/1_1724639135824_transcoding.mp4

如何提升转码速度?

1. 使用更快的编码预设

  • 当前设置: -preset ultrafast
  • 建议: 如果使用 -preset ultrafast 仍然不够快,你可以尝试更高效的硬件加速方案(例如使用 NVIDIA 的 h264_nvenc 编码器)。如果你愿意接受一些质量上的折中,可以尝试其他较快的预设如 superfastveryfast

2. 硬件加速

  • 使用 GPU 编码器:

    • 对于 NVIDIA GPU 用户,可以使用 -c:v h264_nvenc 替代 -c:v libx264,它利用 GPU 进行编码,加速转码过程。

    • 示例命令:

      ffmpeg -i /home/mysftp/mydrive/4K/dsls/1/1.ts -color_primaries bt2020 -color_trc smpte2084 -colorspace bt2020nc -color_range tv -pix_fmt yuv420p -c:v h264_nvenc -preset fast -b:v 35500k -minrate 35500k -bufsize 35500k -maxrate 40500k -nal-hrd cbr -s 3840x2160 -y /home/mysftp/mydrive/4K/dsls/1/1_1724639135824_transcoding.mp4
      
    • 对于 AMD GPU 用户,可以使用 -c:v h264_amf

3. 调整比特率设置

  • 目标比特率: -b:v 35500k
  • 建议: 适当降低比特率可以减小编码负担,从而加快转码速度。如果视频质量允许,可以尝试降低比特率,但需权衡质量和速度。

4. 分辨率和帧率调整

  • 当前分辨率: -s 3840x2160
  • 建议: 如果不一定需要保持 4K 分辨率,可以尝试降低输出分辨率。例如,720p 或 1080p 可以显著提高转码速度。

5. 使用多线程

  • 当前设置: 默认情况下,ffmpeg 会自动使用多个线程,但可以手动调整线程数以优化性能。

  • 示例:

    设置线程数为 8

    ffmpeg -i /home/mysftp/mydrive/4K/dsls/1/1.ts -color_primaries bt2020 -color_trc smpte2084 -colorspace bt2020nc -color_range tv -pix_fmt yuv420p -c:v libx264 -preset ultrafast -b:v 35500k -minrate 35500k -bufsize 35500k -maxrate 40500k -nal-hrd cbr -s 3840x2160 -threads 8 -y /home/mysftp/mydrive/4K/dsls/1/1_1724639135824_transcoding.mp4
    

6. 关闭不必要的功能

  • 调整选项: 确保只使用必需的编码选项。避免使用冗余或不必要的过滤器和设置。

7. 优化硬盘和内存

  • 磁盘 IO: 确保你的硬盘速度足够快。使用 SSD 而不是 HDD 可以显著提高速度。
  • 内存: 确保系统有足够的内存来处理转码任务,避免因内存不足导致的性能瓶颈。

8. 减少视频处理操作

  • 避免复杂滤镜: 如果没有应用滤镜或处理(如去噪、锐化等),转码速度会更快。

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

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

相关文章

2d像素游戏基本架构

目录 2D像素游戏的基本架构通常包括以下几个关键部分 Unity和虚幻引擎在2D游戏开发中的性能比较 Unity的2D工具设计复杂的地图和场景 创建和管理地图资源: 使用TileMap工具: 构建复杂场景: 添加碰撞体和物理效果: 优化和…

密码访问单页自定义跳转页面源码

源码介绍 密码访问单页自定义跳转页面源码,密码访问单页自定义跳转页面,修改了的密码访问单页,添加了js自定义密码跳转页面。需要正确输入密码才能跳转目标网址。 源码截图 源码下载 密码访问单页自定义跳转页面源码

区分wps还是office创建的文档,word、ppt和excel

手动区分 文档->右键->属性 代码实现 namespace WpsAndOfficeDifferent {internal class Program{static void Main(string[] args){string root System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase ?? "";#region 区分office和wps创建…

SELF-INSTRUCT: Aligning Language Modelswith Self-Generated Instructions 学习

指令微调就是要训练模型执行用户的要求的能力。 文章首先说“指令微调”数据集经常是人工生成,有数量少等缺点。文章提供了一个让语言模型自己生成指令微调数据,自己学习的方法。首先会让一个语言模型自己生成要求,输入和输出,然…

【SpringBoot】电脑商城-09-默认收获地址和删除收货地址

默认收货地址 1 默认收货地址-持久层 1.1 规划需要执行的SQL语句 1.将某用户的所有收货地址设置为非默认地址(是否默认:0-不默认,1-默认)。 update t_address set is_default0 where uid?2.将某用户指定的收货地址设置为默认…

108页PPT分享:华为流程体系及实施方法最佳实践

PPT下载链接见文末~ 华为的流程体系、流程框架及实施方法是一个复杂而精细的系统,旨在确保公司运作的高效性和竞争力。以下是对这些方面的详细描述: 一、华为的流程体系 华为的流程体系是一套全面的管理体系,它涵盖了企业所有的活动&#…

玩转云服务:Oracle Cloud甲骨文永久免费云主机配置指南(续)

前段时间,和大家分享了白嫖Oracle Cloud的云服务器: 玩转云服务:Oracle Cloud甲骨文永久免费云服务器注册及配置指南。 新注册的小伙伴,可以在 30 天内,利用 300 美元免费储值,任性使用所有 Oracle Cloud …

【unity实战】使用新版输入系统Input System+Rigidbody实现第三人称人物控制器

最终效果 前言 使用CharacterController实现3d角色控制器,之前已经做过很多了: 【unity小技巧】unity最完美的CharacterController 3d角色控制器,实现移动、跳跃、下蹲、奔跑、上下坡、物理碰撞效果,复制粘贴即用 【unity实战】C…

InternLM2.5 部署到安卓手机上

环境准备 1.1 安装rust export RUSTUP_DIST_SERVERhttps://mirrors.ustc.edu.cn/rust-static export RUSTUP_UPDATE_ROOThttps://mirrors.ustc.edu.cn/rust-static/rustup curl --proto https --tlsv1.2 -sSf https://mirrors.ustc.edu.cn/misc/rustup-install.sh | sh1.2 安…

PostgreSQL 服务启动不了问题

如图,遇到这个问题,需要给文件夹打开权限即可。 先给主文件夹postgreSQL打开所有权限,点击属性->安全那里,所有修改啥的权限都打开。再给里面的data文件夹打开权限。

开源搜索引擎之Solr

Apache Solr 是一个开源的企业级搜索平台,构建在 Apache Lucene 之上,提供了强大的全文搜索、实时索引和分布式搜索能力。Solr 被广泛用于构建高性能的搜索应用程序,支持从简单的搜索引擎到复杂的数据分析平台等多种场景。以下是对 Apache So…

1panle搭建的maxkb增加本地向量模型

首先下载模型,比如m3e-large,并上传到/opt/maxkb/model/local_embedding/ 目录,没有就创建 目录如下: 然后修改1panel的容器信息,点击右边的编辑: 在下方的挂在目录处点击添加: 在两个框都输入…

ISIS路由渗透

/ 实验介绍: / 原理概述 在IS-IS网络中,所有的Level-2和Level-1-2路由器构成了一个连续的骨干区域。Level-1区域必须且只能与骨干区域相连,不同的Level-1区域之间不能直接相连。Level-1区域内的路由信息会通过Level-1-2路由器通报给Level-2区域&#x…

EmguCV学习笔记 C# 8.3 Grabcut法

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。 教程VB.net版本请访问…

爬取央视热榜并存储到MongoDB

1. 环境准备 在开始之前,确保你已经安装了以下Python库: pip install requests pymongo2. 爬取网页内容 首先,我们需要爬取央视热榜的网页内容。通过requests.get()方法,我们可以获取网页的HTML内容,并通过re.finda…

KEYSIGHT是德 Infiniium EXR系列 示波器

Infiniium EXR系列 示波器 苏州新利通 引言 概述 Infiniium EXR系列 出色的信号完整性让信号纤毫毕现 该系列的所有型号都集成了一个 10 位 ADC,并且在所有通道上同时提供 16 GSa/s 的采样率。高分辨率 ADC 的效用取决于示波器的前端底噪是否足够低以提供与之匹…

Nvidia主导AI推理竞赛,但新兴对手纷纷崭露头角

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

健康早知道小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,医生管理,健康信息管理,健康评估管理,在线留言,系统管理 微信端账号功能包括:系统首页,医学知识&#xff0…

【网络】数据链路层协议——以太网,ARP协议

1.局域网转发 (1)IP提供了将数据包跨网络发送的能力,这种能力实际上是通过子网划分目的ip查询节点的路由表来实现的,但实际上数据包要先能够在局域网内部进行转发到目的主机,只有有了这个能力之后,数据包才…

【问题分析】放大镜影响权限弹窗接收事件【Android14】

1 问题描述 如图,打开google的放大镜功能,然后将该放大镜和权限弹窗部分重合,会发现权限弹窗的按钮如“Allow”,点击无响应。 顺便一提,如果放大镜和权限弹窗完全重合或者完全不重合,是没问题的。 2 问题…