Não é possível manter uma taxa de bits constante FFmpeg

Não é possível manter uma taxa de bits constante FFmpeg

Sou novo no StackOverflow. E não sei como estruturar a pergunta corretamente.

Estou tentando criar um servidor de streaming de mídia para meu projeto, onde uma câmera framboesa será transmitida para o servidor nginx rtmp e meu computador periodicamente criará pedaços dos fluxos e os salvará como arquivos .h264.

Este é o meu comando ffmpeg em execução picamera(estou usando python 2.7 e biblioteca 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')

ffmpegna minha máquina:

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

A taxa de bits no pi permanece constante em torno de 2 Mbits antes da gravação, mas quando começo a gravar no meu PC, a taxa de bits no pi aumenta loucamente para 11.000 kbits. Isso está consumindo toda a minha largura de banda.

Você pode me ajudar a manter uma taxa de bits quase constante?

Responder1

As opções -vcodec copye -maxrate 2Msão mutuamente exclusivas: Se o fluxo for copiado (aot reencodificado), o ffmpeg não terá influência sobre a taxa de dados (além do preenchimento) - portanto, a taxa de dados emitida pela sua câmera será a taxa de dados que o ffmpeg transmite.

Você tem duas opções:

  • Reencodifique o vídeo (nos moldes de -c:v h264 -b:v 2M), mas duvido que o RasPi tenha força suficiente para fazer isso enquanto executa o servidor da câmera também
  • Faça com que seu servidor de câmera produza uma taxa de saída razoável. É assim que eu abordaria o problema, primeiro observando quais opções e configurações de saída ele permite.

informação relacionada