Konstante Bitrate kann nicht aufrechterhalten werden FFmpeg

Konstante Bitrate kann nicht aufrechterhalten werden FFmpeg

Ich bin neu bei StackOverflow. Und ich weiß nicht, wie ich die Frage richtig strukturieren soll.

Ich versuche, einen Media-Streaming-Server für mein Projekt zu erstellen, bei dem eine Raspberry-Kamera zum Nginx-RTMP-Server streamt und mein Computer regelmäßig Teile der Streams erstellt und sie als speichert .h264.

Dies ist mein ausgeführter ffmpeg-Befehl picamera(ich verwende Python 2.7 und die Picamera-Bibliothek).

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')

ffmpegauf meiner Maschine:

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

Die Bitrate auf dem Pi bleibt vor der Aufnahme konstant bei etwa 2 Mbit/s, aber wenn ich mit der Aufnahme auf meinem PC beginne, steigt die Bitrate auf dem Pi wie verrückt auf 11.000 kbit/s. Das verbraucht meine gesamte Bandbreite.

Können Sie mir bitte helfen, eine nahezu konstante Bitrate aufrechtzuerhalten?

Antwort1

Die Optionen -vcodec copyund -maxrate 2Mschließen sich gegenseitig aus: Wenn der Stream kopiert (also neu codiert) wird, hat ffmpeg keinen Einfluss auf die Datenrate (abgesehen vom Padding) – die von Ihrer Kamera ausgegebene Datenrate ist also die von ffmpeg durchgegebene Datenrate.

Sie haben zwei Möglichkeiten:

  • Kodieren Sie das Video neu (ähnlich wie -c:v h264 -b:v 2M), aber ich bezweifle, dass der RasPi genug Power hat, um dies zu tun, während gleichzeitig der Kameraserver läuft
  • Sorgen Sie dafür, dass Ihr Kameraserver eine vernünftige Ausgaberate erzeugt. So würde ich das Problem angehen, indem ich mir zunächst anschaue, welche Ausgabeoptionen und Einstellungen er zulässt.

verwandte Informationen