本文旨在香橙派板子上实现视频直播、抓拍、定时拍、比对图片
用到的技术栈:ngroke(反向代理)、ffmpeg(视频推流、解码)、flask(python web框架)、HLS等等
1、下载Raspbian安装包地址
http://www.orangepi.cn/downloadresourcescn/orangepipc/oragepipc_a01a2822c14b644d4931fb919e.html
2、准备TF卡及安装镜像
参照:http://www.orangepi.cn/quickstartcn/startcn_2e17631567a387efd2a3d252fa79.html
3、启动系统
通过hdmi转vga线来连接显示器,usb口接usb hub来分别接入键盘和鼠标。
默认用户名密码为:root 密码:orangepi,
修改Raspbian默认启动为命令行模式
修改文件/etc/inittab
这里将id:2:initdefault:修改为id:3:initdefault:
vi /etc/X11/default-display-manager
#输入false 然后Esc,保存,然后reboot
:wq
reboot
再次启动后系统即是命令行模式
修改ip地址为192.168.1.88
备份原来的网卡配置文件
cp /etc/network/interfaces /etc/network/interfacesbak
vi /etc/network/interfaces
填入下边内容
auto lo
#开机自动连接网络
auto eth0
iface lo inet loopback
allow-hotplug eth0
#static表示使用固定ip,dhcp表述使用动态ip
iface eth0 inet static
#设置ip地址
address 192.168.1.88
netmask 255.255.255.0
gateway 192.168.1.1
保存,然后重启网络
service networking restart
至此及可以新的ip已经生效,但这个时候老的ip还依然能用,重启系统后旧ip就不能用了
4、扩展SD卡剩余空间
df -lh
查看磁盘空间发现不对,还有一部分剩余的容量没有使用
解决:
1、查看第二分区的起始地址,后面会用到
cat /sys/block/mmcblk0/mmcblk0p2/start
2、
sudo fdisk /dev/mmcblk0 #使用fdisk操作磁盘
Command (m for help): d #d,删除分区
Partition number (1-4): 2 # 2,删除第二分区
Command (m for help): n #创建一个新分区
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
Partition number (1-4, default 2): 2
First sector (2048-62333951, default 2048): 124928
Last sector, +sectors or +size{K,M,G} (124928-62333951, default 62333951):
Using default value 62333951
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
reboot
重启完成之后,此时查询也还是没有变化的,还需要如下命令
sudo resize2fs /dev/mmcblk0p2
df -lh
再次查看磁盘已经识别出来了剩余空间
5、安装nodejs
下载最新版本的nodejs(v4.8.6)
wget https://nodejs.org/dist/v4.8.6/node-v4.8.6-linux-armv7l.tar.xz
cd node-v4.8.6-linux-armv7l/bin
ln -s /root/software/node-v4.8.6-linux-armv7l/bin/node /usr/local/bin/node
ln -s /root/software/node-v4.8.6-linux-armv7l/bin/npm /usr/local/bin/npm
npm -g install http-server
ln -s /root/software/node-v4.8.6-linux-armv7l/bin/http-server /usr/local/bin/http-server
npm install -g pm2 #安装pm2启动nodejs守护进程
ln -s /root/software/node-v4.8.6-linux-armv7l/bin/pm2 /usr/local/bin/pm2
6、安装ffmpeg
修改国内镜像
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo cp /etc/apt/sources.list.d/raspi.list /etc/apt/sources.list.d/raspi.list.bak
编辑内容如下
注意如果/etc/apt/sources.list.d/raspi.list国内镜像不能用404 就不要改动这个文件了
vi /etc/apt/sources.list #修改Raspbian的软件源,内容如下
#deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi
deb http://mirrors.aliyun.com/raspbian/raspbian/ wheezy main non-free contrib
deb-src http://mirrors.aliyun.com/raspbian/raspbian/ wheezy main non-free contrib
vi /etc/apt/sources.list.d/raspi.list #树莓派的软件源 ,内容如下(阿里没有对应的镜像源,所以采用中科大的源)
#deb http://archive.raspberrypi.org/debian/ wheezy main
deb http://mirrors.ustc.edu.cn/archive.raspberrypi.org/ wheezy main
安装ffmpeg
方法一(推荐,可安装最新版ffmpeg)
# 先删除已经存在的依赖,然后更新系统重新安装依赖包
sudo apt-get remove --purge libmp3lame-dev libtool libssl-dev libaacplus-* libx264 libvpx librtmp ffmpeg
sudo apt-get update; sudo apt-get upgrade; sudo apt-get install libmp3lame-dev; sudo apt-get install -y libopus-dev; sudo apt-get install autoconf; sudo apt-get install libtool; sudo apt-get install checkinstall; sudo apt-get install libssl-dev
# 安装h264编码器
mkdir ~/src
cd ~/src
git clone git://git.videolan.org/x264
cd x264
./configure --host=arm-unknown-linux-gnueabi --enable-static --disable-opencl
make && make install
# install ffmpeg
cd /usr/src
git clone git://source.ffmpeg.org/ffmpeg.git
cd ffmpeg
sudo ./configure --arch=armel --target-os=linux --enable-gpl --enable-libx264 --enable-nonfree
make # make 时间很长大约2个多小时
sudo make install
查看版本
ffmpeg -version
方法二
sudo apt-get update
sudo apt-get install deb-multimedia-keyring
sudo apt-get update
sudo apt-get install ffmpeg
7、安装jsmpeg
git clone https://github.com/phoboslab/jsmpeg.git
cd jsmpeg
npm install ws #安装依赖websocket
#node websocket-relay.js supersecret 8081 8082 ##node 启动jspeg
pm2 start websocket-relay.js #守护进程启动
8、启动ffmpeg推流
ffmpeg -rtsp_transport tcp -i rtsp://admin:[email protected]:554/h264/ch1/sub/av_stream -f mpegts -vcodec mpeg1video -s 320x240 -b:v 800k -bf 0 -acodec mp2 -b:a 128k -muxdelay 0.001 -r 30 http://localhost:8081/supersecret
9、安装ngrok客户端
touch ngrok.cfg #创建配置文件
vi ngrok.cfg #编辑内容
内容如下
http: tcp:分别为通道的名字可以自定义
server_addr: qdoing.com:4443
trust_host_root_certs: false
tunnels:
http:
proto:
http: 8080
subdomain: c1
tcp:
remote_port: 1001
proto:
tcp: 8082
ssh:
remote_port: 2001
proto:
tcp: 22
chmod 777 ngrok #给ngrok执行权限
./ngrok -config=ngrok.cfg start http tcp #开启tcp http 代理