Невозможно поддерживать постоянный битрейт FFmpeg

Невозможно поддерживать постоянный битрейт FFmpeg

Я новичок на StackOverflow. И я не знаю, как правильно структурировать вопрос.

Я пытаюсь создать сервер потоковой передачи мультимедиа для своего проекта, где камера Raspberry будет транслировать поток на rtmp-сервер Nginx, а мой компьютер будет периодически разбивать потоки на фрагменты и сохранять их в формате .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 остается постоянным на уровне около 2 Мбит перед записью, но когда я начинаю записывать на своем ПК, битрейт на pi увеличивается как сумасшедший до 11000 кбит. Это использует всю мою полосу пропускания.

Можете ли вы помочь мне поддерживать почти постоянный битрейт?

решение1

Параметры -vcodec copyи -maxrate 2Mявляются взаимоисключающими: если поток копируется (а не перекодируется), ffmpeg не влияет на скорость передачи данных (кроме заполнения), поэтому скорость передачи данных на выходе вашей камеры будет равна скорости передачи данных, передаваемой ffmpeg.

У вас есть два варианта:

  • Перекодировать видео (по образцу -c:v h264 -b:v 2M), но я сомневаюсь, что RasPi достаточно мощен, чтобы сделать это, одновременно запустив сервер камеры.
  • Пусть ваш сервер камеры выдает разумную скорость вывода. Вот как я бы подошел к проблеме, прежде всего взглянув на то, какие параметры вывода и настройки он допускает.

Связанный контент