电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
文章
一条命令实现树莓派摄像头直播推流哔哩哔哩
分 享
扫描二维码分享
一条命令实现树莓派摄像头直播推流哔哩哔哩
树莓派
直播
推流
xukejing
关注
发布时间: 2020-12-03
丨
阅读: 9792
# 1 背景介绍 昨天,有师弟问我怎么实时采集视频并推流到直播平台,我告诉他这个很简单,于是给他推荐了一块创客神器小电脑——树莓派,讲了半个小时Raspbian Linux入门操作,然后让他先自己尝试摸索一下,晚上我要找他讨论。 ![](https://cf01.ickimg.com/bbsimages/202012/fe3f55dae44b36550ffbea17876d0a22.jpg) 晚上,他过来说刚看完知乎大牛关于《树莓派FFmpeg-斗鱼直播推流》的教程。知乎大牛的操作实在是太高端了!先配置编译环境,再H264解码器编译,然后FFmpeg编译,视频格式转换。师弟表示他花了一下午时间,已经学会了FFmpeg的编译和安装,感觉一天过得非常充实。 然后我告诉了他一条命令,半分钟不到就把ffmpeg装完了。导致他心态直接崩了,几乎要从入门到放弃。那条命令就是: ```shell apt-get install ffmpeg ``` # 2 原理 电子芯巴客的群友Robe已经发过一篇关于直播服务器搭建和直播推流的文章[《直播开进实验室,全天候提升工作效率》](https://www.icxbk.com/article/detail?aid=1477 "《直播开进实验室,全天候提升工作效率》") 。对于我们今天树莓派推流哔哩哔哩直播,今天主要就是用到FFMPEG推流这个技术。 我们先引用一下Robe在NanoPC-T4推流时候用到的命令脚本 ```shell ffmpeg –re –I /dev/video10 –f flv \ rtmp://server_ip:1935/robe/stream ``` 其中,dev video10 是要被推送的视频源。 下面这个rtmp什么什么的,是服务器的地址。 ```shell rtmp://server_ip:1935/robe/stream ``` 那么,怎么把树莓派摄像头视频流推送给哔哩哔哩直播呢?原理也是一样的。只要把视频源和服务器地址替换一下就可以了,**分两步**。 **第1步**,用raspivid采集视频。 树莓派采集视频可以用内置的raspivid命令,非常省处理器资源。 **第2步**,用ffmpeg把raspivid采集的视频推流。 FFmpeg推流的视频可以直接用raspivid的输出,然后视频编码选项vcode使用copy模式,即不重复编码,节省处理器资源。 下图是实际运行时候的资源监视器视图,可以看到处理器使用率小于10%,内存占用不到200兆。 ![](https://cf01.ickimg.com/bbsimages/202012/243f2ae21e46962e4f61e190a6b42332.jpg) # 3 准备工作 树莓派把CSI摄像头插上,并启用CSI摄像头。连上网,然后把ffmpeg装上,这一步用树莓派的软件源来装,别浪费时间重复造车轮了。 ffmpeg安装就一句话。 ```shell apt-get install ffmpeg ``` 在哔哩哔哩站点注册用户并完成实名认证,开启直播房间。下图是在哔哩哔哩网页上操作。 ![](https://cf01.ickimg.com/bbsimages/202012/301ac677328608263ba012094f9650da.jpg) 复制一下rtmp地址和直播码,并组合成完整的推流地址,具体格式如下: ```shell rtmp://live-push.bilivideo.com/live-bvc/ ?streamname=live_xxx_xxx&key=xxx&schedule=rtmp ``` 上面的xxx请改成你具体的直播码里的值。 在树莓派方便的目录里放入一个脚本,名字随便,比如3.sh。内容如下(注意把xxx改成你实际的哔哩哔哩直播推流地址) ```shell sudo raspivid -o - -t 0 -w 1280 -h 720 -fps 30 -b 4000000 -g 50 | \ ffmpeg -f h264 -i - -vcodec copy -bufsize 4000000 -an -f flv \ "rtmp://live-push.bilivideo.com/live-bvc/\ ?streamname=live_xxx_xxx&key=xxx&schedule=rtmp" ``` 给个执行权限 ```shell chmod 777 3.sh ``` # 4 直播操作 下面见证奇迹吧,一句命令: ```shell ./3.sh ``` 开始推流以后,终端上会显示如下调试信息。帧率和码率以实际设置为准 ![](https://cf01.ickimg.com/bbsimages/202012/f02ac926f6335d1f27ad7d5ede7f0b9d.jpg) 打开你自己的哔哩哔哩直播室,应该也能看到直播画面了。 ![](https://cf01.ickimg.com/bbsimages/202012/79b4ba9c05d93dd1206ea1e92ffbfe3f.jpg) # 5 已知的问题 1、电脑端用浏览器播放哔哩哔哩直播的延迟时间约5~10秒,减小帧率到10 FPS可以把延迟降低到3秒,但视频会变幻灯片。实时性和流畅度需要取舍一下。 2、安卓的哔哩哔哩APP的延迟稍大,大约是电脑端延迟+10秒。 3、在哔哩哔哩网站上播放直播会越放延迟越大,最后甚至延迟超过30秒,这时候只要重新刷新浏览器就可以恢复。
原创作品,未经权利人授权禁止转载。详情见
转载须知
。
举报文章
点赞
(
3
)
xukejing
擅长:其他应用
关注
评论
(4)
登录后可评论,请
登录
或
注册
xbk_977397
119
天前...
ffmpeg推流rtsp的命令咋弄啊?或者说ffmpeg -f h264 -i - -vcodec copy -bufsize 4000000 -an -f flv \这条指令怎么看懂
0
回复
发布
xukejing
回复
xbk_977397
97
天前...
完整命令是rtmp://live-push.bilivideo.com/live-bvc/?streamname=live_xxx_xxx&key=xxx&schedule=rtmp,命令长可以用右斜杠分行
0
回复
发布
e3c132caec900d25
143
天前...
11111111111111
0
回复
发布
7943603
124
天前...
牛牛牛牛
0
回复
发布
相关文章推荐
MK-米客方德推出工业级存储卡
Beetle ESP32 C3 蓝牙数据收发
Beetle ESP32 C3 wifi联网获取实时天气信息
开箱测评Beetle ESP32-C3 (RISC-V芯片)模块
正点原子数控电源DP100测评
DP100试用评测-----开箱+初体验
Beetle ESP32 C3环境搭建
【花雕体验】16 使用Beetle ESP32 C3控制8X32位WS2812硬屏之二
X
你的打赏是对原创作者最大的认可
请选择打赏IC币的数量,一经提交无法退回 !
100IC币
500IC币
1000IC币
自定义
IC币
确定
X
提交成功 ! 谢谢您的支持
返回
我要举报该内容理由
×
广告及垃圾信息
抄袭或未经授权
其它举报理由
请输入您举报的理由(50字以内)
取消
提交