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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

datagrid 重载本地数据_音视频系列3:使用ffmpeg + nginx搭建本地转发服务器

發布時間:2023/12/19 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 datagrid 重载本地数据_音视频系列3:使用ffmpeg + nginx搭建本地转发服务器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文與csdn博客同步:https://blog.csdn.net/Hanghang_/article/details/104893135,歡迎關注,點贊,評論。

前言

音視頻系列:

HectoorZ:音視頻系列1:ffmpeg+rtmp拉流?zhuanlan.zhihu.comHectoorZ:音視頻系列2:ffmpeg將H.264解碼為RGB?zhuanlan.zhihu.com

有興趣的朋友可以看看。

上一節我們采用ffmpeg拉取芒果臺視頻,并處理成rgb,奈何芒果臺不給力,拉流卡卡的,這樣就不知道是我代碼的問題,還是芒果臺服務器的問題了,為了杜絕這個問題發生,我們這一節在本地搭建nginx服務器,用ffmpeg進行本地推流,再用自己的代碼和VLC播放器進行PK測試。

為啥要這么做,因為本地推流,本地接收,可以保證推出來的流肯定是流暢的,這樣自己代碼出了問題(比如很卡)那么就能夠第一時間知道,等于排除了服務器的問題。

實際操作

nginx+nginx-rtmp-module安裝

nginx下載地址:http://nginx.org/en/download.html

我自己是下載了Mainline version,下載完進行解壓,會發現有個configue可執行文件,等下我們要用它生成Makefile文件。

然后這是編譯nginx的參數說明:http://nginx.org/en/docs/configure.html

nginx-rtmp-module下載:直接用git clone命令 git clone https://github.com/arut/nginx-rtmp-module.git

由于我們只需要實現推流,而不需要其他的module和環境,所以編譯的時候,我們只需要安裝nginx-rtmp-module,以及openssl證書。

首先我們看看openssl,在哪。

查看openssl位置命令:

which openssl

顯示:/usr/local/openssl/bin/openssl

去掉bin/openssl,在nginx目錄下,使用configure指令:

./configure --with-openssl=/usr/local/openssl/ --add-module=nginx-rtmp-module

注意,--with-openssl=填寫剛剛獲取的openssl路徑,去掉bin/openssl。 --add-module=填寫nginx-rtmp-module的路徑。

運行發現有問題:

'/usr/local/openssl/.openssl/include/openssl/ssl.h' failed

說是沒發現.openssl/目錄,修改nginx目錄下,auto/lib/openssl/conf文件 ,修改成正確的路徑。

CORE_INCS="$CORE_INCS $OPENSSL/include"CORE_DEPS="$CORE_DEPS $OPENSSL/include/openssl/ssl.h"CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libssl.a"CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libcrypto.a"

再運行:

./configure --with-openssl=/usr/local/openssl/ --add-module=nginx-rtmp-module make -j2 sudo make install

安裝完成。

配置nginx的rtmp應用

sudo vim /usr/local/nginx/conf/nginx.conf

修改nginx.conf,增加rtmp的application

rtmp {server {listen 1935;chunk_size 4096;application rtmplive {live on;max_connections 1024;allow publish all; # control access privilegeallow play all; # control access privilege}} }

其中: application的名字為rtmplive; 最大可連接數為1024; chunk_size分開數據大小為4096; 監聽的端口為1935。

打開nginx服務,(注意要使用sudu,不然不夠權限)

sudo /usr/local/nginx/sbin/nginx

報錯,bind() to 0.0.0.0:80 failed (98: Address already in use)

原因是nginx已經啟用,使用ps -e | grep nginx查看有無啟動nginx服務,有的話,可以先sudo kill -9 PID號

再啟動nginx:

sudo /usr/local/nginx/sbin/nginx

或者你也可以重載nginx程序:

/usr/local/nginx/sbin/nginx -s reload

到這里nginx就配置好了。

啟動ffmpeg推流

ffmpeg -re -i sss.mp4 -c copy -f flv rtmp://localhost:1935/live/rtmplive

出現錯誤:

rtmp://localhost:1935/live/mytv: Input/output error

實際上是地址寫錯了。 重新來:

ffmpeg -re -i sss.mp4 -c copy -f flv rtmp://localhost:1935/rtmplive

本地推流大功告成。

拉流測試

終于到了PK的時候了,VLC播放器和我的代碼(詳見上一節)進行PK,究竟勝利會花落誰家呢?

我覺得,應該是我的代碼會贏。

VLC打開網絡串流,輸入rtmp://localhost:1935/live/mytv: Input/output error 我的代碼也修改rtmp地址,然后開啟。

測試半小時,VLC落后一大截,于是我重開VLC串流,發現,還是慢。

兩小時過去了,代碼仍在跑中,沒有崩潰,速度仍比VLC快,我估摸著大概快個幾秒鐘。

測試效果如下圖:左側為我的代碼,右側為VLC播放器,使用OPENCV顯示,可以看到左側已經寫了下面一行,而右側還沒寫,顯然慢于左側。

所以,最后勝利歸我,嘿嘿。

好了,本節到這里就完了,做好這些基本工作,接下來我可能會修改上一節中的代碼,使其搭配最新的api,而不再警告,要么就是引入ROS系統。

如果我的文章對你有幫助,歡迎點贊、評論、關注。

總結

以上是生活随笔為你收集整理的datagrid 重载本地数据_音视频系列3:使用ffmpeg + nginx搭建本地转发服务器的全部內容,希望文章能夠幫你解決所遇到的問題。

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