Windows上ffmpeg使用GPU硬件加速多路rtsp转HLS直播流 您所在的位置:网站首页 cpu和gpu解码 Windows上ffmpeg使用GPU硬件加速多路rtsp转HLS直播流

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

2023-07-21 04:15| 来源: 网络整理| 查看: 265

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

CPU转码

最开始测试使用脚本:

start ./ffmpeg -i rtsp://:@: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://:@: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%



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有