Ffmpeg 無人機圖傳直播方案


爲實現無人機實時監控自動巡檢,準備把圖傳數據通過電腦發送到服務器用到的工具 Nginx+Ffmpeg
在這裏插入圖片描述

一、本地安裝ffmpeg

這裏我測試的是在本地筆記本電腦Win10系統
下載FFMPEG
在這裏插入圖片描述
解壓到D盤,修改環境變量
在這裏插入圖片描述
計算機右鍵->屬性->高級系統設置
在這裏插入圖片描述
添加環境變量後確定
在這裏插入圖片描述
Win+R cmd 查看測試
在這裏插入圖片描述

二、ffmpeg基本操作

1. 列出直播輸入設備的示例:查看攝像頭名稱、麥克風名稱

ffmpeg -list_devices true -f dshow -i dummy

在這裏插入圖片描述

2. 使用dshow設備作爲輸入的示例:

ffmpeg -f dshow -i video=“攝像頭名稱” out.mp4

這裏我的攝像有名稱是"HD Webcam"麥克風名稱是"麥克風 (Realtek High Definition Audio)"
3. 使用音頻和視頻dshow設備作爲輸入的示例:

ffmpeg -f dshow -i video="HD Webcam":audio="麥克風 (Realtek High Definition Audio)" out.mp4

注意空格位置不要自己添加,如下報錯
在這裏插入圖片描述
[dshow @ 000001848accc800] Malformed dshow input string.
video: I/O error
在這裏插入圖片描述
4.您還可以傳遞設備所需的某些參數
例如,網絡攝像頭可能允許您以最高5 fps的速率以1024x768捕獲設備,或者允許您以30 fps的速率以640x480捕獲設備。打印所選設備的選項列表的示例:

ffmpeg -f dshow -list_options true -i video="HD Webcam"
```![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200629162825821.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NjEwMzk4,size_16,color_FFFFFF,t_70)

輸出測試pixel_format yuyv422:

```bash
ffmpeg -f dshow -video_size 640x480 -framerate 30 -pixel_format yuyv422 -i video="HD Webcam" out.avi

輸出測試vcodec mjpeg:

ffmpeg -f dshow -video_size 1280x720 -framerate 30 -vcodec mjpeg -i video="HD Webcam" out.avi

5.本地推流(注意需要部署Nginx爲前提)

ffmpeg -f dshow -i video="HD Webcam" -vcodec libx264 -f flv rtmp://127.0.0.1:1935/live/home

VLC打開網絡媒體rtmp:// 127.0.0.1:1935/live/home
在這裏插入圖片描述
127.0.0.1是本地nginx部署的服務,推流到服務器改IP即可

三、Nginx服務安裝

1.下載 nginx
地址
下載完成後解壓, 將解壓後的目錄命名爲nginx
在這裏插入圖片描述
2.下載服務器狀態檢查程序
nginx-rtmp-module
在這裏插入圖片描述
3. 配置 conf\nginx-win-rtmp.conf
在文件添加這塊代碼

rtmp {
    server {
        listen 1935;
        chunk_size 4000;
        application live {
             live on;
 
             # record first 1K of stream
             record all;
             record_path /tmp/av;
             record_max_size 1K;
 
             # append current timestamp to each flv
             record_unique on;
 
             deny publish all;
        }
    }
}

在這裏插入圖片描述
雙擊啓動即可
4.查看nginx是否部署完成
在這裏插入圖片描述

四、推流到服務器

1.視頻文件推流測試

ffmpeg -re -i 1.mp4 -vcodec libx264 -acodec copy -preset:v ultrafast -tune:v zerolatency -f flv rtmp://47.115.178.208:1935/live/home

-i :這個參數表示輸入 ,後面/home/lee/video.mp4 就是輸入文件。
-vcodec copy : -vcodec表示使用的視頻編解碼器 ,前綴v表示video。後面緊跟的copy 表示複製使用源文件的視頻編解碼器,比如原文件的編解碼器(codec)是h264,則這裏就使用h264。
-acodec copy : -acodec表示使用的音頻編解碼器,前綴a表示audio。後面的copy 表示使用源文件的音頻編解碼器。
-b:v 800k : -b:v表示視頻的比特率(bitrate) ,爲800k。
-b:a 32k : 表示音頻的比特率爲32k。
-f flv : -f表示format ,就是強制輸出格式爲flv,這一步其實也叫封裝(mux),封裝要做的事就是把視頻和音頻混合在一起,進行同步。緊跟在後面的rtmp://localhost/videotest
表示輸出的"文件名",這個文件名可以是一個本地的文件,也可以指定爲rtmp流媒體地址。指定爲rtmp流媒體地址後,則ffmpeg就可以進行推流

2.完整視頻推流命令

ffmpeg -f dshow -video_size 640x480 -framerate 10 -vcodec mjpeg -i video="USB2.0 PC CAMERA" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://47.115.178.208:1935/live/home

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章