ffmpeg音视频加速

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ffmpeg音视频加速相关的知识,希望对你有一定的参考价值。

参考技术A 修改视频的pts,dts

视频变为2倍速

注意:

简单的方法是调整音频采样率,但是这种方法会改变音色,一般采用通过对原音进行冲采样,差值等方法

注意:

Ubuntu20配置ffmpeg进行gpu硬件加速视频编码记录

Ubuntu20配置ffmpeg进行gpu硬件加速视频编码记录

https://blog.csdn.net/qq_36383272/article/details/116304060?spm=1001.2014.3001.5501
https://blog.csdn.net/qq_36383272/article/details/118569908

现有环境

1.Ubuntu:20
2.显卡驱动:470
3.Cuda:11.1+cudnn

1.获取ffmpeg源码

git clone https://git.ffmpeg.org/ffmpeg.git

注:这个是最新的源码,对于较老的驱动需要自行去官网匹配。

2.安装aac、h264、h265库

sudo apt-get install libfdk-aac-dev libx264-dev libx265-dev

注:这个要在编译ffmpeg之前安装

3.安装ffnvcodec

git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
cd nv-codec-headers
make
sudo make install

4.编译ffmpeg

终端进入ffmpeg文件夹,输入如下指令进行配置
静态配置:

./configure --prefix="/usr/local" --pkg-config-flags="--static"  --disable-asm --enable-gpl --enable-libx264 --enable-libx265 --enable-nonfree --enable-libfdk-aac --enable-ffplay

动态配置的指令:

./configure --prefix="/usr/local" --enable-shared --disable-static --disable-asm --enable-gpl --enable-libx264 --enable-libx265 --enable-nonfree --enable-libfdk-aac --enable-ffplay

选一个就可以。
在config后会输出

遇到:License: nonfree and unredistributable以及后面的东西,可以直接下一步。
接下来编译安装

make -j16
sudo make install

5.验证

ffmpeg -codecs | grep nv


这样就成功了,接下来进行测试。

6.测试

1.下载测试视频
本次使用原win7中的自带视频,Wildlife.wmv和Wildlife.yuv
链接: https://pan.baidu.com/s/1cmZy0sfyklJgBIcxQLkxmg 提取码: bw6k
2.测试
cpu测试指令

./ffmpeg -s 1280x720 -i Wildlife.yuv -c:v libx265 -c:a aac output.mp4

效果

Gpu测试指令

./ffmpeg -s 1280x720 -i Wildlife.yuv -c:v h264_nvenc -c:a aac output.mp4


cpu帧率fps=64.5
gpu帧率fps=806

7.python调用代码

import threading
import os
import time
from datetime import datetime

def thread_func(num): 
 os.system('/home/cj/work/gpu_ffmpeg/ffmpeg/ffmpeg -i /home/cj/work/video_gpu/test.avi -c:v h264_nvenc -b:v 5M ml%s.mp4 >>video_output.log 2>&1' % num)
 print('num=', num)

def many_thread(num):
 threads = []
 for i in range(num):
     t = threading.Thread(target=thread_func, args=(i,))
     threads.append(t)
 for t in threads:
     t.start()


if __name__ == '__main__':
 many_thread(1)

最后一行是并发数设置,这个需要和显卡性能匹配,查看网址为:
https://developer.nvidia.com/video-encode-and-decode-gpu-support-matrix-new

以上是关于ffmpeg音视频加速的主要内容,如果未能解决你的问题,请参考以下文章

FFmpeg 硬件加速方案概览 (下)

Ubuntu20配置ffmpeg进行gpu硬件加速视频编码记录

从 FFmpeg 性能加速到端云一体媒体系统优化

从 FFmpeg 性能加速到端云一体媒体系统优化

FFmpeg之Intel平台使用硬件加速

回复@吾爱林有关用ffmpeg加速视频和改变帧率测试