【python记录】使用ip摄像头 vlc打开rtsp服务 python远程调用摄像头记录过程
關于rtsp:
RTSP(Real-Time Stream Protocol)協議是一個基于文本的多媒體播放控制協議,屬于應用層。RTSP以客戶端方式工作,對流媒體提供播放、暫停、后退、前進等操作。該標準由IETF指定,對應的協議是RFC2326。
為何RTP能夠解決時延問題
RTP協議是一種基于UDP的傳輸協議,RTP自己并不能為按順序傳送數據包提供可靠的傳送機制,也不提供流量控制或擁塞控制,它依靠RTCP提供這些服務。這樣,對于那些丟失的數據包,不存在因為超時檢測而帶來的延時,同時,對于那些丟棄的包,也能夠由上層根據其重要性來選擇性的重傳。好比,對于I幀、P幀、B幀數據,因為其重要性依次下降,故在網絡情況很差的狀況下,能夠考慮在B幀丟失甚至P幀丟失的狀況下不進行重傳,這樣,在客戶端方面,雖然可能會有短暫的不清晰畫面,但卻保證了實時性的體驗和要求。
客戶端要播放RTSP媒體流,就需要知道媒體源的URL,RTSP的URL格式一般如下:
rtsp://host[:port]/[abs_path]/content_name
host: 有效的域名或IP地址; port: 端口號,缺省為554,若為缺省可不填寫,否則必須寫明。例如,一個完整的RTSP URL可寫為:
rtsp://192.168.1.67:554/test
又如目前市面上常用的海康網絡攝像頭的RTSP地址格式為:
rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream
示例:
rtsp://admin:12345@192.168.1.67:554/h264/ch1/main/av_stream
rtsp://admin:12345@192.168.1.67/mpeg4/ch1/sub/av_stream
過程
首先下載ip攝像頭的apk包(在手機上)并從文件管理中找到,安裝(需要可以留言)
然后軟件里面打開視頻流服務,會顯示端口號,電腦上輸入端口(瀏覽器打開) 注意要連一個局域網。
此時瀏覽器已經可以看見:
關于讀取攝像頭拍照的一個簡單代碼:
將一個視頻轉成rtsp流,通過vlc播放器,搭建一個rtsp服務器,讓rtsp客戶端去訪問這個視頻的rtsp流
下載vlc我看的這帖子:
https://blog.csdn.net/qq_41895113/article/details/88899502
但下好后只有命令行。。無語
于是又查了很多vlc命令:
流輸出語法
[plain] view plain copy
也可以使用下面的語法
[plain] view plain copy
1.standard模塊(std)
example:
vlc test.mp4 -vvv --loop --sout “#standard{access=http,mux=ts,dst=192.168.9.80:10086/stream}”
將文件使用http協議發送到網絡,使用ts封裝,客戶端使用http://192.168.9.80:10086/stream訪問
關于standard的必選項
access,輸出的協議。file(保存到文件)、udp、http、https、mmsh(使用微軟的mms協議,僅支持基于http的mms協議)
mux,輸出復用器。支持ts、ps、mpeg1、ogg、asf、asfh、avi、mpjpeg
dst,輸出目的地址,如果access=file,就是保存的文件路徑及文件名
最后還是一句命令安vlc然后雙擊打開:
sudo snap install vlc
很慢,感覺有幾十分鐘。
在vlc中也可以直接播放:
用pycharm也讀取成功了:
import cv2 url = 'http://192.168.1.108:8080/video' cap = cv2.VideoCapture(url) while(cap.isOpened()):ret, frame = cap.read()# Display the resulting framecv2.imshow('frame',frame)if cv2.waitKey(1) & 0xFF == ord('q'):break # When everything done, release the capture cap.release() cv2.destroyAllWindows()
附:
Real Time Messaging Protocol(簡稱 RTMP)
是 Macromedia 開發的一套視頻直播協議,現在屬于 Adobe。這套方案需要搭建專門的 RTMP 流媒體服務如 Adobe Media Server,并且在瀏覽器中只能使用 Flash 實現播放器。它的實時性非常好,延遲很小,無法支持移動端 WEB 播放是它的硬傷。
瀏覽器端,HTML5 video
標簽無法播放 RTMP 協議的視頻,可以通過 video.js 來實現。
<link href=“http: //vjs.zencdn.net/5.8.8/video-js.css” rel=“stylesheet”> <video id=“example_video_1″ class =“video-js vjs- default -skin” controls preload=“auto” width=“640” height=“264” loop=“loop” webkit-playsinline> <source src=“rtmp: //10.14.221.17:1935/rtmplive/home” type=‘rtmp/flv’> </video> <script src=“http: //vjs.zencdn.net/5.8.8/video.js”></script> <script> videojs.options.flash.swf = ‘video.swf’; videojs(‘example_video_1′).ready( function () { this.play(); }); </script>總結
以上是生活随笔為你收集整理的【python记录】使用ip摄像头 vlc打开rtsp服务 python远程调用摄像头记录过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【笔记】css卡片式地展示人物信息和一些
- 下一篇: 【练习】c++分别用链队列和普通队列输出