欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python進(jìn)行ffmpeg推流和拉流rtsp、rtmp實(shí)例詳解

 更新時(shí)間:2023年01月06日 14:26:32   作者:芝士不知世_  
Python推流本質(zhì)是調(diào)用FFmpeg的推流進(jìn)程,下面這篇文章主要給大家介紹了關(guān)于Python進(jìn)行ffmpeg推流和拉流rtsp、rtmp的相關(guān)資料,需要的朋友可以參考下

前言

流媒體協(xié)議,英文學(xué)名Streaming Protocol,用一句人話來(lái)解釋:流媒體協(xié)議是一種用于通過(guò) Web 傳遞多媒體的協(xié)議。傳統(tǒng)視頻流協(xié)議:RTMP和RTSP,其中 RTMP 是基于 TCP 開(kāi)發(fā)的,那么 RTSP 使用到了 UDP 。

1.RTMP(Real Time Messaging Protocol,實(shí)時(shí)消息協(xié)議)

  • 底層協(xié)議:TCP
  • 視頻編解碼器:H.264
  • 音頻編解碼器:AAC
  • 延遲:3 - 30 秒

RTMP 的最大優(yōu)點(diǎn)是可以在服務(wù)器和客戶端服務(wù)器之間保持穩(wěn)定的連接,無(wú)論用戶的互聯(lián)網(wǎng)連接質(zhì)量如何,它都可以無(wú)縫低延遲進(jìn)行流媒體傳輸。這個(gè)技術(shù)主要通過(guò)將數(shù)據(jù)流分成相等的小部分(音頻數(shù)據(jù)默認(rèn)為 64 字節(jié),視頻數(shù)據(jù)默認(rèn)為 128 字節(jié))并將它們順序傳輸?shù)浇邮赵O(shè)備,然后將它們重新組合成視頻流來(lái)實(shí)現(xiàn)的。

RTMP 工作原理 ?

  • 攝像頭捕獲視頻
  • 通過(guò)編碼器視頻流傳輸?shù)揭曨l平臺(tái)服務(wù)器
  • 視頻平臺(tái)處理視頻流
  • 通過(guò)CDN分發(fā)到離用戶最近的服務(wù)器
  • 最后視頻流就能成功的到達(dá)用戶設(shè)備

那么這個(gè)環(huán)節(jié)中RTMP就起到了非常重要的作用,在視頻從攝像頭到服務(wù)器的過(guò)程中,RTMP將大量數(shù)據(jù)分割成小塊并跨多個(gè)虛擬通道傳輸,在視頻源和 RTMP 服務(wù)器之間提供了穩(wěn)定和流暢的視頻流。

2.RTSP(Real Time Streaming Protocol,實(shí)時(shí)流協(xié)議)

  • 底層協(xié)議:TCP 和 UDP
  • 視頻編解碼器:H.265
  • 音頻編解碼器:AAC
  • 延遲:2 秒

RTSP 工作原理 ?

  • 用戶設(shè)備向視頻流平臺(tái)發(fā)送 RTSP 請(qǐng)求
  • 視頻流平臺(tái)返回可以操作的請(qǐng)求列表,比如播放、暫停等
  • 用戶設(shè)備向視頻流平臺(tái)發(fā)送具體的請(qǐng)求,比如播放
  • 視頻流平臺(tái)解析請(qǐng)求并調(diào)用指定機(jī)制啟動(dòng)視頻流處理

由于 RTSP 依賴于專用服務(wù)器,并且依賴于 RTP,因此該協(xié)議不支持加密視頻內(nèi)容或重傳丟失的數(shù)據(jù)包。

3.FFmpeg

FFmpeg 是一款用于多媒體處理的自由軟件工具,基于 GPL 許可證發(fā)布。FFmpeg 提供的最核心的命令行工具是 “ffmpeg”,“ffmpeg” 命令行工具的主要特征是輸出過(guò)程快、輸出品質(zhì)高、輸出文件小。“FFmpeg” 中 “FF” 表示 “Fast Forward”,“mpeg” 表示 “Moving Pictures Experts Group”。

FFmpeg 提供如下四個(gè)命令行工具:

  • ffmpeg 音視頻編碼器/解碼器
  • ffplay 媒體播放器
  • ffprobe 顯示媒體文件信息
  • ffserver 多媒體流廣播服務(wù)器,使用 HTTP 和 RTSP 協(xié)議。FFmpeg 4.1 版本已經(jīng)刪除 ffserver,新的替代者還未添加進(jìn)來(lái)。

命令行實(shí)現(xiàn):(和VLC工具等效)

ffmpeg推流rtsp

ffmpeg -re -i 1.mp4 -vcodec copy -codec copy -f rtsp rtsp://127.0.0.1:554/stream

推攝像頭視頻

ffmpeg -f dshow -i video="Integrated Camera" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -rtsp_transport udp -f rtsp rtsp://127.0.0.1/stream

ffplay拉流播放

ffplay rtsp://127.0.0.1:554/stream

4.python實(shí)現(xiàn)ffmpge的rtsp和rtmp推流拉流(待更)

# 本地?cái)z像頭推流
import queue
import threading
import cv2
import subprocess as sp
 
# 自行設(shè)置,url為推送的服務(wù)器地址
rtmpUrl = "rtmp://localhost:1935/live/test"
cap = cv2.VideoCapture(0)
 
fps = int(cap.get(cv2.CAP_PROP_FPS))
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
 
# ffmpeg command
command = ['ffmpeg',
                '-y',
                '-f', 'rawvideo',
                '-vcodec', 'rawvideo',
                '-pix_fmt', 'bgr24',
                '-s', "{}x{}".format(width, height),
                '-r', str(fps),
                '-i', '-',
                '-c:v', 'libx264',
                '-pix_fmt', 'yuv420p',
                '-preset', 'ultrafast',
                '-f', 'flv',
                rtmpUrl]
 
# 設(shè)置管道
p = sp.Popen(command, stdin=sp.PIPE)
while True:
    ret, frame = cap.read()
    p.stdin.write(frame.tostring())

總結(jié)

到此這篇關(guān)于Python進(jìn)行ffmpeg推流和拉流rtsp、rtmp的文章就介紹到這了,更多相關(guān)Python ffmpeg推流和拉流rtsp rtmp內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python之如何復(fù)制excel模板并保留表格樣式

    python之如何復(fù)制excel模板并保留表格樣式

    這篇文章主要介紹了python之如何復(fù)制excel模板并保留表格樣式問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 實(shí)例講解python中的協(xié)程

    實(shí)例講解python中的協(xié)程

    在本篇文章里我們給大家通過(guò)實(shí)例講述一下關(guān)于python中的協(xié)程相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們可以參考下。
    2018-10-10
  • 快速進(jìn)修Python指南之網(wǎng)絡(luò)編程及并發(fā)編程

    快速進(jìn)修Python指南之網(wǎng)絡(luò)編程及并發(fā)編程

    這篇文章主要為大家介紹了Java開(kāi)發(fā)者如何快速進(jìn)修Python指南之網(wǎng)絡(luò)編程及并發(fā)編程實(shí)例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • python爬取百度貼吧前1000頁(yè)內(nèi)容(requests庫(kù)面向?qū)ο笏枷雽?shí)現(xiàn))

    python爬取百度貼吧前1000頁(yè)內(nèi)容(requests庫(kù)面向?qū)ο笏枷雽?shí)現(xiàn))

    這篇文章主要介紹了python爬取百度貼吧前1000頁(yè)內(nèi)容(requests庫(kù)面向?qū)ο笏枷雽?shí)現(xiàn)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Python設(shè)計(jì)模式之迭代器模式原理與用法實(shí)例分析

    Python設(shè)計(jì)模式之迭代器模式原理與用法實(shí)例分析

    這篇文章主要介紹了Python設(shè)計(jì)模式之迭代器模式原理與用法,結(jié)合具體實(shí)例形式分析了迭代器模式的概念、原理、定義及使用方法,代碼注釋說(shuō)明簡(jiǎn)單易懂,需要的朋友可以參考下
    2019-01-01
  • Matlab常見(jiàn)最優(yōu)化方法的原理和深度分析

    Matlab常見(jiàn)最優(yōu)化方法的原理和深度分析

    這篇文章主要介紹了Matlab常見(jiàn)最優(yōu)化方法的原理和深度分析,matlab只是個(gè)軟件,用來(lái)完成機(jī)械的計(jì)算,而如何安排這些計(jì)算,需要用戶掌握最基本的數(shù)學(xué)概念,需要的朋友可以參考下
    2023-07-07
  • 能讓你輕松的實(shí)現(xiàn)自然語(yǔ)言處理的5個(gè)Python庫(kù)

    能讓你輕松的實(shí)現(xiàn)自然語(yǔ)言處理的5個(gè)Python庫(kù)

    今天教大家如何你輕松的實(shí)現(xiàn)自然語(yǔ)言預(yù)處理,僅僅需要5個(gè)python庫(kù),文中介紹的非常詳細(xì),對(duì)正在學(xué)習(xí)python的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-05-05
  • 通過(guò)底層源碼理解YOLOv5的Backbone

    通過(guò)底層源碼理解YOLOv5的Backbone

    yolov5的特征提取網(wǎng)絡(luò)兼顧速度與精度,將PAN與PFN深度融合,對(duì)不同尺度魯棒性強(qiáng),可以即插即用,后接不同的檢測(cè)器,下面這篇文章主要給大家介紹了關(guān)于如何通過(guò)底層源碼理解YOLOv5的Backbone的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • 詳解Django CAS 解決方案

    詳解Django CAS 解決方案

    這篇文章主要介紹了詳解Django CAS 解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • python版本坑:md5例子(python2與python3中md5區(qū)別)

    python版本坑:md5例子(python2與python3中md5區(qū)別)

    這篇文章主要介紹了python版本坑:md5例子(python2與python3中md5區(qū)別),需要的朋友可以參考下
    2017-06-06

最新評(píng)論