【音視頻】RTMP流媒體服務器搭建、推流拉流

服務器:SRS(Simple RTMP Server,?持RTMP、HTTP-FLV,HLS)
推流端:ffmpeg + OBS
拉流端:ffplay +VLC + srs播放器

1 安裝和測試srs流媒體服務器

1.1 安裝srs流媒體服務器

  • srs官?:https://github.com/ossrs/srs
  • 碼云的源速度快:https://gitee.com/winlinvip/srs.oschina.git
  • github的源速度慢:https://github.com/ossrs/srs.git

第?步,獲取SRS

git clone https://gitee.com/winlinvip/srs.oschina.git
cd srs.oschina
#使?當前最新的3.0版本
git checkout -b 3.0 remotes/origin/3.0release
cd trunk

第?步,編譯SRS。

./configure
make -j$(nproc)

第三步,編寫SRS配置?件

  • 修改rtmp配置文件
vim conf/rtmp.conf
  • 注釋其中部分

在這里插入圖片描述

  • 啟動SRS服務器
./objs/srs -c conf/rtmp.conf
  • 監聽rtmp服務器日志
tail -f ./objs/srs.log

在這里插入圖片描述

2. rtmp推流

2.2 ffmpeg推流

  • ffmpeg推流本地flv視頻
ffmpeg -re -i music.flv -codec copy -f flv -y rtmp://192.168.217.128/live/livestream
  • 使用ffplay拉流
ffplay rtmp://192.168.217.128/live/livestream -x 800

在這里插入圖片描述

  • vlc拉流

在這里插入圖片描述

在這里插入圖片描述

  • ffmpeg推流攝像頭+麥克風,這里使用dshow來推流
  • 先查看自己電腦支持的設備
  • 如果出現亂碼,建議使用高版本的ffmpeg,我在ffmpeg4.2.2出現亂碼,在ffmpeg7.1就沒有這個情況
ffmpeg -list_devices true -f dshow -i dummy

在這里插入圖片描述

  • 推流攝像頭+麥克風
  • 這里要做編碼,所以指定編碼器為libx264和aac,并且編碼為flv格式
ffmpeg -re -f dshow -i video="Integrated Camera":audio="麥克風陣列 (Realtek(R) Audio)" -vcodec libx264 -acodec aac -f flv -y rtmp://192.168.217.128/live/livestream
  • ffplay拉流
ffplay rtmp://192.168.217.128/live/livestream -x 800

在這里插入圖片描述

  • ffmpeg推流桌面 + 麥克風,這里使用gdigrab捕捉桌面
  • 稍微復雜一點,因為我的電腦是雙顯示屏,要捕捉第二個顯示屏,所以設置了捕捉的范圍
  • 使用h264_amf顯卡編碼,快一點
  • 不知道為什么這里的麥克風和錄屏如果一起推,延遲巨大無比
 ffmpeg -re -f gdigrab -framerate 30 -video_size 1920x1080 -offset_x 0 -offset_y 0 -i desktop -f dshow -i audio="麥克風陣列 (Realtek(R) Audio)" -vcodec h264_amf -acodec aac -f flv -y rtmp://192.168.217.128/live/livestream
  • vlc拉流,拉流稍微慢一點,要等一會

在這里插入圖片描述

  • obs推流桌面
  • 打開加號的顯示器采集
  • 設置里面選擇推流的服務器

在這里插入圖片描述

在這里插入圖片描述

  • 使用ffplay拉流
ffplay rtmp://192.168.217.128/live/livestream

在這里插入圖片描述

  • ffmpeg推流桌面+麥克風

  • 這里使用dshow的方法,不過得先下載:screen-capture-recorder,下載地址:[下載](screen-capture-recorder-to-video-windows-free · GitHub)

  • 下載完成后,輸入命令就會發現多了一個設備

ffmpeg -list_devices true -f dshow -i dummy

在這里插入圖片描述

  • ffmpeg 使用dshow推流屏幕+麥克風
  • 這樣推流就比gdigrab延遲低很多,相比正常多了
  • 使用硬件編碼降低延遲
ffmpeg -re -f dshow -i video="screen-capture-recorder":audio="麥克風陣列 (Realtek(R) Audio)" -vcodec h264_amf -acodec aac -f flv -y rtmp://192.168.217.128/live/livestream
  • 使用ffplay拉流
ffplay rtmp://192.168.217.128/live/livestream

更多資料:https://github.com/0voice

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

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

相關文章

數據治理與數據管理:定義之辯和責任外包的邊界

數據治理與數據管理:定義之辯和責任外包的邊界 最近,在數據領域的技術交流中,一位朋友探討了兩個很有意思的問題。這兩個問題非常典型,也反映了大家在實際工作和學習中常會遇到的困惑:一是關于“數據管理”和“數據治…

Linux 命令如何同時支持文件參數與管道輸入?

文章目錄 Linux 命令如何同時支持文件參數與管道輸入?命令輸入方式與管道機制概述常見輸入控制方式常見使用示例程序實現思路:統一處理輸入的方式判定輸入來源的基本模式為何命令應支持參數與標準輸入? GNU Coreutils wc 源碼解析&#xff1a…

flutter開發音樂APP(簡單的音樂播放demo)

效果如下: 音樂播放界面 鎖屏音樂播放展示 主要使用的插件如下 just_audio : 是一個功能豐富的音頻播放器,適用于Android、iOS、macOS、Web、Linux和Windows平臺。它提供了多種功能,包括從URL、文件、資產或字節流讀取音頻,支持D…

css中盒模型有哪些

標準盒模型(w3c盒模型) 在標準盒模型中,元素的width和height只包括內容區域,不包括內邊距、邊框、外邊距。也就是元素的實際寬高是內容區域加上內邊距、邊框、外邊距。 例如:一個元素的寬度設置為100px,內…

第3篇:請求參數處理與數據校驗

在 Web 開發中,請求參數處理與數據校驗是保障系統穩定性的第一道防線。本文將深入探討 Egg.js 框架中參數處理的完整解決方案,涵蓋常規參數獲取、高效校驗方案、文件流處理等核心功能,并分享企業級項目中的最佳實踐。 一、多場景參數獲取策略…

2025年-redis(p1-p10)

1.redis介紹 (1)基礎:常見的數據結構及命令、jedis的應用和優化、springDataRedis的應用和優化 (2)企業實戰的應用場景:共享session、緩存解決問題、秒殺中的redis應用、社交app中的redis應用、redis特殊結…

【AI模型學習】GPT——從v1到v3

文章目錄 GPT-1GPT vs BERTGPT-2GPT-3Ai代碼 GPT-1 GPT-1(Generative Pretrained Transformer 1)是 OpenAI 在2018年發布的第一個大規模預訓練生成模型。它開創了基于 Transformer 的 預訓練-微調 (pretraining-finetuning) 框架,在自然語言…

數字智慧方案6178丨智慧醫院醫療信息化建設之以評促建(61頁PPT)(文末有下載方式)

資料解讀:智慧醫院醫療信息化建設之以評促建 詳細資料請看本解讀文章的最后內容。 在當今數字化時代,醫療行業正經歷著深刻變革,智慧醫院的建設成為提升醫療服務質量、優化醫療資源配置的關鍵所在。這份智慧醫院醫療信息化建設之以評促建的資…

淺談C# record關鍵字

環境:.net8控制臺 init關鍵字 通常我們會有一個常見的需求就是需要實現一個實例化后不可變的類型. 我通常會如下實現,將類的屬性的set設為私有,這樣只能使用構造函數來實例一個不可變對象. 但是如果內部再聲明一個public的方法還是有可能會將我這個對象改變. internal class…

實時數倉dim層設計的一些疑惑點

0.dim層組件的選擇 dim層存儲要求:需要滿足永久存儲(需要長期保存歷史數據)和支持根據主鍵查詢單條數據明細,所以排除Kafka(時效短); 候選框架:MySQL、Redis、Hive、Doris、HBase …

模型之FIM(Fill-In-the-Middle)補全

文章目錄 模型之FIM(Fill-In-the-Middle)補全什么是FIM(Fill-In-the-Middle)FIM 的工作原理FIM 示例:代碼補全場景常見模型fim 測試deepseek fim阿里completions 接口要判斷模型是否支持特定的特殊標記**1. 模型可以自動推斷生成區域****2. `suffix` 是可選的****3. 模型的…

使用CubeMX新建DMA工程——存儲器到外設模式

目錄 1、新建板級支持包 1、usart.c: 2、修改的地方:在usart.c中添加了這些 3、usart.h: 4、在usart.h中添加了這些: 5、dma.c: 6、dma.h: 2、修改main.c文件 1、在main.c文件中添加頭文件 2、添加外部變量聲明 3、添加簡單延時函數 4、添加…

el-transfer穿梭框數據量過大的解決方案

一:背景 我們這個穿梭框獲取的是項目的全量數據,在左邊大概有5000條,自己測試了一下5000條數據的效果,發現異常的卡頓,本來打算像el-select一樣去解決的(只顯示一部分,在搜索的時候去全量搜索&a…

2025年- H17-Lc125-73.矩陣置零(矩陣)---java版

1.題目描述 2.思路 (1)計算矩陣的行數 (2)計算矩陣的列數 (3)設計一個行列的bool數組 (4)遍歷矩陣(二維數組),如果遇到元素0,則把…

Qt二維碼demo

使用QZXing庫生成的二維碼demo 運行結果 實現代碼 c文件 #include "mainwindow.h" #include "ui_mainwindow.h" #include "src/myqrcodeheader.h"MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow) {ui-&…

怪物獵人:世界-冰原10000+mod整合包5月最新更新!

700A大全套精美服裝 800M大全套精美服裝 3月31日更新 新增 新武器 新特效MOD 當前共計5800MOD整合包 好看的發型mod 實用的功能mod 炫酷的武器mod 新服裝新特效新武器實用模組美化,等。 1月14日更新 新增皮膚MOD 500 當前共計2000MOD 1月16日更新 新增超…

華納云:centos如何實現JSP頁面的動態加載

JSP(JavaServer Pages)作為Java生態中常用的服務器端網頁技術,具有動態內容生成、可擴展性強、與Java無縫結合等優勢。 而CentOS作為一款穩定、高效、安全的Linux服務器操作系統,非常適合部署JSP應用。 想要讓JSP頁面實現動態更新加載,避免…

gradle-tasks.register(‘classesJar‘, Jar)解析

在使用gradle作為構建工具的android或者java web項目中,我們經常能遇到以下格式 tasks.register(classesJar, Jar) {from "$buildDir/intermediates/javac/release/classes" // 假設使用 release 構建變體 }artifact sourcesJar使用偽代碼解釋 class Cu…

數據處理1

一、常用數據處理模塊Numpy Numpy常用于高性能計算,在機器學習常常作為傳遞數據的容器。提供了兩種基本對象:ndarray、ufunc。 ndarray具有矢量算術運算和復雜廣播能力的快速且節省空間的多維數組。 ufunc提供了對數組快速運算的標準數學函數。 ndar…

電力市場的交易品種

雙邊交易(Bilateral Trading) 定義:是電力市場中最基本的交易方式之一,指具備市場交易資格的買方和賣方,通過自主協商、雙邊協商的形式,確定交易電量、交易價格、交割曲線等交易要素,并簽訂中長…