Erneutes Sampling des H264-Videos zur Reduzierung der Bildrate bei gleichbleibend hoher Bildqualität


0 Answers

Wie Andy T angedeutet hat, müssen Sie das Video unbedingt neu codieren, aber das bedeutet nicht, dass die Qualität in irgendeiner bemerkenswerten Weise reduziert werden muss.

Stellen Sie zunächst sicher, dass Sie keine alte Software verwenden. Video-Codecs sind ein sich schnell bewegendes Feld mit signifikanten fortgeschrittenen alle paar Wochen. x264 ist derzeit die fortschrittlichste verfügbare Video-Encoder-Software. Es ist wahrscheinlich, was mplayer verwendet, aber Sie können die neueste echte Version von www.x264.nl bekommen

Zuerst würde ich VirtualDub verwenden, um zu einem verlustfreien Videotyp zu dekomprimieren, was eine ziemlich große Datei ergibt. VirtualDub kann auch die Bildrate reduzieren. Siehe here .

Als nächstes benutze dies als Eingabe für x264. Ich schlage vor, Sie verwenden Staxrip wie Staxrip (setzen Sie die neuesten 32-Bit 8-Bit pro Kanal x264 in StaxRip \ Applications \ x264.

Wenn Sie die absolut beste Qualität mit der kleinsten Dateigröße wünschen, bei der Sie den Unterschied kaum bemerken, verwenden Sie eine Befehlszeile wie diese (mit x264):

x264 --preset placebo --tune film --crf 22 --level 4.1 --threads 1 --thread-input --sar 12:11 --output "<target>" "<source>"

Staxrip hat Optionen, schaltet das Preset auf Placebo, sucht nach Filmquellen (vorausgesetzt natürlich, dass es sich hierbei nicht um eine Animation handelt) und um die Anzahl der Threads auf 1 zu reduzieren.

Sie können "--crf 22" für ein größeres, qualitativ besseres Video auf 21 umstellen, aber ich habe festgestellt, dass CRF22 der Punkt ist, an dem es mir sehr schwer fällt, den Unterschied zu erkennen, selbst wenn ich Frame für Frame vergleiche. Jede Änderung der anderen Einstellungen wird wahrscheinlich die Qualität verringern oder die Dateigröße erhöhen, ohne die Qualität zu erhöhen. Die Erhöhung der Anzahl der Threads wird die Codierungsgeschwindigkeit deutlich verbessern (bei Multi-Core-Systemen natürlich), wird aber die Qualität leicht reduzieren (oder in diesem Fall, weil wir CRF verwenden, das qualitätsbasiert ist, wird die Dateigröße ein wenig erhöhen, wie unter 1% für 4 Fäden).

Die meisten Unternehmen, die Videos codieren oder Produkte herstellen, die Video codieren, haben keine Ahnung, was sie tun, und selbst wenn, dann haben sie nicht die CPU-Leistung, die für eine Codierung mit diesen Einstellungen erforderlich ist, also zusätzlich zu den bescheidenen Durch die Verringerung der Dateigröße durch Reduzierung der Bildrate erzielen Sie auch einen drastischen Abfall der Dateigröße durch die Verwendung eines intelligenten Encoders mit den strengsten Einstellungen.

Wenn Sie absolut sicher gehen wollen, dass das resultierende Video so nah wie möglich an der Ausgabe von VirtualDub aussieht, kann niemand den Unterschied mit CRF17 feststellen, aber die Datei wird ziemlich groß sein. Sie können auch VirtualDubs Ausgabe einfach zippen (naja, nicht so schlimm!).

Question

Hier ist die mplayer-Ausgabe für ein Video von Interesse:

br@carina:/tmp$ mplayer foo.mov 
mplayer: Symbol `ff_codec_bmp_tags' has different size in shared object, consider re-linking
MPlayer 1.0rc4-4.5.2 (C) 2000-2010 MPlayer Team
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.

Playing foo.mov.
libavformat file format detected.
[lavf] stream 0: video (h264), -vid 0
[lavf] stream 1: audio (aac), -aid 0, -alang eng
VIDEO:  [H264]  1280x720  24bpp  59.940 fps  2494.2 kbps (304.5 kbyte/s)
==========================================================================
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
Selected video codec: [ffh264] vfm: ffmpeg (FFmpeg H.264)
==========================================================================
==========================================================================
Opening audio decoder: [faad] AAC (MPEG2/4 Advanced Audio Coding)
AUDIO: 44100 Hz, 2 ch, s16le, 128.0 kbit/9.07% (ratio: 15999->176400)
Selected audio codec: [faad] afm: faad (FAAD AAC (MPEG-2/MPEG-4 Audio))
==========================================================================
AO: [pulse] 44100Hz 2ch s16le (2 bytes per sample)
Starting playback...
Movie-Aspect is 1.78:1 - prescaling to correct movie aspect.
VO: [vdpau] 1280x720 => 1280x720 Planar YV12

Ich möchte FFmpeg, Mencoder oder einen anderen Befehlszeilen-Video-Transcoder verwenden, um dieses Video auf eine niedrigere Framerate ohne Verlust der Bildqualität erneut abzutasten. Das heißt, jeder Frame sollte so klar wie möglich bleiben.

Versuche

ffmpeg -i foo.mov -r 25 -vcodec copy bar.mov
  • Die Zielbildrate - 25 Bilder pro Sekunde - wird erreicht, einzelne Bilder sind jedoch "blockig".
mencoder -nosound -ovc copy foo.mov -ofps 25 -o bar.mov
  • Videos sind effektiv nicht sichtbar.

Hilfe!

Dies scheint ein einfacher Anwendungsfall zu sein. Ich bin sehr überrascht, dass offensichtliche Dinge nicht funktionieren. Ist etwas falsch mit meinem Ansatz?




Related