树莓派CSI摄像头实现rtsp流的传输,笔记本使⽤Python调⽤
Opencv显⽰
闲的⽆聊突然想做树莓派⼩车,构想是主机端python程序可以实时看到树莓派摄像头图像,并可以控制⼩车⽅向移动等功能。
主机端使⽤opencv调⽤树莓派摄像头,代码差不多这个样⼦
import cv2
import tkinter as tk
from tkinter import *
from PIL import Image, ImageTk#图像控件
url = "rtsp://192.168.0.117:9554/webcam" #关键点在这个地⽅,树莓派通过rtsp传输
cap = cv2.VideoCapture(url)#创建摄像头对象
#界⾯画布更新图像
def tkImage():
ref,ad()
frame = cv2.flip(frame, 1) #摄像头翻转
cvimage = cv2.cvtColor(frame, cv2.COLOR_BGR2RGBA)
pilImage=Image.fromarray(cvimage)
pilImage = size((image_width, image_height),Image.ANTIALIAS)
tkImage = ImageTk.PhotoImage(image=pilImage)
return tkImage
top = tk.Tk()
top.title('CAR')
image_width = 600
image_height = 500
canvas = Canvas(top,bg = 'white',width = image_width,height = image_height )#绘制画布
Label(top,text = '摄像头视频',font = ("⿊体",14),width =15,height = 1).place(x =400,y = 20,anchor = 'nw')
canvas.place(x = 150,y = 50)
while True:
pic = tkImage()
top.update()
top.after(100)
top.mainloop()
本⽂关键就是哪个url如何得到!
————————————————分割线————————————————
正⽂开始
声明主要参考⽂献:
本⽂整合多篇参考⽂献,因为以前教程都是n年前的,本⼈站在先辈肩膀上,实现此功能。
第⼀步:安装live555
树莓派可直接命令⾏(建议新建⽂件夹,⽅便后期更改⽬录,第⼀段代码是在根⽬录下建⽴live555⽂件夹,若是不想建⽴,直接第三⾏就ok)
mkdir /live555
cd /live555
wget live555/liveMedia/public/
2、解压
tar -zxvf
3、编译安装
cd live
sudo ./genMakefiles linux
图片下载站源码sudo make
sudo make install
第⼀步基本不会出错。
第⼆步:安装库⽂件
sudo apt-get install libavcodec-dev
sudo apt-get install libswscale-dev
sudo apt-get install libavutil-dev
第三步:编译安装ffmpeg与libx264
1、准备⽂件(建议下载⾄第⼀步创建的⽂件夹 /live555 中)
①、ffmpeg源码
可在树莓派直接命令⾏(不能科*上⽹可在笔记本下载,然后发送到树莓派端)
git clone git://github/FFmpeg/FFmpeg.git
②、x264源码
可在树莓派直接命令⾏(不能科*上⽹可在笔记本下载,然后发送到树莓派端)
git clone git://github/mirror/x264.git
③、yasm源码
2、编译安装
①、安装yasm
tar zxvf yasm-1.3.
cd yasm-1.3.0
./configure
make
make install
yasm --version
安装成功标志是可以成功查看版本号。
②、编译安装x264
先解压压缩⽂件,我第⼆段代码重命名了⼀下,⽅便后续操作,这地⽅重不重命名都可以。打开对应⽂件夹即可。unzip x264-master.zip
mv x264-master x264
cd x264
开始编译,正确写法
./configure \
--prefix=${DEST_LIB_DIR} \
--enable-shared
然后(没管理员权限⾃⼰获取)
make
make install
③、编译ffmpeg
解压FFmpeg-master.zip(这个地⽅我重命名了⼀下,重不重命名都可以)
unzip FFmpeg-master.zip
mv FFmpeg-master ffmpeg
cd ffmpeg
打开所在⽬录下
./configure --enable-libx264 --enable-gpl --enable-shared --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib --enable-pic make
make install
如果出现以下错误(正常操作不会遇到)
ffmpeg: error while loading shared libraries: libavdevice.so.52: cannot open shared object file: No such file or directory
解决办法:
则需要修改⽂件:/etc/f
在⽂件尾添加⼀⾏:
/usr/local/lib
然后执⾏命令:
ldconfig
重新运⾏ffmpeg -encoders | grep x264会发现安装成功
第四步:编译执⾏⼯具
1、下载源码
主机下载源码之后传输⾄树莓派端,树莓派将源码复制到/opt/vc/src/hello_pi/⽬录下
2、解压源码(⽂件名称看实际情况)
unzip secho1997-live_camera_linux-master.zip
3、阅读hello_pi⽂件夹下的README
按照提⽰,build the libs
make -C libs/ilclient
make -C libs/vgfont
完成此步之后进⼊live_camera_linux⽂件夹
cd live_camera_linux
阅读live_camera_linux⽂件下的README
按照他说的安装软件开发包(没管理员命令的⾃⼰获取)
sudo apt-get install libavcodec-dev
sudo apt-get install libswscale-dev
sudo apt-get install libavutil-dev
sudo apt-get install libx264-dev
然后尝试编译
cd live_camera_linux
sudo make
sudo make install
sudo ./zk_v4l2_x264_source
是不是报错了?正常,哈哈。
错误⼀:
make: *** 没有规则可制作⽬标“/home/pi/live/liveMedia/libliveMedia.a”,由“zk_v4l2_x264_source” 需求。停⽌。
此错误查看下⽂第⼀个坑
错误⼆:
gcc -L/opt/vc/lib -lEGL -lGLESv2 -ljpeg -shared -o libshapes.so oglinit.o libshapes.o
/usr/bin/ld: cannot find -lEGL
/usr/bin/ld: cannot find -lGLESv2
collect2: error: ld returned 1 exit status
Makefile:35: recipe for target 'library' failed
make: *** [library] Error 1
此错误查看下⽂第三个坑
出现其他错误,就按照第⼆个坑和第四个坑修补,全都补上!
补坑秘籍:
查看live_camera_linux⽂件夹下的Makefile⽂件
此处四个坑
第⼀个:要把第⼀步安装的live555的正确安装位置写上。
第⼆个:在INCLUDES后⾯加上(别忘了上⼀⾏末尾加个 \ 反斜杠这个东西,图中是正确⽰范)
-I/opt/vc/src/hello_pi/libs/ilclient
第三个:由于年代久远和版本更替,为了避免不同版本发⽣冲突,⼀些关键字的名称发⽣了变化,此处将原来的
-lEGL -lGLESv2
改为
-lbrcmEGL -lbrcmGLESv2
第四个:LDFLAGS(也就是第三步修改的那⼀⾏末尾)后⾯加上(先空格再加!)
-lssl -lcrypto
OK,填上四个坑,问题得以解决。
然后可以试试重新编译
sudo make
sudo make install
sudo ./zk_v4l2_x264_source
注意:sudo make install这⼀步成不成功⽆所谓,主要是看live_camera_linux ⽬录下有没有多⼀个zk_v4l2_x264_source(没有后缀)这个⽂件,有这个⽂件就好说。直接
sudo ./zk_v4l2_x264_source
运⾏就⾏。
成功出现以下内容则成功
[3278] WebcamOndemandMediaSubsession .... calling
using url "rtsp://192.168.0.117:9554/webcam"
然后成功效果图如下:
如果没成功说明前⾯步骤不太对,仔细观察。
总结
整这玩意花了我⼀天时间,可愁死我了。因为⽹上⽂章都太过久远,⽬前来说错误很多,我根据前⼈写的很多经验,写出了本贴,希望本贴可以节约读者时间。
ps:这玩意延迟很⼤,少说要有三秒,还不如mjpg。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论