本文旨在香橙派板子上實(shí)現(xiàn)視頻直播、抓拍撕瞧、定時(shí)拍、比對(duì)圖片
用到的技術(shù)棧:ngroke(反向代理)狞尔、ffmpeg(視頻推流丛版、解碼)、flask(python web框架)偏序、HLS等等
1页畦、下載Raspbian安裝包地址
http://www.orangepi.cn/downloadresourcescn/orangepipc/oragepipc_a01a2822c14b644d4931fb919e.html
2、準(zhǔn)備TF卡及安裝鏡像
參照:http://www.orangepi.cn/quickstartcn/startcn_2e17631567a387efd2a3d252fa79.html
3研儒、啟動(dòng)系統(tǒng)
通過hdmi轉(zhuǎn)vga線來(lái)連接顯示器豫缨,usb口接usb hub來(lái)分別接入鍵盤和鼠標(biāo)独令。
默認(rèn)用戶名密碼為:root 密碼:orangepi,
修改Raspbian默認(rèn)啟動(dòng)為命令行模式
修改文件/etc/inittab
這里將id:2:initdefault:修改為id:3:initdefault:
vi /etc/X11/default-display-manager
#輸入false 然后Esc,保存,然后reboot
:wq
reboot
再次啟動(dòng)后系統(tǒng)即是命令行模式
修改ip地址為192.168.1.88
備份原來(lái)的網(wǎng)卡配置文件
cp /etc/network/interfaces /etc/network/interfacesbak
vi /etc/network/interfaces
填入下邊內(nèi)容
auto lo
#開機(jī)自動(dòng)連接網(wǎng)絡(luò)
auto eth0
iface lo inet loopback
allow-hotplug eth0
#static表示使用固定ip,dhcp表述使用動(dòng)態(tài)ip
iface eth0 inet static
#設(shè)置ip地址
address 192.168.1.88
netmask 255.255.255.0
gateway 192.168.1.1
保存好芭,然后重啟網(wǎng)絡(luò)
service networking restart
至此及可以新的ip已經(jīng)生效燃箭,但這個(gè)時(shí)候老的ip還依然能用,重啟系統(tǒng)后舊ip就不能用了
4舍败、擴(kuò)展SD卡剩余空間
df -lh
查看磁盤空間發(fā)現(xiàn)不對(duì)招狸,還有一部分剩余的容量沒有使用解決:
1、查看第二分區(qū)的起始地址瓤湘,后面會(huì)用到
cat /sys/block/mmcblk0/mmcblk0p2/start
2瓢颅、
sudo fdisk /dev/mmcblk0 #使用fdisk操作磁盤
Command (m for help): d #d,刪除分區(qū)
Partition number (1-4): 2 # 2弛说,刪除第二分區(qū)
Command (m for help): n #創(chuàng)建一個(gè)新分區(qū)
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
重啟完成之后挽懦,此時(shí)查詢也還是沒有變化的,還需要如下命令
sudo resize2fs /dev/mmcblk0p2
df -lh
再次查看磁盤已經(jīng)識(shí)別出來(lái)了剩余空間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啟動(dòng)nodejs守護(hù)進(jìn)程
ln -s /root/software/node-v4.8.6-linux-armv7l/bin/pm2 /usr/local/bin/pm2
6信柿、安裝ffmpeg
修改國(guó)內(nèi)鏡像
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
編輯內(nèi)容如下
注意如果/etc/apt/sources.list.d/raspi.list國(guó)內(nèi)鏡像不能用404 就不要改動(dòng)這個(gè)文件了
vi /etc/apt/sources.list #修改Raspbian的軟件源,內(nèi)容如下
#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 #樹莓派的軟件源 醒第,內(nèi)容如下(阿里沒有對(duì)應(yīng)的鏡像源渔嚷,所以采用中科大的源)
#deb http://archive.raspberrypi.org/debian/ wheezy main
deb http://mirrors.ustc.edu.cn/archive.raspberrypi.org/ wheezy main
安裝ffmpeg
方法一(推薦,可安裝最新版ffmpeg)
# 先刪除已經(jīng)存在的依賴稠曼,然后更新系統(tǒng)重新安裝依賴包
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 時(shí)間很長(zhǎng)大約2個(gè)多小時(shí)
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 啟動(dòng)jspeg
pm2 start websocket-relay.js #守護(hù)進(jìn)程啟動(dòng)
8、啟動(dòng)ffmpeg推流
ffmpeg -rtsp_transport tcp -i rtsp://admin:12345@192.168.1.120: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 #創(chuàng)建配置文件
vi ngrok.cfg #編輯內(nèi)容
內(nèi)容如下
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執(zhí)行權(quán)限
./ngrok -config=ngrok.cfg start http tcp #開啟tcp http 代理