ffmpeg ไม่สามารถสร้างภาพขนาดย่อ


3

ฉันใช้ ffmpeg เพื่อสร้าง 10 .jpeg thumbs จากไฟล์วิดีโอ เวลาส่วนใหญ่ทำงานได้ดี แต่สำหรับบางไฟล์ (เช่น 55seconds .mp4 เป็นต้น) ฉันได้รับเฉพาะการจับ 4 ครั้งแรกจาก 10 ครั้งส่วนที่เหลือฉันได้รับข้อผิดพลาดนี้:
ไฟล์เอาต์พุตว่างเปล่าไม่มีการเข้ารหัส (ตรวจสอบ -ss / -t / -frames พารามิเตอร์หากใช้)

คำสั่งที่ฉันใช้ในการแปลงคืออันนี้
ffmpeg -ss 16 -i /path/source.mp4 -y -f image2 -t 0.001 -s 320*240 /path/thumb4.jpg
ซึ่งค่า -ss คือผลคูณของ 4 และจาก 20 หยุดทำงาน

เอาต์พุตเต็มบรรทัดคำสั่ง:

`# ffmpeg -ss 77 -i /path/source.mp4 -y -f image2 -t 0.001 -s 320*240 /path/thumb7.jpg  
ffmpeg version git-2013-02-25-b8f6912 Copyright (c) 2000-2013 the FFmpeg developers  
  built on Feb 25 2013 15:18:21 with gcc 4.4.5 (Debian 4.4.5-8)  
  configuration: --enable-shared --enable-libx264 --enable-gpl  
  libavutil      52. 17.103 / 52. 17.103  
  libavcodec     54. 92.100 / 54. 92.100  
  libavformat    54. 63.100 / 54. 63.100  
  libavdevice    54.  3.103 / 54.  3.103  
  libavfilter     3. 41.100 /  3. 41.100  
  libswscale      2.  2.100 /  2.  2.100  
  libswresample   0. 17.102 /  0. 17.102  
  libpostproc    52.  2.100 / 52.  2.100  
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/path/source.mp4':  
  Metadata:  
    major_brand     : mp42  
    minor_version   : 19529845  
    compatible_brands: mp42isom  
    creation_time   : 2013-03-20 21:45:43  
  Duration: 00:02:04.62, start: 0.000000, bitrate: 605 kb/s  
    Stream #0:0(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 64 kb/s  
    Metadata:  
      creation_time   : 2013-03-20 21:45:43  
      handler_name    : Sound Media Handler  
    Stream #0:1(eng): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p, 720x480 [SAR 40:33 DAR 20:11], 983 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc  
    Metadata:  
      creation_time   : 2013-03-20 21:45:43  
      handler_name    : Video Media Handler  
Output #0, image2, to '/path/thumb7.jpg':  
  Metadata:  
    major_brand     : mp42  
    minor_version   : 19529845  
    compatible_brands: mp42isom  
    encoder         : Lavf54.63.100  
    Stream #0:0(eng): Video: mjpeg, yuvj420p, 320x240 [SAR 15:11 DAR 20:11], q=2-31, 200 kb/s, 90k tbn, 29.97 tbc  
    Metadata:
      creation_time   : 2013-03-20 21:45:43  
      handler_name    : Video Media Handler  
Stream mapping:  
  Stream #0:1 -> #0:0 (h264 -> mjpeg)  
Press [q] to stop, [?] for help  
frame=    0 fps=0.0 q=0.0 Lsize=N/A time=00:00:00.00 bitrate=N/A      
video:0kB audio:0kB subtitle:0 global headers:0kB muxing overhead -inf%  
Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used)`  

คำตอบ:


1

เมื่อคุณระบุ-t 0.001คุณอาจสิ้นสุดการส่งออกไม่มีอะไร นี่ไม่ใช่วิธีที่ถูกต้องในการบอกว่าคุณต้องการเพียงหนึ่งเฟรม -tตัวเลือกที่จะใช้เวลาอย่างใดอย่างหนึ่งวินาทีหรือการประทับเวลาในHH:MM:SS.mmmรูปแบบ

นี่คือสิ่งที่ควรใช้:

ffmpeg -ss 16 -i /path/source.mp4 -frames:v 1 -s 320x240 /path/thumb4.jpg

โปรดทราบว่า-f image2ไม่จำเป็นต้องใช้ตัวเลือกเนื่องจากรูปแบบเอาต์พุตที่ถูกต้องจะถูกเลือกต่อไป


ฉันเข้าใจ. น่าเสียดายที่ฉันทำงานในโครงการที่มุ่งเน้นเฉพาะผู้ใหญ่เท่านั้น อย่างไรก็ตามตามคำแนะนำของคุณฉันพยายามแปลงไฟล์ MP4 เป็นไฟล์ MP4 อื่นและฉันพบข้อผิดพลาด: การตัดแพ็คเก็ตขนาด 3544 ถึง 682 [h264 @ 0x6784e0] AVC: ขนาดศูนย์ 3534 [h264 @ 0x6784e0] ไม่มีเฟรม! ข้อผิดพลาดขณะถอดรหัสสตรีม # 0: 1: ไม่อนุญาตการดำเนินการ [mov, mp4, m4a, 3gp, 3g2, mj2 @ 0x676040] สตรีม 1 ชดเชย 0x8ffccb: ไฟล์บางส่วน 3IgLCrIR37np070SlwOu.mp4: พบข้อมูลไม่ถูกต้องเมื่อประมวลผลอินพุต
Alex Flo

นั่นหมายความว่าไฟล์ทดสอบของฉันเสียหรือไม่
Alex Flo

ใช่แน่นอน. นั่นเป็นข้อผิดพลาดในการถอดรหัสเนื่องจากสตรีมที่มีรูปแบบไม่ถูกต้อง - ไม่คิดว่าจะซ่อมได้ง่าย
slhck

ฉันเห็น. ขอขอบคุณ. ฉันเรียกใช้ ffmpeg จากสคริปต์ BASH คุณรู้วิธีที่ง่าย ๆ ในการให้สคริปต์ BASH รู้ว่า ffmpeg ล้มเหลวโดยมีข้อผิดพลาดดังนั้นฉันจึงสามารถครอบคลุมตัวเลือกนี้ได้เช่นกัน?
Alex Flo

1
หากคุณรันffmpeg -y -loglevel quiet -i input.mp4 … && echo "yay" || echo "nay"สิ่งนี้ควรตรวจพบข้อผิดพลาดเช่นพิมพ์nayคำสั่งที่ล้มเหลว
slhck
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.