ffmpeg hue shift ในเอาต์พุต tiff


0

ฉันใช้คำสั่งเหล่านี้เพื่อสร้างเอาต์พุต tiff และ jpeg จากไฟล์อินพุต mpeg2 เดียวกัน

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, มาตราส่วน = 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 "ครอบตัด = 22/23 * in_w: 22/23 * in_h, yadif, scale = 720: 527 "'../unit-test/out.tiff'

tiffs เป็นสีม่วง / ชมพูมาก jpegs นั้นก็โอเค

ถาม: อะไรเป็นสาเหตุของการเปลี่ยนสีในเอาต์พุต tiff และฉันจะป้องกันได้อย่างไร

เอาต์พุต commandline

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 (snapped โดย vlc)

เวอร์ชั่นที่ครอบตัดของอินพุต mpg

tiff เวอร์ชั่นที่ครอบตัดของเอาต์พุต (แปลงเป็น png สำหรับการอัปโหลด)

เวอร์ชันที่ครอบตัดของเอาต์พุต tiff


อาจเป็นข้อผิดพลาด คุณช่วยลองอีกครั้งด้วยเวอร์ชันที่ใหม่กว่าได้ไหม คุณสามารถดาวน์โหลด
บิลด์

มันไม่ง่ายอย่างนั้นตามวิธีการตั้งค่า ฉันจะลองถ้าฉันเชื่อว่ามันเป็นข้อผิดพลาด :-) คุณช่วยแนะนำบางอย่างที่ทำให้คุณคิดอย่างนั้นได้ไหม คุณเคยเห็นสิ่งนี้มาก่อนหรืออ่านเกี่ยวกับเรื่องนี้?
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'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.