环境与材料
- 树莓派4 + 摄像头(开启状态)
- node、git 环境
- 安装 ffmpeg
- ssh工具 (我用的是xshell)
- clone 代码到树莓派:jsmpeg
开启服务器
jsmpeg 为我们提供了一个简易的node服务器,运行以下命令开启
cd jsmpeg
node websocket-relay.js 123 &
// 其中123是密钥,可以自行设置
// & 后台运行
开启视频传输
raspivid -rot 180 -t 0 -w 1280 -h 720 -fps 20 -o - | ffmpeg -i - -vcodec copy -f mpegts -codec:v mpeg1video -s 1280x720 -b:v 150k -r 20 -bf 0 -ac 1 -b:a 128k http://localhost:8081/123 &>/dev/null &
下面开始解释上面的一大长串命令
- raspivid: 树莓派摄像头视频命令行工具,用于拍摄视频 文档在此
- -rot 180 我的摄像头物理上是倒置的,这个命令用于将摄像头旋转180°
- -t 0 树莓派摄像头拍摄和关闭的延时,设置为0
- -w -h -fps 你懂的
- -o - 输出视频
- | 管道符,接受raspivid输出的视频(好像是h264格式的,这个格式需要转码一下)
- ffmpeg:强大的命令行视频编辑软件 文档在此
- -i - 从前面接受视频输入
- -vcodec copy 复制视频
- -f mpegts 转换文件格式为mpegts
- -codec:v mpeg1video jsmpeg只支持使用MPEG1视频编解码器和MP2音频编解码器播放mpegts容器
- -s 1280x720 视频尺寸size
- -b:v 150k 视频输入比特率kbit/s
- -r 20 帧率fps
- -ac 0 Set the number of audio channels
- -bf 0 B帧数目
- -b:a 128k 音频输出比特率kbit/s(如果你的树莓派是个聋子,可以不要)
- http://localhost:8081/123 对接上上面启动的ffmpeg给你的简易服务器,其中123是你刚才设置的密码
- &>/dev/null 运行后会有很多连续的输出,甚至会影响我们键入exit命令,所以就把输出全部扔掉了
- & 后台运行
测试一下
- 现在用电脑(win10)运行ffmpeg给你的html文件,里面的路径改为你树莓派的路径,看看是不是有画面了?
- 记得用exit推出xshell, 我之前都直接×掉,后果是你刚才运行的程序会终止