FFmpeg無法保持恆定位元率

FFmpeg無法保持恆定位元率

我是 StackOverflow 的新手。我不知道如何正確地構造這個問題。

我正在嘗試為我的項目創建媒體流伺服器,其中樹莓派攝像頭將流式傳輸到 nginx rtmp 伺服器,我的計算機將定期從流中生成塊並將它們保存為.h264.

這是我運行的 ffmpeg 命令picamera(我正在使用 python 2.7 和 picamera 庫)。

cmdline = ['ffmpeg', '-i','-','-vcodec','copy','-crf','30','-maxrate','2M','-bufsize',' 1M','-an', '-f','flv', Cam_URL]
logger.debug("Starting the streaming process to server")
rtmpstream = subprocess.Popen(cmdline, stdin=subprocess.PIPE)
try:
    camera.framerate = 24
    camera.resolution = (1280, 720)
    camera.brightness = int(config_hash['Brightness'])
    camera.rotation = int(config_hash['Rotation'])
    camera.iso = int(config_hash['ISO'])
    camera.sharpness = int(config_hash['Sharpness'])
    camera.start_recording(rtmpstream.stdin, quality = 20,bitrate = 0, format = 'h264')

ffmpeg在我的機器上:

ffmpeg -i (media server url) -vcodec copy -maxrate 2M -bufsize 1M qwertyuip.h264

錄製前,pi 上的比特率保持在 2Mbits 左右,但當我開始在 PC 上錄製時,pi 上的比特率瘋狂增加到 11000kbits。這耗盡了我所有的頻寬。

您能幫助我保持幾乎恆定的比特率嗎?

答案1

選項-vcodec copy-maxrate 2M是互斥的:如果流被複製(aot 重新編碼),ffmpeg 對資料速率沒有影響(除了填充) - 因此相機輸出的資料速率將是 ffmpeg 通過的資料速率。

您有兩個選擇:

  • 重新編碼視訊(沿著 的思路-c:v h264 -b:v 2M),但我懷疑 RasPi 在運行相機伺服器時是否有足夠的能力來執行此操作
  • 讓您的相機伺服器產生合理的輸出速率。這就是我解決問題的方法,首先看看它允許哪些輸出選項和設定。

相關內容