一、配置直播服务
这里以腾讯云的直播服务举例
腾讯云的注册过程就不描述了,注册个人、企业账号都可以
1.1 注册账号后要在腾讯云中开通“云直播”服务
1.2 然后购买流量包
作为实验,先够买个100G的流量包就够了
二、设置推流地址
推流地址即从客户端将视频流推送上云的目标地址
通常rtmp格式推流的地址格式为
rtmp://livepush.[domain]/[videoname]
“[]”部分为可以自定义的域名和视频名
一般的直播云服务都允许你绑定自己的域名来指向服务商给你提供的的推流地址
在腾讯云直播中通过“域名管理”来设置推流地址
2.1 绑定自定义域名
你需要添加两个域名
一个livepush.xxx用于推流
一个liveplay.xxx用于播放
刚添加完后如下图
红框之中的地址就是直播云为你分配的真实推流地址(或播放地址)
红色感叹号表示你还没有将域名解析指向腾讯给你生成的推流地址(或播放地址)
现在你需要去你的域名服务商哪里添加两条域名解析
2.2 去域名服务商给域名添加两条CNAME解析
我的域名在阿里云,我在对应的域名下增加了两条CNAME解析,目标地址就是上一步红框中给出的真实推流域名
2.3 查看解析生效后的效果
域名解析需要一定生效时间,多则半小时,短则1分钟
生效后你再进入腾讯直播的“域名管理”页面中,查看你绑定的域名状态
如果如下图红框中,cname列的图标编程绿色对勾,则说明绑定生效了
接下来你需要生成推流地址,因为每一个直播都需要一个对应的推流地址
2.4 生成推流地址
进入“地址生成器”页面
生成最终的推流地址
2.5 生成播放地址
操作方式与上面差不多
需要注意的是,在上一步“推流地址”中指定的AppName与StreamName要与生成“播放地址”的时候指定的相同,否则就不被视为同一个视频流
好,现在我们有了推流地址和播放地址
为了描述统一,这里假定为一对已经设置好的地址
推流: rtmp://livepush.walkye.com/live/demo3?txSecret=a8039dcb6e1f4e9f735980b7b3a968b6&txTime=5F9F7171;
播放: rtmp://liveplay.walkye.com/live/demo3
接下来我们进行最后一步,在树莓派端采集视频并推流
三、获取树莓派视频输入流并推送给本地nginx
上一节我们已经安装了ffmpeg
使用如下命令行可以获取摄像头视频流,并指定格式和视频大小推送给本地nginx
本地nginx根据配置文件中的内容,将视频流推送给远端的直播推流地址
在执行命令之前,我们先检查下nginx中配置的推流地址是否与你生成的地址相符,如果不相符请先修改配置然后重启nginx
重启nginx之后不报错则说明推流地址正确且可以访问,接下来使用ffmpeg命令采集视频流并推送
执行如下命令
ffmpeg -framerate 24 -video_size 640x480 -i /dev/video0 -vcodec h264 -f flv rtmp://127.0.0.1:1935/hls
命令行参数释义
-framerate 帧率,即每秒多少帧画面,帧数越高耗费的流量越多,画面越流畅 当然帧数也会因为网络情况不好而有可能出现掉帧的情况,请根据你的宽带容量酌情设置
-video_size 视频尺寸
-i 视频流源头,这里指定了usb的驱动符dev/video0, 具体设备的路径请根据你的实际情况给出
-vcodec 编码方式,本例指定为h264,即h264软编码
-f 格式,本例指定为flv,支持rtmp推流,播放端支持直接访问xxx.flv 或者 rtmp://xxx
最后一个参数rtmp://127.0.0.1:1936/hls 即指定获取的视频流临的推送地址 本例是先推给本地的nginx,然后由nginx的rtmp模块进行编码之后再推送给远端 具体参考上一篇“打造树莓派直播盒子(一)”的内容
执行完后出现如下结果,则说明树莓派已经开始将摄像头视频流推向推流服务了
而此时再去腾讯云-直播服务中查看正在直播的流也可以看到
最后!使用你定义的播放地址查看直播吧
可以直接在腾讯直播流管理中预览,也可以使用VLC之类流媒体播放器,填上地址查看直播效果