смещение оттенка ffmpeg в выводе tiff

0

Я использую эти команды для генерации вывода TIFF и JPEG из одного и того же входного файла MPEG2

ffmpeg -ss 14 -i '../test/test-in.mpg' -q: v 3 -vframes 1 -aspect   4: 3-VF   "Растениеводство = 22/23 * in_w: 22/23 * in_h, Yadif, масштаб = 736: 539, колодки = 736: 552: 0: 7"   '../Test/test-out.jpg'

а также

ffmpeg -ss 14 -i '../test/test-in.mpg' -vframes 1-аспект 445: 326   -vf "обрезать = 22/23 * in_w: 22/23 * in_h, yadif, масштаб = 720: 527"   '../Unit-test/out.tiff'

чулки очень фиолетовые / розоватые. JPEG вроде нормально.

Вопрос: что может быть причиной изменения цвета в выводе TIFF, и как я могу предотвратить это?

Вывод командной строки

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%

обрезанная версия ввода mpg (привязана vlc)

cropped version of input mpg

обрезанная версия выходного TIFF (преобразуется в PNG для загрузки)

cropped version of output tiff

commonpike
источник
Это может быть ошибка. Можете ли вы попробовать еще раз с более свежей версией? Вы можете скачать статическую сборку с ffmpeg.org/download.html
slhck
Это не так просто, как его установка. Я бы попробовал, если бы я действительно поверил, что это ошибка :-) Можете ли вы отослать мне то, что заставляет вас так думать? Вы видели это раньше или читали об этом?
commonpike
Статические сборки могут быть запущены напрямую без какой-либо конкретной установки. Вы просто запускаете файл прямо из каталога загрузки. Он не перезаписывает существующие установки и не вызывает проблем с совместимостью. Опыт подсказывает мне, что много Проблемы с ffmpeg решаются простым обновлением до последней версии. Это не было бы впервые была ошибка с тонированным выводом , Если последняя версия тоже не работает, то нам все равно нужно подать отчет об ошибке.
slhck
Hmok. Это не тонированное, хотя, его сместили.
commonpike
Я не сказал, что это была та же самая проблема. Просто такие проблемы с преобразованием цветов могут возникнуть.
slhck

Ответы:

1

Проблема была в цветовом пространстве изображения TIFF. ffmpeg копирует цветовое пространство из файла mpeg, который был закодирован в формате YUV. exif-данные tiff-файла показали, что это был YCbCr, то есть YUV.

Полученный TIFF-файл может просматриваться некоторыми приложениями, но другие приложения (в частности, Photoshop) сообщают, что он поврежден. Не уверен, что это ошибка в ffmpeg. Поэтому я передал результат через imagemagick без каких-либо преобразований, которые, казалось, восстанавливали файл.

Тем не менее, imagemagick предполагал, что это был RGB, и установил для exif-данных значение RGB без фактического изменения данных изображения. Это было изменение оттенка происходит. Опять же, не уверен, что это ошибка в imagemagick.

У jpeg не было ни одной проблемы.

Единственное правильное решение - указать в команде ffmpeg pix_fmt для использования. Увидеть https://ffmpeg.org/ffmpeg.html#Advanced-Video-options

Итак, это сделал это:

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'
commonpike
источник