日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

【python记录】使用ip摄像头 vlc打开rtsp服务 python远程调用摄像头记录过程

發(fā)布時間:2024/9/30 python 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【python记录】使用ip摄像头 vlc打开rtsp服务 python远程调用摄像头记录过程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

關于rtsp:

RTSP(Real-Time Stream Protocol)協(xié)議是一個基于文本的多媒體播放控制協(xié)議,屬于應用層。RTSP以客戶端方式工作,對流媒體提供播放、暫停、后退、前進等操作。該標準由IETF指定,對應的協(xié)議是RFC2326。

為何RTP能夠解決時延問題

RTP協(xié)議是一種基于UDP的傳輸協(xié)議,RTP自己并不能為按順序傳送數(shù)據(jù)包提供可靠的傳送機制,也不提供流量控制或擁塞控制,它依靠RTCP提供這些服務。這樣,對于那些丟失的數(shù)據(jù)包,不存在因為超時檢測而帶來的延時,同時,對于那些丟棄的包,也能夠由上層根據(jù)其重要性來選擇性的重傳。好比,對于I幀、P幀、B幀數(shù)據(jù),因為其重要性依次下降,故在網(wǎng)絡情況很差的狀況下,能夠考慮在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

又如目前市面上常用的海康網(wǎng)絡攝像頭的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包(在手機上)并從文件管理中找到,安裝(需要可以留言)
然后軟件里面打開視頻流服務,會顯示端口號,電腦上輸入端口(瀏覽器打開) 注意要連一個局域網(wǎng)。
此時瀏覽器已經(jīng)可以看見:


關于讀取攝像頭拍照的一個簡單代碼:

import cv2 i = 0 cap=cv2.VideoCapture(1, cv2.CAP_DSHOW) # cap.set(cv2.CAP_PROP_FRAME_WIDTH,640) # cap.set(cv2.CAP_PROP_FRAME_HEIGHT,480) while True:ret,frame = cap.read()cv2.imshow("nn",frame)imput = cv2.waitKey(1) & 0xFFif imput == ord('x'):i = i+1cv2.imwrite('data/ImageSets/+str(i)+".png"',frame)

將一個視頻轉成rtsp流,通過vlc播放器,搭建一個rtsp服務器,讓rtsp客戶端去訪問這個視頻的rtsp流
下載vlc我看的這帖子:
https://blog.csdn.net/qq_41895113/article/details/88899502
但下好后只有命令行。。無語

于是又查了很多vlc命令:

流輸出語法
[plain] view plain copy

% vlc input_stream --sout "#module1{option1=parameter1{parameter-option1},option2=parameter2}:module2{option1=...,option2=...}:..."

也可以使用下面的語法
[plain] view plain copy

% vlc input_stream --sout-module1-option1=... --sout-module1-option2=... --sout-module2-option1=... --sout-module2-option2=... ...

1.standard模塊(std)
example:
vlc test.mp4 -vvv --loop --sout “#standard{access=http,mux=ts,dst=192.168.9.80:10086/stream}”
將文件使用http協(xié)議發(fā)送到網(wǎng)絡,使用ts封裝,客戶端使用http://192.168.9.80:10086/stream訪問

關于standard的必選項
access,輸出的協(xié)議。file(保存到文件)、udp、http、https、mmsh(使用微軟的mms協(xié)議,僅支持基于http的mms協(xié)議)
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 開發(fā)的一套視頻直播協(xié)議,現(xiàn)在屬于 Adobe。這套方案需要搭建專門的 RTMP 流媒體服務如 Adobe Media Server,并且在瀏覽器中只能使用 Flash 實現(xiàn)播放器。它的實時性非常好,延遲很小,無法支持移動端 WEB 播放是它的硬傷。
瀏覽器端,HTML5 video

標簽無法播放 RTMP 協(xié)議的視頻,可以通過 video.js 來實現(xiàn)。

<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=“l(fā)oop” 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远程调用摄像头记录过程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。