1. 程式人生 > >[Rtsp]RTSP對實時攝像頭視訊流進行轉換(FFmpeg+FFserver)

[Rtsp]RTSP對實時攝像頭視訊流進行轉換(FFmpeg+FFserver)

1.一、問題描述

輸入資料為來自攝像頭的RTSP視訊流,然後利用FFmpeg將其輸出到FFserver監聽的服務(Feed)上,然後客戶端(vlc)可以播放FFserver廣播的經過轉換後的視訊流(Streams)。

通過FFserver的配置檔案來配置視訊流的轉換引數(幀大小,幀頻等)

2.二、實現方法

  1. 編輯FFserver配置檔案,參考官網配置檔案說明(ffserver.conf)
    Port 8090                       #繫結埠號
    BindAddress 0.0.0.0             #繫結ip
    MaxHTTPConnections 2000         #最大HTTP連線數
    MaxClients 1000                 #最大客戶端連線數
    MaxBandwidth 1000               #最大頻寬
    CustomLog -                     #日誌檔案,“-”為直接列印
    NoDaemon                        #預設全域性引數
    
    <Feed feed1.ffm>                #Feed:每一個輸入(攝像頭)建立一個Feed
        File /tmp/feed1.ffm             #Feed快取檔案
        FileMaxSize 200K                #快取檔案最大值
        ACL allow 127.0.0.1             #允許寫入Feed的ip
    </Feed>
    
    <Stream test.flv>               #Stream:每一個廣播(轉換後的視訊流)的轉碼設定專案
        Format flv                      #視訊流格式
        Feed feed1.ffm                  #視訊流的種子來源
        VideoFrameRate 40               #視訊幀頻
        VideoBitRate 128                #視訊位元率
        VideoSize 160x80                #視訊幀大小
        AVOptionVideo flags +global_header
        AudioBitRate 24                 #音訊位元率
        AudioChannels 1                 #音訊聲道
        AudioSampleRate 44100
        AVOptionAudio flags +global_header
    </Stream>
  2. 啟動FFserver,終端輸入命令:
    ffserver -f ffserver.conf
  3. 啟動FFmpeg,終端輸入命令:
    ffmpeg -i rtsp://192.168.1.111:8000/?videoCodecType=H.264 http://localhost:8090/feed1.ffm
    
    #-i:為輸入引數選項
    #rtsp://192.168……:為輸入的RTSP視訊流
    #http://localho……:為FFserver配置檔案中設定的Feed的監聽地址和埠
  4. 開啟客戶端(vlc)請求視訊流地址:開啟vlc–>File–>OpenNetwork–>URL中填寫 “http://localhost:8090/test.flv”–>Open  (地址為FFserver配置檔案中Stream項的名字)

3.參考連結: