FFmpeg及 RTSP、RTMP

FFmpeg 是一個功能強大的跨平臺開源音視頻處理工具集 ,集錄制、轉碼、編解碼、流媒體傳輸等功能于一體,被廣泛應用于音視頻處理、直播、點播等場景。它支持幾乎所有主流的音視頻格式和協議,是許多媒體軟件(如 VLC、YouTube、抖音等)的核心底層依賴。

核心組件與功能

FFmpeg 由多個核心部分組成,涵蓋音視頻處理的全流程:

1. 命令行工具

  • ffmpeg:核心轉碼工具,用于格式轉換、編解碼、裁剪、合并、濾鏡處理等。
  • ffplay:輕量級播放器,支持播放各種音視頻格式,可用于測試流或文件。
  • ffprobe:媒體信息分析工具,用于查看音視頻文件的編碼格式、時長、碼率、分辨率等元數據。
  • ffserver:流媒體服務器工具(較舊,逐漸被專用服務器替代)。

2. 核心庫(供開發者調用)

  • libavcodec:音視頻編解碼庫,支持 H.264、H.265、AAC、MP3 等主流編解碼器。
  • libavformat:封裝格式處理庫,支持 MP4、FLV、MKV 等容器格式,以及 RTMP、RTSP、HLS 等流媒體協議。
  • libavfilter:音視頻濾鏡庫,支持加水印、裁剪、縮放、特效處理等。
  • libswscale:視頻縮放和像素格式轉換庫(如 YUV 轉 RGB)。
  • libswresample:音頻重采樣庫,用于調整采樣率、聲道數等。
  • libavutil:通用工具庫,提供數學運算、加密、像素處理等基礎功能。

常用命令示例

FFmpeg 命令行參數豐富,以下是一些典型用法:

1. 查看媒體文件信息

ffprobe input.mp4  # 查看 MP4 文件的詳細元數據

2. 格式轉換(轉碼)

將視頻從一種格式轉為另一種(如 MKV 轉 MP4):

ffmpeg -i input.mkv output.mp4

3. 提取音頻

從視頻中提取音頻并保存為 MP3:

ffmpeg -i input.mp4 -vn -acodec mp3 -b:a 128k output.mp3
# -vn:禁用視頻輸出;-acodec mp3:指定音頻編碼器;-b:a 128k:音頻碼率

4. 視頻裁剪

截取視頻的第 10 秒到第 30 秒片段(不重新編碼,速度快):

ffmpeg -i input.mp4 -ss 00:00:10 -to 00:00:30 -c copy output_cut.mp4
# -ss:起始時間;-to:結束時間;-c copy:直接復制流(無損裁剪)

5. 調整分辨率

將視頻分辨率改為 1280x720(720P):

ffmpeg -i input.mp4 -s 1280x720 output_720p.mp4

6. 推流到 RTMP 服務器

將本地視頻以實時速率推送到 RTMP 直播服務器:

ffmpeg -re -i input.mp4 -c copy rtmp://server/live/stream_name
# -re:按實際幀率發送(模擬實時流);-c copy:不轉碼直接推送

7. 拉取 RTSP 流并保存

從網絡攝像頭(RTSP 協議)拉流并保存為本地文件:

ffmpeg -i rtsp://username:password@camera_ip/stream -c copy output.mp4

8. 添加水印

在視頻左上角添加 PNG 水印圖片:

ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" output_watermark.mp4
# overlay=10:10:水印位置(x=10, y=10)

核心優勢

  1. 全能性:支持幾乎所有音視頻格式、協議和編解碼器,無需依賴其他工具。
  2. 高效性:優化的編解碼算法,支持硬件加速(如 NVIDIA CUDA、Intel QSV),處理速度快。
  3. 跨平臺:可運行于 Windows、Linux、macOS、Android、iOS 等系統。
  4. 可擴展性:提供 C 語言 API,可被 Python、Java 等多種語言調用,方便集成到應用中。
  5. 開源免費:基于 LGPL/GPL 許可證,可自由使用和二次開發。

攝像頭 Pipeline

“攝像頭 Pipeline”(攝像頭數據處理流水線)是指從攝像頭傳感器捕獲光信號,到最終輸出可使用的圖像 / 視頻數據的完整技術流程,核心是將原始數據按步驟處理為標準化格式,廣泛用于手機、安防監控、自動駕駛等設備。

核心環節(按數據流向排序)

  1. 傳感器捕獲(Sensor Capture)
    攝像頭傳感器(如 CMOS)將光信號轉換為原始電信號,輸出未經處理的 “RAW 數據”(如 RGGB 格式),包含像素亮度、色彩信息,但無壓縮且體積大。

  2. ISP 處理(Image Signal Processing)
    這是 Pipeline 的核心步驟,由專門的 ISP 芯片 / 模塊執行,目的是優化圖像質量:

    • 基礎校正:壞點修復(修正傳感器故障像素)、黑電平校正(消除暗電流干擾);
    • 關鍵優化:白平衡(調整色溫,避免偏色)、自動曝光(控制亮度)、對焦(確保清晰度)、降噪(減少雜色)、色彩還原(校準 RGB 比例);
    • 效果增強:銳化(提升細節)、HDR 合成(融合不同曝光畫面,擴大動態范圍)。
  3. 數據編碼 / 壓縮(Encoding/Compression)
    經過 ISP 優化的圖像數據仍為 “YUV/RGB 原始格式”,需通過編碼壓縮減少體積,便于存儲 / 傳輸:

    • 靜態圖像:常用 JPEG 編碼;
    • 動態視頻:常用 H.264(AVC)、H.265(HEVC)、AV1 等標準。
  4. 數據輸出 / 傳輸(Output/Transmission)
    壓縮后的圖像 / 視頻數據,通過接口(如 MIPI、USB、以太網)傳輸到處理器(CPU/GPU)、存儲設備(硬盤 / 閃存),或直接用于顯示(屏幕)、AI 分析(如人臉識別)等場景。

3A 算法

“3A 算法” 是攝像頭 ISP(圖像信號處理) Pipeline 中的核心自動控制算法,通過實時調整參數優化圖像質量,解決不同環境下的成像問題,是消費級相機(手機、單反)、安防監控等設備 “即拍即清晰” 的關鍵技術。

3A 算法的組成(核心三模塊)

3A 算法分別對應自動對焦(AF)、自動曝光(AE)、自動白平衡(AWB)?,三者協同工作,無需人工干預即可輸出高質量圖像。

RTSP和RTMP

一、核心定位與設計目標

  • RTSP:專注于媒體流控制,本身不傳輸實際音視頻數據,主要負責發送 "播放、暫停、快進" 等控制指令,需配合 RTP(傳輸媒體數據)和 RTCP(監控傳輸質量)協議使用。
    設計目標是提供靈活的實時媒體控制能力,適合需要交互操作的場景。

  • RTMP:集控制與數據傳輸于一體,可直接傳輸音視頻數據(基于 FLV 格式封裝),同時支持基礎控制指令,無需依賴額外數據傳輸協議。
    設計目標是實現低延遲的媒體流傳輸,早期為 Flash Player 設計,后成為直播推流的主流協議。

二、技術特性對比

對比維度RTSPRTMP
底層協議通常基于 TCP(默認端口 554),也支持 UDP基于 TCP(默認端口 1935)
數據傳輸方式僅控制,媒體數據由 RTP 傳輸(UDP 為主)直接傳輸媒體數據(FLV 格式分片)
延遲表現極低(100ms-1 秒),UDP 傳輸減少等待較低(1-3 秒),TCP 可靠傳輸帶來輕微延遲
傳輸可靠性RTP 基于 UDP,可能丟包(需 RTCP 補償)基于 TCP,保證數據不丟失、有序到達
協議開放性標準化協議(IETF 定義),完全開放最初為 Adobe 私有協議,后開源但標準較封閉
媒體格式支持靈活,支持多種編碼(H.264、MPEG 等)主要支持 FLV 封裝的音視頻(H.264/AAC 為主)

三、典型工作流程

RTSP 流程(需 RTP/RTCP 配合):
  1. 客戶端發送OPTIONS查詢服務器支持的指令
  2. 發送DESCRIBE獲取媒體描述(SDP 格式,含編碼、RTP 端口等)
  3. 發送SETUP建立 RTP 傳輸通道(協商 TCP/UDP)
  4. 發送PLAY指令,服務器通過 RTP 開始傳輸媒體數據
  5. 可發送PAUSE暫停,TEARDOWN終止會話
RTMP 流程:
  1. 客戶端與服務器建立 TCP 連接(端口 1935)
  2. 完成 RTMP 三次握手(驗證協議版本)
  3. 客戶端發送connect指令建立會話
  4. 推流場景:發送publish指令開始上傳媒體流(FLV 分片)
    拉流場景:發送play指令,服務器推送媒體流
  5. 斷開連接時發送close指令

四、應用場景差異

  • RTSP
    適合低延遲、需實時控制的場景,如:

    • 安防監控(網絡攝像頭 IPC 的實時預覽、云臺控制)
    • 視頻會議(實時畫面切換、攝像頭控制)
    • 工業監控(設備實時畫面傳輸)
  • RTMP
    適合互聯網直播、推流等場景,如:

    • 主播推流(通過 OBS 等工具向服務器推流)
    • 低延遲直播(游戲直播、互動直播)
    • 視頻點播(邊傳邊播已存儲的視頻文件)

五、優缺點總結

協議優點缺點
RTSP延遲極低、控制靈活、協議開放標準需配合 RTP/RTCP 使用,實現復雜度高;端口易被防火墻封禁
RTMP實現簡單(單協議)、傳輸可靠、生態成熟延遲略高于 RTSP;1935 端口易被封禁;瀏覽器原生不支持(需插件)

六、實際應用中的結合

在很多流媒體系統中,兩者會配合使用:

  • 前端攝像頭通過RTSP輸出實時流(低延遲)
  • 后端通過 FFmpeg 將 RTSP 流轉碼為RTMP推送到直播服務器
  • 服務器再將 RTMP 流轉為 HLS/DASH 等協議供用戶在瀏覽器觀看

例如:攝像頭(RTSP) → FFmpeg轉碼 → 直播服務器(RTMP) → 分發為HLS → 觀眾端

H.264 和 AAC

H.264 和 AAC 是音視頻領域常用的?兩種獨立編碼標準,常搭配使用(如 MP4、RTMP 格式),前者處理視頻,后者處理音頻,以下是簡潔介紹:

一、H.264(視頻編碼)

  • 全稱:ITU-T H.264 / ISO/IEC MPEG-4 AVC(Advanced Video Coding),俗稱 “AVC”。
  • 核心作用:對原始視頻數據(如攝像頭采集的 RGB 數據)進行?高效壓縮,在保證畫質的同時大幅減小文件體積 / 傳輸帶寬(壓縮比可達 100:1 以上)。
  • 關鍵特點
    • 通用性極強:支持標清、高清(1080P)、4K 等多種分辨率,廣泛用于直播(RTMP)、點播(MP4)、監控、手機拍攝等場景。
    • 平衡畫質與效率:通過 “幀間預測”(參考前后幀減少冗余)、“幀內預測”(單幀內像素關聯壓縮)等技術,在相同碼率下畫質優于早期標準(如 MPEG-2)。
  • 常見應用:本地視頻文件(MP4、MKV)、直播推流(RTMP 常用 H.264 視頻)、視頻會議。

二、AAC(音頻編碼)

  • 全稱:Advanced Audio Coding(高級音頻編碼),是 MPEG-4 標準下的音頻編碼方案。
  • 核心作用:對原始音頻數據(如麥克風采集的 PCM 數據)進行壓縮,替代早期的 MP3,在相同碼率下音質更優。
  • 關鍵特點
    • 音質好、壓縮效率高:128-192 kbps 碼率即可實現接近 CD 音質,支持單聲道、立體聲、多聲道(如 5.1 環繞聲)。
    • 低延遲:適合實時場景(如直播、語音通話),也支持無損壓縮(AAC-LC 為有損,AAC-ALAC 為無損)。
  • 常見應用:視頻伴音(MP4、FLV)、音樂文件(.aac 格式)、手機錄音、直播音頻。

三、H.264 + AAC 的典型搭配

兩者常結合使用,因為視頻需要畫面 + 聲音,且均為高效壓縮標準,能最大化降低存儲 / 傳輸成本:

  • 容器格式:通過 MP4、FLV、MKV 等 “容器” 將 H.264 視頻流和 AAC 音頻流封裝在一起,確保同步播放。
  • 典型場景:用 FFmpeg 推 RTMP 直播時,常指定?-c:v libx264(H.264 視頻編碼)和?-c:a aac(AAC 音頻編碼),如:
    ffmpeg -i input.mp4 -c:v libx264 -c:a aac -f flv rtmp://server/live/stream

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/94085.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/94085.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/94085.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

金山辦公的服務端開發工程師-25屆春招筆試編程題

1.作弊 溪染:六王畢,四海一;蜀山兀,阿房出。覆壓三百余里,隔離天日。驪山北構而西折,直走咸陽。二川溶溶,流入宮墻。五步一樓,十步一閣;廊腰縵回,檐牙高啄&am…

注意力機制中為什么q與k^T相乘是注意力分數

要理解 “qkT\mathbf{q} \times \mathbf{k}^TqkT 是注意力分數”,核心是抓住注意力機制的本質目標 ——量化 “查詢(q)” 與 “鍵(k)” 之間的關聯程度,而向量點積(矩陣相乘的元素本質&#xff…

Krea Video:Krea AI推出的AI視頻生成工具

本文轉載自:Krea Video:Krea AI推出的AI視頻生成工具 - Hello123工具導航 ** 一、平臺定位與技術特性 Krea Video 是 Krea AI 推出的 AI 視頻生成工具,通過結合關鍵幀圖像與文本提示實現精準視頻控制。用戶可自定義視頻首尾幀、為每張圖片設…

C++初階(2)C++入門基礎1

C是在C的基礎之上,容納進去了面向對象編程思想,并增加了許多有用的庫,以及編程范式 等。熟悉C語言之后,對C學習有一定的幫助。 本章節主要目標: 補充C語言語法的不足,以及C是如何對C語言設計不合理的地方…

ANSI終端色彩控制知識散播(II):封裝的層次(Python)——不同的邏輯“一樣”的預期

基礎高階各有色,本原純真動乾坤。 筆記模板由python腳本于2025-08-22 18:05:28創建,本篇筆記適合喜歡終端色彩ansi編碼和python的coder翻閱。 學習的細節是歡悅的歷程 博客的核心價值:在于輸出思考與經驗,而不僅僅是知識的簡單復述…

前端無感刷新 Token 的 Axios 封裝方案

在現代前端應用中,基于 Token 的身份驗證已成為主流方案。然而,Token 過期問題常常困擾開發者 —— 如何在不打斷用戶操作的情況下自動刷新 Token,實現 "無感刷新" 體驗?本文將詳細介紹基于 Axios 的解決方案。什么是無…

【數據結構】線性表——鏈表

這里寫自定義目錄標題線性表鏈表(鏈式存儲)單鏈表的定義單鏈表初始化不帶頭結點的單鏈表初始化帶頭結點的單鏈表初始化單鏈表的插入按位序插入帶頭結點不帶頭結點指定結點的后插操作指定結點的前插操作單鏈表的刪除按位序刪除(帶頭結點&#…

容器安全實踐(三):信任、約定與“安全基線”鏡像庫

容器安全實踐(一):概念篇 - 從“想當然”到“真相” 容器安全實踐(二):實踐篇 - 從 Dockerfile 到 Pod 的權限深耕 在系列的前兩篇文章中,我們探討了容器安全的底層原理,并詳細闡述…

百度面試題:賽馬問題

題目現在有25匹馬和一個賽馬場,賽馬場有5條跑道(即一次只能比較5匹馬),并且沒有秒表等計時工具,因此每次賽馬只能知道這5匹馬的相對時間而非絕對時間。問:如何篩選出跑的最快的3匹馬?需要比賽幾…

centos下安裝Nginx(搭建高可用集群)

CentOS-7下安裝Nginx的詳細過程_centos7安裝nginx-CSDN博客 centos換yum軟件管理包鏡像 CentOS 7.* 更換國內鏡像源完整指南_centos7更換國內源-CSDN博客 VMware虛擬機上CentOS配置nginx后,本機無法訪問 執行命令:/sbin/iptables -I INPUT -p tcp --dport 80 -j…

實時視頻技術選型深度解析:RTSP、RTMP 與 WebRTC 的邊界

引言:WebRTC 的“光環”與現實落差 在實時音視頻領域,WebRTC 常常被貼上“終極解決方案”的標簽:瀏覽器原生支持、無需插件、點對點傳輸、毫秒級延遲,這些特性讓它在媒體和開發者群體中擁有了近乎神話般的地位。許多人甚至認為&a…

基于深度學習的阿爾茨海默癥MRI圖像分類系統

基于深度學習的阿爾茨海默癥MRI圖像分類系統 項目概述 阿爾茨海默癥是一種進行性神經退行性疾病,早期診斷對于患者的治療和生活質量至關重要。本項目利用深度學習技術,基于MRI腦部掃描圖像,構建了一個高精度的阿爾茨海默癥分類系統&#xff0…

54 C++ 現代C++編程藝術3-移動構造函數

C 現代C編程藝術3-移動構造函數 文章目錄C 現代C編程藝術3-移動構造函數場景1&#xff1a;動態數組資源轉移 #include <iostream> #include <vector> class DynamicArray { int* data; size_t size; public: // 移動構造函數&#xff08;關鍵實現&#xf…

Sping Boot + RabbitMQ :如何在Spring Boot中整合RabbitMQ實現消息可靠投遞?

Spring Boot整合RabbitMQ實現消息可靠投遞全解析 在分布式系統中&#xff0c;消息中間件是解耦、異步、流量削峰的核心組件。RabbitMQ作為高可靠、易擴展的AMQP協議實現&#xff0c;被廣泛應用于企業級場景。但消息傳遞過程中可能因網絡波動、服務宕機等問題導致消息丟失&#…

STAR-CCM+|K-epsilon湍流模型溯源

【1】引言 三維CFD仿真經典軟件很多&#xff0c;我接觸過的有Ansys和STAR-CCM兩種。因為一些機緣&#xff0c;我使用STAR-CCM更多&#xff0c;今天就來回顧一下STAR-CCM中K-epsilon湍流模型的基本定義。 【2】學習地址介紹 點擊鏈接User Guide可以到達網頁版本的STAR-CCM 24…

osgEarth 圖像融合正片疊底

* 需求&#xff1a;* 高程渲染圖 RGB.tif、 山體陰影圖 AMP.tif** 高程渲染圖 rgb波段分別 乘以 山體陰影圖r波段&#xff0c; 然后除以255(AI說 讀取的紋理就已經歸一化到了 0~1 范圍&#xff0c;不用除以 255)。本人遙感知識匱乏。問了AI,以上 需求在許多商業軟件上已實現。…

Java接口響應速度優化

在 Java 開發中&#xff0c;接口響應速度直接影響用戶體驗和系統吞吐量。優化接口性能需要從代碼、數據庫、緩存、架構等多個維度綜合考量&#xff0c;以下是具體方案及詳細解析&#xff1a;一、代碼層面優化代碼是接口性能的基礎&#xff0c;低效的代碼會直接導致響應緩慢。1.…

A Large Scale Synthetic Graph Dataset Generation Framework的學習筆記

文章的簡介 作者提出了一個可擴展的合成圖生成框架&#xff0c;能夠從真實圖中學習結構和特征分布&#xff0c;并生成任意規模的圖數據集&#xff0c;支持&#xff1a; 節點和邊的結構生成節點和邊的特征生成特征與結構的對齊&#xff08;Aligner&#xff09; 它區別于GraphWor…

Android12 Framework讀寫prop屬性selinux報錯解決

文章目錄問題描述解決過程相關文章問題描述 Android讀prop值時&#xff0c;就算是system應用&#xff0c; 也需要selinux權限&#xff0c;否則會報錯。 java代碼如下 SystemProperties.get("ro.input.resampling", "")selinux報錯如下 2025-06-28 17:57:…

【圖文版】AIOT 小智 AI 聊天機器人 ESP32 項目源碼圖解

前言 小智 AI 聊天機器人是最近一個很火的開源項目&#xff0c;它借助LLM大模型以及TTS等AI的能力&#xff0c;通過自然語言來與其對話實現交互。它可以回答任何問題、播放音樂、背誦古詩&#xff0c;頗有未來AI機器人的雛形。 因為最近工作上的需要對其進行了研究&#xff0c;…