ffmpeg-Farbtonverschiebung in der Tiff-Ausgabe

1244
commonpike

Ich verwende diese Befehle, um aus derselben mpeg2-Eingangsdatei eine tiff- und jpeg-Ausgabe zu generieren

ffmpeg -ss 14 -i '../test/test-in.mpg' -q: v 3 -vframes 1 -aspect 4: 3 -vf "crop = 22/23 * in_w: 22/23 * in_h, yadif, Maßstab = 736: 539, Pad = 736: 552: 0: 7 "'../test/test-out.jpg'

und

ffmpeg -ss 14 -i '../test/test-in.mpg' -vframes 1 -aspect 445: 326 -vf "crop = 22/23 * in_w: 22/23 * in_h, yadif, Maßstab = 720: 527 "'../unit-test/out.tiff'

Die Tiffs sind sehr violett / rötlich. Die JPEG-Dateien sind irgendwie in Ordnung.

Q: was kann die farbverschiebung in der tiff-ausgabe verursachen und wie kann ich das verhindern?

Die Befehlszeilenausgabe

ffmpeg -ss 15 -i '../test/test.mpg' -vframes 1 -aspect 4:3 -vf "crop=21/23*in_w:21/23*in_h ,yadif,scale=720:540" -vstats_file /home/factory/log/20140630143715-mpg2stills.log '../test/test.tiff'   ffmpeg version 1.2.4 Copyright (c) 2000-2013 the FFmpeg developers built on Oct 26 2013 23:16:12 with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5) configuration: --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid libavutil 52. 18.100 / 52. 18.100 libavcodec 54. 92.100 / 54. 92.100 libavformat 54. 63.104 / 54. 63.104 libavdevice 54. 3.103 / 54. 3.103 libavfilter 3. 42.103 / 3. 42.103 libswscale 2. 2.100 / 2. 2.100 libswresample 0. 17.102 / 0. 17.102 libpostproc 52. 2.100 / 52. 2.100 [mpeg @ 0xa4a1440] max_analyze_duration 5000000 reached at 5016000 microseconds Input #0, mpeg, from '../test/test.mpg': Duration: 00:00:30.62, start: 0.384000, bitrate: 7746 kb/s Stream #0:0[0x1c0]: Audio: mp2, 48000 Hz, stereo, s16p, 384 kb/s Stream #0:1[0x1e0]: Video: mpeg2video (Main), yuv420p, 720x576 [SAR 16:15 DAR 4:3], 25 fps, 25 tbr, 90k tbn, 50 tbc Output #0, image2, to '../test/test.tiff': Metadata: encoder : Lavf54.63.104 Stream #0:0: Video: tiff, yuv420p, 720x540 [SAR 1:1 DAR 4:3], q=2-31, 200 kb/s, 90k tbn, 25 tbc Stream mapping: Stream #0:1 -> #0:0 (mpeg2video -> tiff) Press [q] to stop, [?] for help [mpeg2video @ 0xa4a3060] warning: first frame is no keyframe frame= 1 fps=0.0 q=0.0 Lsize=N/A time=00:00:00.04 bitrate=N/A  video:563kB audio:0kB subtitle:0 global headers:0kB muxing overhead -100.003817% 

zugeschnittene Version der Eingabe mpg (von vlc gerissen)

cropped version of input mpg

zugeschnittene Version des Ausgabetiffes (zum Hochladen in png konvertiert)

cropped version of output tiff

0
Es könnte ein Fehler sein. Können Sie es bitte noch einmal mit einer neueren Version versuchen? Sie können ein statisches Build von http://ffmpeg.org/download.html herunterladen slhck vor 9 Jahren 0
Es ist nicht so einfach, wie es eingerichtet wird. Ich würde es versuchen, wenn ich wirklich glaubte, dass es ein Fehler ist :-) Kannst du mir etwas verweisen, das dich dazu bringt, so zu denken? Hast du das schon mal gesehen oder darüber gelesen? commonpike vor 9 Jahren 0
Die statischen Builds können direkt ausgeführt werden, ohne dass eine spezielle Installation erforderlich ist. Sie führen die Datei einfach direkt aus dem Download-Verzeichnis aus. Es überschreibt keine vorhandene Installation oder verursacht Kompatibilitätsprobleme. Die Erfahrung sagt mir, dass * viele * ffmpeg-Probleme durch ein einfaches Update auf die neueste Version gelöst werden. Es wäre nicht das erste Mal, dass es einen Fehler mit getönter Ausgabe gab (http://trac.ffmpeg.org/ticket/2793). Wenn auch die neueste Version nicht funktioniert, müssen wir trotzdem einen Fehlerbericht einreichen. slhck vor 9 Jahren 0
Hm, ok. Es ist zwar nicht getönt, aber verschoben. commonpike vor 9 Jahren 0
Ich habe nicht gesagt, dass es sich um das gleiche Problem handelt. Nur dass diese Art von Farbkonvertierungsproblemen auftreten könnte. slhck vor 9 Jahren 0
Der neueste statische Build hat das gleiche Problem. Nicht sicher, ob ich einen Fehlerbericht einreichen sollte. Siehe die Antwort unten. commonpike vor 9 Jahren 0

1 Antwort auf die Frage

1
commonpike

Das Problem lag im Farbraum des Tiff-Bildes. ffmpeg kopiert den Farbraum aus der mpeg-Datei, die YUV-codiert war. Exif-Daten der TIFF-Datei zeigten, dass es 'YCbCr' war, was YUV ist.

Die resultierende TIFF-Datei konnte von einigen Anwendungen angezeigt werden, andere Anwendungen (insbesondere Photoshop) gaben jedoch an, dass sie fehlerhaft waren. Nicht sicher, ob dies ein Fehler in ffmpeg ist. Also habe ich das Ergebnis ohne Transformation durch Imagemagick geleitet, was die Datei scheinbar zu reparieren schien.

Imagemagick ging jedoch von RGB aus und setzte die Exif-Daten auf RGB, ohne die Bilddaten tatsächlich zu ändern. Das ist, wo die Farbtonverschiebung geschieht. Wieder nicht sicher, ob dies ein Fehler im Imagemagick ist.

jpeg hatte keine probleme.

Eine geeignete Lösung ist die Angabe des zu verwendenden pix_fmt im Befehl ffmpeg. Siehe https://ffmpeg.org/ffmpeg.html#Advanced-Video-options

Das hat es also gemacht:

ffmpeg -ss 14 -i '../test/test-in.mpg' -vframes 1 -aspect 445:326 -pix_fmt rgb24 -vf "crop=22/23*in_w:22/23*in_h,yadif,scale=720:527" '../unit-test/out.tiff'