
이 명령을 사용하여 동일한 입력 mpeg2 파일에서 tiff 및 jpeg 출력을 생성하고 있습니다.
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, scale=736:539,pad=736:552:0:7" '../test/test-out.jpg'
그리고
ffmpeg -ss 14 -i '../test/test-in.mpg' -vframes 1 -aspect 445:326 -vf "crop=22/23*in_w:22/23*in_h,yadif,scale=720:527 " '../unit-test/out.tiff'
티파니는 매우 보라색/분홍색을 띕니다. JPEG는 좀 괜찮아요.
Q: 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에 의해 스냅됨)
출력 tiff의 잘린 버전(업로드를 위해 png로 변환됨)
답변1
문제는 tiff 이미지의 색상 공간에 있었습니다. ffmpeg는 YUV로 인코딩된 mpeg 파일의 색상 공간을 복사합니다. tiff 파일의 EXIF 데이터에는 YUV인 'YCbCr'인 것으로 나타났습니다.
결과 tiff 파일은 일부 응용 프로그램에서 볼 수 있었지만 다른 응용 프로그램(특히 Photoshop)에서는 파일이 깨졌다고 보고했습니다. ffmpeg의 버그인지 확실하지 않습니다. 그래서 아무런 변환 없이 imagemagick을 통해 결과를 파이핑했는데, 파일을 복구한 것 같았습니다.
그러나 imagemagick은 RGB라고 가정하고 실제로 이미지 데이터를 변경하지 않고 EXIF 데이터를 RGB로 설정했습니다. 그것은 색조 변화가 일어난 것입니다. 다시 말하지만, 그것이 imagemagick의 버그인지 확실하지 않습니다.
JPEG에는 문제가 없었습니다.
한 가지 적절한 해결책은 ffmpeg 명령에서 사용할 pix_fmt를 지정하는 것입니다. 보다 https://ffmpeg.org/ffmpeg.html#고급-비디오-옵션
그래서 이렇게 했습니다:
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'