欧美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 開發(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使用裝飾器作日志處理的方法

    python使用裝飾器作日志處理的方法

    今天小編就為大家分享一篇python使用裝飾器作日志處理的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07
  • python通過(guò)socket實(shí)現(xiàn)多個(gè)連接并實(shí)現(xiàn)ssh功能詳解

    python通過(guò)socket實(shí)現(xiàn)多個(gè)連接并實(shí)現(xiàn)ssh功能詳解

    這篇文章主要介紹了python通過(guò)socket實(shí)現(xiàn)多個(gè)連接并實(shí)現(xiàn)ssh功能詳解,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • Python繪制專業(yè)的K線圖 源代碼解析

    Python繪制專業(yè)的K線圖 源代碼解析

    這篇文章主要介紹了Python繪制專業(yè)的K線圖,使用Python繪制一幅專業(yè)的K線圖,是量化投資和金融數(shù)據(jù)分析的必備功課。下面我將從K線圖簡(jiǎn)介、數(shù)據(jù)獲取、K線圖繪制及成交量繪制等方面,結(jié)合源代碼,一步步實(shí)現(xiàn)專業(yè)K線圖的繪制,需要的朋友可以參考下
    2021-10-10
  • Python機(jī)器學(xué)習(xí)之SVM支持向量機(jī)

    Python機(jī)器學(xué)習(xí)之SVM支持向量機(jī)

    這篇文章主要為大家詳細(xì)介紹了Python機(jī)器學(xué)習(xí)之SVM支持向量機(jī),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • 基于Python實(shí)現(xiàn)中秋佳節(jié)月餅搶購(gòu)腳本

    基于Python實(shí)現(xiàn)中秋佳節(jié)月餅搶購(gòu)腳本

    這篇文章主要介紹了Python版中秋佳節(jié)月餅搶購(gòu)腳本,今天要用的是一個(gè)測(cè)試工具的庫(kù)Selenium,今天我們就是用它去實(shí)現(xiàn)自動(dòng)化搶購(gòu)月餅,其實(shí)就是用這個(gè)工具"模擬"人為操作瀏覽器相應(yīng)的操作,比如登陸,勾選購(gòu)物車商品,下單購(gòu)買等等操作,需要的朋友可以參考下
    2022-09-09
  • Python實(shí)現(xiàn)Mysql數(shù)據(jù)庫(kù)連接池實(shí)例詳解

    Python實(shí)現(xiàn)Mysql數(shù)據(jù)庫(kù)連接池實(shí)例詳解

    這篇文章主要介紹了Python實(shí)現(xiàn)Mysql數(shù)據(jù)庫(kù)連接池實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • Python代碼風(fēng)格與編程習(xí)慣重要嗎?

    Python代碼風(fēng)格與編程習(xí)慣重要嗎?

    實(shí)現(xiàn)高內(nèi)聚,低耦合、結(jié)構(gòu)清晰不臃腫、可讀性高、數(shù)據(jù)冗余性低、高復(fù)用、易擴(kuò)展的代碼,并非易事.上到設(shè)計(jì)模式,下到某個(gè)類、方法、函數(shù)的構(gòu)造.在這里我分享一下我自己的代碼設(shè)計(jì),編寫風(fēng)格,讓我們互相學(xué)習(xí),需要的朋友可以參考下
    2021-06-06
  • Python對(duì)列表去重的多種方法(四種方法)

    Python對(duì)列表去重的多種方法(四種方法)

    開發(fā)中對(duì)數(shù)組、列表去重是非常常見的需求,對(duì)一個(gè)list中的id進(jìn)行去重,有下面幾種方法,具體內(nèi)容詳情大家參考下本文
    2017-12-12
  • python如何使用雙線性插值計(jì)算網(wǎng)格內(nèi)數(shù)據(jù)

    python如何使用雙線性插值計(jì)算網(wǎng)格內(nèi)數(shù)據(jù)

    這篇文章主要介紹了python如何使用雙線性插值計(jì)算網(wǎng)格內(nèi)數(shù)據(jù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 在Python的Flask框架下使用sqlalchemy庫(kù)的簡(jiǎn)單教程

    在Python的Flask框架下使用sqlalchemy庫(kù)的簡(jiǎn)單教程

    這篇文章主要介紹了在Python的Flask框架下使用sqlalchemy庫(kù)的簡(jiǎn)單教程,用來(lái)簡(jiǎn)潔地連接與操作數(shù)據(jù)庫(kù),需要的朋友可以參考下
    2015-04-04

最新評(píng)論