ffmpeg 转码

2021-01-02  本文已影响0人  阳光男孩刚哥哥

ffmpeg 转码使用

下载地址:https://www.ffmpeg.org/download.html

简要

音视频文件本身其实是一个容器(container),如视频常用的容器 AVI、MP4,音频常用容器 MP3、mpeg,
而将音视频转为指定容器即为转码,此时需要进行编码,常用的编码格式 H.264、H.265、MPEG-4、AAC 等

ffmpeg -formats 可查看 ffmpeg 支持的容器种类;ffmpeg -codecs 可查看 ffmpeg 支持的编码

转码命令

一般情况下,使用 ffmpeg 转码参数分为几个部分:

ffmpeg [全局参数(可省略)] [输入文件参数(可省略)] -i [输入文件地址] [输出文件参数(可省略)] [输出文件地址]

如:ffmpeg -i input.avi -b 1500k -c:v libx264 -preset veryslow output.mp4

指定了转码后文件比特率为 1500k,使用的编码格式为 H.264 ,转码速度调至最慢(时间最长,体积最小),转码后容器为 MP4

ffmpeg 常用的命令行参数如下:

转码效率

使用 COU 进行转码时,往往一个核心只能同时转码一个文件,比如一个 6 核 CPU,只能同时转码 6 个文件,且占用率极高,在设计并发转码时需要考虑机器性能的问题。如果机器加装了 GPU,可以通过 GPU 加速转码,转码有着大量的浮点运算,所以使用 GPU 转码时,同一个文件大概能加快 40% 的速度

使用 GPU 转码

由于本人显卡位 N 卡,故只能说下 N 卡 GPU 转码的一些操作方法

  1. 下载 N 卡 CUDA 环境开发包并安装。下载地址:https://developer.nvidia.com/cuda-downloads

  2. 使用命令 ffmpeg -hwaccels 查看支持的硬件加速选项,使用 ffmpeg -codecs | grep cuvid 查看 cuvid 提供的GPU编解码器

Hardware acceleration methods:
cuda
dxva2
qsv
d3d11va
qsv
cuvid
  1. 编写转码命令,使用 -hwaccel 指定加速的硬件(cuvid),此时解码器和编码器都需要由使用相关硬件提供

ffmpeg -hwaccel cuvid -c:v h264_cuvid -i i.mp4 -c:v h264_nvenc -y o.mp4

  1. 突破 N 卡 GPU 转码并发限制,使用 N 卡进行转码时,当并发数量大于 2 时,将出现 OpenEncodeSessionEx failed: out of memory 的错误,此时可通过打补丁的方式突破限制,补丁地址及打补丁方法:https://github.com/keylase/nvidia-patch

其他

ffmepg 除了可以进行音视频的转码外,还可以进行音视频剪辑编辑,如音轨添加、图片水印添加,视频长度剪辑。同时,还可以进行桌面录制,视频推流等,市面上很多视频编辑、桌面录制软件核心都是 ffmpeg,这些如果大家感兴趣的话,可以在之后继续和大家分享

上一篇 下一篇

猜你喜欢

热点阅读