2010-12-11 3 views
4

Angenommen, ich habe einen Videostream, der sehr sehr wenige Szenenwechsel für sehr lange Zeiträume (Minuten bis Stunden) hat, und ich verwende etwas wie FFmpeg um das rohe Video nach h.264 zu transkodieren, mit welchen Einstellungen kann ich die Megatredundanz nutzen?aggressive h.264 Komprimierung Einstellungen speziell für sehr lange Szenen mit sehr wenig Szenenwechsel

Ist es so einfach wie das Einstellen des minimalen Schlüsselbildintervalls auf das Maximum (was immer das ist)?

Gibt es in der h.264-Spezifikation Platz für die Verbesserung von FFmpeg, um weitere Vorteile aus sehr langen Zeiträumen ohne Szenenwechsel zu ziehen?

+0

Ist es für Video-Stream oder für Videodateien? – osgx

+0

Es ist ein Videostream. Ich möchte einen MJPEG-Stream transkodieren, der sich nur sehr selten ändert (man stelle sich eine Videokamera vor, die in einen Saal starrt, der fast nie eine Bewegung hat und wenn, dann isoliert er sich in kleinen Bereichen des Bildschirms). Die MJPEGs sind von guter Qualität und kommen nur einmal alle 1 bis 5 Minuten (Kamera mit extrem niedriger Bandbreite) und es gibt sehr wenig Kompressionsrauschen. – michael

+0

Ich konvertiere wegen anderer Einschränkungen in h.264. – michael

Antwort

4

Zuerst, beachten Sie, dass FFmpeg nicht selbst das h264 codiert, sondern x264 tut.

Ja, das Definieren einer ungewöhnlich langen keyframe sollte die Größe von Videos mit langen Zeiträumen von wenig oder keiner Bewegung dramatisch reduzieren. Warum? Denn ein "Keyframe" ist ein Frame mit allen Videodaten - ein Schnappschuss, wenn Sie so wollen. Alle anderen Rahmen unterscheiden sich vom Schlüsselrahmen. Eine Einschränkung besteht darin, dass bei Beschädigung eines Zwischenrahmens das Video beschädigt wird, bis der nächste Schlüssel angezeigt wird.

Um das Keyframe-Intervall beim Kodieren mit FFmpeg explizit festzulegen, verwenden Sie den Schalter -g. Wenn Ihr Video 25 Bilder pro Sekunde enthält und Sie möchten, dass das Schlüsselbild einmal pro Minute angezeigt wird, fügen Sie -g 1500 zu Ihrer FFmpeg-Befehlszeile hinzu. (25 f/sx 60 s = 1500 f)

Es gibt noch andere interessante Aspekte, die Sie in Bezug auf Keyframes steuern können, die für Sie von Interesse sein können, von denen viele hier dokumentiert sind: x264 ffmpeg mapping and options guide

+0

Sie müssen sehr vorsichtig mit Keyframe-Intervallen sein. Wenn Sie zu lange Dauern zwischen Keyframes haben, ist das Suchen oder schnelle Fordern schwierig und zeitraubend (da alle Frames zwischen dem Frame, den Sie suchen möchten, und dem vorherigen Keyframe entschlüsselt werden müssen). – Serafeim