最近工作中用到ffmpeg,刚好趁这个机会跟大家分享下,视频流的转码推流简单方案。这个方案如果不是特别高的并发播放量,还是够用的。当然如果出现高并发播放量,也是可以对模块进行扩容的,这里是分享的方案是分模块实现整个服务。
前言
这是一个简单的系列分享,抽空分阶段分享给大家。
一、整个服务的流程图
这是一个大致的交互流程图,整个服务分成3个模块,先说下各模块的作用。
videoAgent:负责与业务系统交互,响应业务系统的转码请求拉流请求。负责对ffmpeg转码参数的校验、调用shell执行命令、返回新视频流地址(播放器可播放的流地址)
ffmpeg:安装在服务器上,负责执行转码。
nginx:配置推流,负责videoAgent转码的新地址推流。
以上就是基本方案,这个方案可以有几个变种,适应多种业务环境。下面举例几个:
内网流转外网推流:videoAgent部署在内网,与ffmpeg与nginx所在服务器可与之交互。videoAgent增加内外网映射能力。
高负载方案:videoAgent集群,ffmpeg、nginx多机集群部署。增加注册中心,videoAgent增加调度能力,分摊转码推流压力。
二、使用步骤
1.ffmpeg安装
这个没啥好说的,也没有什么特殊配置。这里就分享一下CSDN博友分享的最新安装方法:
https://blog.csdn.net/qq_43627076/article/details/118584645
不够详细的,可以再自行问G大人或度娘。
2.验证ffmpeg安装
出现版本信息就表示安装完成了,注意,需要将ffmpeg的bin目录配置到环境变量path里(centos最好也是,不然命令要带路径,也可能出现其他异常)
3.验证ffmpeg转码
转码后的flv播放效果
命令:
ffmpeg -i “I:\个人\慧联无限\2021\2021103003.mp4” -c:v libx264 -ar 22050 -crf 28 “I:\个人\慧联无限\2021\测试转码.flv”
参数详解自行见ffmpeg文档。