หมายเหตุจากผู้เขียน
ฉันไม่ได้ใช้โปรเจ็กต์นี้หรือให้การสนับสนุนใดๆ อีกต่อไป หากคุณต้องการรักษาโปรเจ็กต์นี้ โปรดส่ง Ping มาให้ฉันที่นี่: [email protected]
โปรเจ็กต์นี้สร้างขึ้นเมื่อ 4 ปีที่แล้ว อาจมีวิธีที่ดีกว่าในการเปลี่ยนวิดีโอเป็น GIF ในตอนนี้ ใช้ Google!
/หมายเหตุจากผู้เขียน
แปลงไฟล์วิดีโอใด ๆ ให้เป็น GIF ภาพเคลื่อนไหวที่ได้รับการปรับปรุง ไม่ว่าจะแบบเต็มความยาวหรือเพียงบางส่วนเท่านั้น
Screencast นี้บันทึกด้วย lolilolicon/FFcast จากนั้นแปลงเป็น GIF ด้วย:
gifify screencast.mkv -o screencast.gif --resize 800:-1
stdin
& stdout
ก่อนที่จะใช้ gifify โปรดติดตั้ง:
$ brew install node
)$ brew install ffmpeg
)$ brew install imagemagick
)$ brew install giflossy
)คุณยังสามารถใช้อิมเมจ gifify Docker ที่มาพร้อมกับทุกอย่างที่ติดตั้งได้
npm install -g gifify
> gifify -h
Usage: gifify [options] [file]
Options:
-h, --help output usage information
-V, --version output the version number
--colors < n > Number of colors, up to 255, defaults to 80
--compress < n > Compression (quality) level, from 0 (no compression) to 100, defaults to 40
--from < position > Start position, hh:mm:ss or seconds, defaults to 0
--fps < n > Frames Per Second, defaults to 10
-o, --output < file > Output file, defaults to stdout
--resize < W:H > Resize output, use -1 when specifying only width or height. ` 350:100 ` , ` 400:-1 ` , ` -1:200 `
--reverse Reverses movie
--speed < n > Movie speed, defaults to 1
--subtitles < filepath > Subtitle filepath to burn to the GIF
--text < string > Add some text at the bottom of the movie
--to < position > End position, hh:mm:ss or seconds, defaults to end of movie
--no-loop Will show every frame once without looping
ดูตัวอย่าง
var fs = require ( 'fs' ) ;
var gifify = require ( 'gifify' ) ;
var path = require ( 'path' ) ;
var input = path . join ( __dirname , 'movie.mp4' ) ;
var output = path . join ( __dirname , 'movie.gif' ) ;
var gif = fs . createWriteStream ( output ) ;
var options = {
resize : '200:-1' ,
from : 30 ,
to : 35
} ;
gifify ( input , options ) . pipe ( gif ) ;
คุณยังสามารถส่งกระแสที่อ่านได้ไปยัง gifify(stream, opts)
Gifify รองรับการสตรีมทั้งบนบรรทัดคำสั่ง ( cat movie.mp4 | gifify -o out.gif
) และใน API แบบเป็นโปรแกรม ( gifify(readableStream, opts).pipe(writableStream)
)
แม้ว่าจะมีประโยชน์อย่างยิ่งในบางกรณี หากคุณมีไฟล์อยู่ในดิสก์อยู่แล้ว คุณควรทำ gifify movie.mp4 -o out.gif
หรือ gifify(filePath, opts).pipe(writableStream)
ทำไม เนื่องจากการวางท่อขนาด 3.4GB เมื่อคุณต้องการตัดจาก 40:20 เป็น 40:22 ยังคงใช้เวลานานและไม่ทำให้คุณได้รับประโยชน์ด้านประสิทธิภาพใดๆ
FFmpeg ต้องอ่านจาก 0GB -> $START_BYTE_40:20 และละทิ้งไป แต่ทุกอย่างไหลอยู่ในความทรงจำของคุณ
เมื่อใช้อินพุตไฟล์โดยตรงจากบรรทัดคำสั่ง เราจะส่งตัวเลือก -i filename
ไปยัง FFmpeg จากนั้นมันก็เร็วมาก!
ระวังเมื่อ |piping
คุณสามารถเขียนข้อความง่ายๆ ลงใน GIF ของคุณได้:
gifify back.mp4 -o back.gif --from 01:48:23.200 --to 01:48:25.300 --text " What?..What?What? "
ผลลัพธ์:
คุณสามารถเบิร์นคำบรรยายลงใน GIF ของคุณได้ ง่ายมาก:
gifify 22.mkv -o movie.gif --subtitles 22.ass --from 1995 --to 2002 --resize 600:-1
คุณต้องสร้างไฟล์คำบรรยายใหม่ รหัสเวลาสำหรับภาพยนตร์ทั้งเรื่องจะใช้ไม่ได้กับ GIF ห้าวินาที
สร้างคำบรรยายโดยใช้ aegisub และเพิ่มขนาดตัวอักษรเพื่อให้ได้เอฟเฟกต์ที่ยอดเยี่ยม!
นี่คือ 22.ass
จากคำสั่งก่อนหน้าซึ่งสร้างด้วย aegisub:
[Script Info]
; Script generated by Aegisub 3.2.1
; http://www.aegisub.org/
Title: Default Aegisub file
ScriptType: v4.00+
WrapStyle: 0
ScaledBorderAndShadow: yes
YCbCr Matrix: None
[Aegisub Project Garbage]
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:02.50,0:00:03.97,Default,,0,0,0,,{fnLiberation Sansfs40}Okay, okay.
Dialogue: 0,0:00:05.00,0:00:06.90,Default,,0,0,0,,{fnLiberation Sansfs40}Okay. Okay.
ผลลัพธ์ในการแยก GIF จาก 22 Jump Street:
On modern hardware GIF is the slowest and most expensive video codec. Can we please allow it to be obsoleted?
https://pornel.net/efficient-gifs#sec44
โยโล!
Giflossy เป็นทางแยกของ gifsicle ผู้เขียน gifsicle กำลังทำงานเพื่อรวมส่วนที่สูญเสียไว้ใน gifsicle
ดังนั้นในเวลาอันสั้น เราจะสามารถใช้แพ็คเกจ gifsicle และ gifiscle ได้โดยตรง
jclem/gifify เป็นแหล่งแรงบันดาลใจที่ยอดเยี่ยม