Windows上ffmpeg使用GPU硬件加速多路rtsp转HLS直播流

项目需要接入20多路rtsp转hls视频流,机器的CPU为i9-10900,显卡为P2200。

CPU转码

最开始测试使用脚本:

start ./ffmpeg -i rtsp://<账号>:<密码>@<IP>:554/Streaming/Channels/101 -c:v libx264 -c:a copy -f hls -threads 8 -hls_time 5 -hls_list_size 8 -hls_wrap 8  db1.m3u8
  • -i 输入
  • -c:v libx264 使用h264编码
  • -c:a copy 拷贝所有流
  • -f hls 生成hls流。HTTP Live Streaming,是苹果出的一个基于HTTP的流媒体通信协议
  • -threads 8 以8个线程运行
  • -hls_time 5 设置TS切片时间为5
  • -hls_list_size 8 HLS播放的列表
  • -hls_wrap 8 hls_wrap则表示为最大的TS循环数,也就是每8个一个循环

使用多行start这样的脚本,发现当数量达到5~7路之后,视频质量下降,出现许多涂抹画面,根本没法看。原因是CPU已经满载,所以想支持更多路视频只能去找GPU加速的方法。

GPU加速转码

首先安装CUDA

个人理解的CUDA就是可供开发者调用显卡进行处理运算的通道。通过英伟达官网,下载对应系统、版本的安装程序进行安装。注意,不是所有的英伟达显卡、驱动版本都支持CUDA。

使用编译好的ffmpeg

使用已经编译好的ffmpeg,可以通过:

ffmpeg -decoders

ffmpeg -encoders

这两个命令行可以查看ffmpeg支持的解码器、编码器名称。其中包含“xxx_amf”,“xxx_nvenc”,"xxx_qsv"等就证明可以调用显卡
在这里插入图片描述

使用

start ./ffmpeg -i  rtsp://<账号>:<密码>@<IP>:554/Streaming/Channels/101 -vcodec h264_nvenc -c:a copy -f hls -threads 8 -hls_time 5 -hls_list_size 8 -hls_wrap 8 db1.m3u8

注意,这时-vcodec(与上面的-c:v相同)指定视频解码器为h264_nvenc

实测同时开启21路视频后,视频全部编码正常,CPU占用率极低,显卡3D性能占用月50%~60%

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值