Tipps zum Vorgehen bei größerem Videoprojekt

hardwärevreag

Commander
Registriert
Mai 2006
Beiträge
3.033
Hallo community,

ich habe ein Videoprojekt an der Universität durchgeführt und dort insgesamt 112 Videoclips (jeweils in eigener Datei) vorliegen. Diese liegen in 2 Versionen vor (geschnitten/ungeschnitten) [gemacht mit Windows Movie Maker]. Die Clips sind ungefähr (also nicht genau!) 2 Minuten lang und wurden mit einer Logitech Webcam aufgenommen (1080p).

Ziel ist es beide Versionen auf jeweils einen USB-Stick mit 16 GB (Netto 15 GB) zu überspielen. Es soll kein Qualitätsunterschied vorliegen. Da die Clips im Zusammenhang mit einem bestimmten Programm zusammenarbeiten müssen, muss das Format mp4 sein. Das Programm unterstützt:
  • Audio: MP3; AIFF containing uncompressed PCM; WAV containing uncompressed PCM; MPEG-4 multimedia container with Advanced Audio Coding (AAC) audio
  • Video: FLV containing VP6 video and MP3 audio; MPEG-4 multimedia container with H.264/AVC (Advanced Video Coding) video compression

​Innerhalb dieser Rahmenbedingungen kann ich vermutlich die Bitrate oder Auflösung anpassen. Das Quellmaterial hat eine Bitrate von etwa 13,6 Mbit/s, die aber leicht über die Clips zu schwanken scheint.

Wie stark kann ich ungefähr die Bitrate reduzieren? Wäre VBR eine gute Option? Man sieht auf den Clips erzählende Menschen also kaum Bewegung ... Was kann man sonst machen? Würdet ihr zum Beispiel die Auflösung anfassen oder 1080i machen? Wiedergabe erfolgt wiederum in Full HD.

Wie würdet ihr da rangehen? Welches Tool empfiehlt sich für die Durchführung? (Wichtig: Batchweise und so geschrieben, dass das Konvertieren von den ~220 Videos, ~7,5h Video nicht tagelang dauert). Vorhanden ist eine Nvidia Grafikkarte (GTX 650 TI) und ein Intel XEON E3-1230 V3 (Haswell, ohne IGP).
 
- Bei 13,5 Mbit/s und 7,5 Stunden sind das ~45GB?
- 13,5 Mbit/s gesamt oder nur Video? Was für eine Bitrate hat die Audiospur?
- Wie verrauscht ist das Material?

Die Frage hier ist nicht wie stark du sie reduzieren kannst, sondern musst. 45GB / 15GB = 3 -> 13,5 Mbit/s / 3 = ~4 Mbit/s (+ Puffer)

Wenn kaum Bewegung da ist, bietet sich eigentlich ganz besonders CRF an, das kann aber schwierig sein, wenn man ein Größenlimit hat. Je nach Rauschen wird man bei 4 Mbit/s und Zeitdruck aber mit keinem Modus tolle Ergebnisse bekommen.

GPU-Kodierung fällt bei der möglichen Bitrate meiner Meinung nach schon mal komplett raus. Wenn euch die Qualität reicht, könnte man auf 720p downscalen, dann würde auch das Encoding schneller gehen. Interlacing wäre für mich ein No-Go.

Meine Tool-Wahl wäre hier FFmpeg:
Code:
ffmpeg -i video.mp4 -vf scale=1280:-1 -c:v libx264 -preset faster -b:v 4000k -maxrate:v 4500k -bufsize:v 2000k -c:a aac -b:a 96k out.mp4

Wenn du Zeit und Lust hast (ich kann dir dabei auch gerne mal helfen), würde ich auf jeden Fall noch CRF testen.

Kannst du mal ein Beispielvideo hochladen?
 
Zuletzt bearbeitet:
Danke für die ausführliche Antwort Bagbag.

Zunächst einmal: Ich kann kein Video hochladen, weil dies einer Veröffentlichung gleichkäme, was aus datenschutzrechtlichen Gründen unmöglich ist. Man könnte die Personen auf den Videos sonst identifizieren.

Ich habe 2 USB Sticks. Auf den einen sollen die geschnittenen Videos, auf den anderen die Videos im Original. Daher muss ich nicht ganz so dramatisch sparen. Also eher 22,5/15 = 1,5 => 13,5/1,5 = 9 Mbit/s CBR.

@Bildrauschen: Mir wäre keins aufgefallen. Die Aufnahmen haben subjektiv eine hohe Qualität.

@Audio: Da würde ich gerne 100% Qualität bewahren. Das macht ja scheinbar sowieso nichts aus (1% des Files).

Die nun folgenden Angaben habe ich mit dem Tool "MediaInfo" anhand von einem Beispielvideo, welches im original und geschnitten vorliegt, erhoben:

Original:

Code:
Format                                   : MPEG-4
Format profile                           : Base Media / Version 2
Codec ID                                 : mp42 (mp41/isom)
File size                                : 267 MiB
Duration                                 : 2 min 8 s
Overall bit rate                         : 17.4 Mb/s


Video
ID                                       : 1
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : Main@L4
Format settings, CABAC                   : No
Format settings, ReFrames                : 2 frames
Codec ID                                 : avc1
Codec ID/Info                            : Advanced Video Coding
Duration                                 : 2 min 8 s
Source duration                          : 2 min 8 s
Bit rate                                 : 17.2 Mb/s
Width                                    : 1 920 pixels
Height                                   : 1 080 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Variable
Frame rate                               : 30.000 FPS
Minimum frame rate                       : 20.464 FPS
Maximum frame rate                       : 34.682 FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 0.277
Stream size                              : 264 MiB (99%)
Source stream size                       : 264 MiB (99%)
mdhd_Duration                            : 128559


Audio
ID                                       : 2
Format                                   : AAC
Format/Info                              : Advanced Audio Codec
Format profile                           : LC
Codec ID                                 : 40
Duration                                 : 2 min 8 s
Source duration                          : 2 min 8 s
Bit rate mode                            : Constant
Bit rate                                 : 192 kb/s
Channel(s)                               : 1 channel
Channel positions                        : Front: C
Sampling rate                            : 48.0 kHz
Frame rate                               : 46.875 FPS (1024 spf)
Compression mode                         : Lossy
Stream size                              : 3.00 MiB (1%)
Source stream size                       : 3.00 MiB (1%)
mdhd_Duration                            : 128539

Geschnitten:

Code:
Format                                   : MPEG-4
Format profile                           : Base Media / Version 2
Codec ID                                 : mp42 (mp41/isom)
File size                                : 188 MiB
Duration                                 : 1 min 58 s
Overall bit rate                         : 13.3 Mb/s


Video
ID                                       : 1
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : Baseline@L4
Format settings, CABAC                   : No
Format settings, ReFrames                : 2 frames
Format settings, GOP                     : M=1, N=30
Codec ID                                 : avc1
Codec ID/Info                            : Advanced Video Coding
Duration                                 : 1 min 58 s
Bit rate                                 : 13.2 Mb/s
Width                                    : 1 920 pixels
Height                                   : 1 080 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Constant
Frame rate                               : 30.000 FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 0.211
Stream size                              : 186 MiB (99%)
mdhd_Duration                            : 118567


Audio
ID                                       : 2
Format                                   : AAC
Format/Info                              : Advanced Audio Codec
Format profile                           : LC
Codec ID                                 : 40
Duration                                 : 1 min 58 s
Bit rate mode                            : Constant
Bit rate                                 : 174 kb/s
Nominal bit rate                         : 192 kb/s
Channel(s)                               : 2 channels
Channel positions                        : Front: L R
Sampling rate                            : 48.0 kHz
Frame rate                               : 46.875 FPS (1024 spf)
Compression mode                         : Lossy
Stream size                              : 2.46 MiB (1%)
mdhd_Duration                            : 118571

Ich habe mir gerade mal CRF angeguckt und das ist ja inhaltlich äquivalent zu VBR (variable bit rate) oder habe ich das falsch verstanden? Falls ja, ist das doch genau was ich brauche bei meinen Videos mit wenig Bewegung, oder?
 
Zuletzt bearbeitet:
CRF ist genaugenommen ein VBR Modus, aber nicht das, was man für gewöhnlich unter VBR versteht.

Grob von dem, was man "umgangssprachlich" darunter versteht:

CBR: Habe immer eine Bitrate von 10 Mbit/s
VBR: Habe im Durchschnitt 10 Mbit/s, du darfst wenn es reicht aber auch gerne mal nur 5 Mbit/s haben. Wenn du es unbedingt brauchst, sind auch 15 Mbit/s mal ok.
CRF: Nutze so viel Mbit/s wie du brauchst um jederzeit Qualität X zu haben.

Bei CBR werden oft Daten verschwendet, da der Encoder mehr nutzt als gebraucht wird. Ebenso fehlen oft Daten, obwohl man eigentlich mehr bräuchte, da er sich nicht mehr nehmen darf.

Bei VBR umgeht man das etwas in dem man dem Encoder sagt, er darf an stellen, wo wenig gebraucht wird etwas einsparen und das Gesparte woanders, wo es gebraucht wird draufpacken.

Bei CRF sagt man dem Encoder er soll eine bestimmte Qualität erreichen. Dafür nimmt er sich so viel er braucht (man kann das natürlich auch eingrenzen).


Bei CRF ist nun der Vorteil, dass wenn es keine Änderungen gibt und man auch keine Daten braucht, ein 5 Std. Video mit einem Standbild dann also trotzdem nur 500 KB groß wäre.

Das Problem bei CRF im Vergleich zu CBR und VBR ist jedoch, dass man die Größe, die das Video haben wird nicht wirklich voraussagen kann. Ist sehr viel Bewegung da, das Quellmaterial verrauscht, ... kann die Größe auch Explodieren. In deinem Falle mit begrenztem Speicherplatz also suboptimal.

In deinem Falle würde ich es einfach mal mit ein paar wenigen Videos testen. Wenn es klappt dann ist CRF auf jeden Fall die beste Wahl.




Code:
ffmpeg -i video.mp4 -c:v libx264 -preset faster -crf 22 -c:a copy

Der Parameter "crf" gibt dabei den Rate Factor an, je kleiner dieser Wert ist, desto besser die Qualität. Für 1080p ist ein sinnvoller Bereich meist 18~25.

"-c:v libx264" stellt den Encoder auf x264
"-preset faster" stellt das Preset für x264 auf "faster", das meiner Meinung nach das beste Verhältnis zwischen Zeit und Qualität/Größe hat. Ich nutze den praktisch immer.
"-c:a copy" sagt, dass der Audiostream kopiert werden soll.
 
Zuletzt bearbeitet:
Danke BagBag, jetzt habe ich wieder was dazugelernt :)

Ich probiere das gleich mal aus und gebe dir dann noch heute nachmittag Feedback :D.


Also ... habe es ausprobiert und es funktioniert genauso ... jetzt auf meiner Grafikkarte. Es ist zwar nicht ganz so gut, aber fast 3mal so schnell. Als Qualitätspreset nutze ich 25 und rechne mit CRF wie du empfohlen hast. Das Resultat kann sich meiner ersten Einschätzung nach sehen lassen. Das Audio normalisiere ich noch und ich nutze in grafisches Frontend.

Alles in allem: Vielen Dank für die Hilfe. Ich konnte viel von dir lernen :D
 
Zuletzt bearbeitet:
Auf ner Grafikkarte? Die können kein CRF. Da könntest du höchstens mit CQP arbeiten, wenn ich mich nicht irre.
 
Zuletzt bearbeitet:
Nein.

nvenc.png

Aber du kannst CQ nutzen.

Und nur 3x so schnell? Sollte eigentlich wesentlich schneller sein.
 
Zuletzt bearbeitet:
Zurück
Oben