CATATAN DARI PENULIS
Saya tidak lagi menggunakan proyek ini atau memberikan dukungan apa pun padanya, jika Anda ingin mempertahankannya, hubungi saya di sini: [email protected].
Proyek ini dibuat 4 tahun yang lalu, sekarang mungkin ada cara yang lebih baik untuk mengubah video menjadi GIF, gunakan Google!
/CATATAN DARI PENULIS
Konversikan file video apa pun menjadi GIF animasi yang dioptimalkan. Baik seluruhnya atau hanya sebagian saja.
Screencast ini direkam dengan lolilolicon/FFcast kemudian diubah menjadi GIF dengan:
gifify screencast.mkv -o screencast.gif --resize 800:-1
stdin
& stdout
Sebelum menggunakan gifify, harap instal:
$ brew install node
)$ brew install ffmpeg
)$ brew install imagemagick
)$ brew install giflossy
)Anda juga dapat menggunakan image gifify Docker yang disertakan dengan semua yang terinstal.
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
Lihat contohnya.
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 ) ;
Anda juga dapat meneruskan aliran yang dapat dibaca ke gifify(stream, opts)
.
Gifify mendukung streaming baik di baris perintah ( cat movie.mp4 | gifify -o out.gif
) dan di API terprogram ( gifify(readableStream, opts).pipe(writableStream)
).
Meskipun sangat berguna dalam beberapa kasus, jika Anda sudah memiliki file di disk, sebaiknya lakukan gifify movie.mp4 -o out.gif
atau gifify(filePath, opts).pipe(writableStream)
.
Mengapa? Karena pemipaan 3,4 GB saat ingin memotong dari 40:20 ke 40:22 masih memakan waktu sangat lama dan tidak memberikan manfaat kinerja apa pun.
FFmpeg harus membaca dari 0GB -> $START_BYTE_40:20 dan membuangnya. Tapi semuanya mengalir dalam ingatanmu.
Saat menggunakan input file langsung dari baris perintah, kami meneruskan opsi -i filename
ke FFmpeg dan kemudian menjadi super cepat!
Hati-hati saat |piping
.
Anda dapat membakar beberapa teks sederhana ke dalam GIF Anda:
gifify back.mp4 -o back.gif --from 01:48:23.200 --to 01:48:25.300 --text " What?..What?What? "
Hasil:
Anda dapat membakar subtitle ke dalam GIF Anda, semudah itu:
gifify 22.mkv -o movie.gif --subtitles 22.ass --from 1995 --to 2002 --resize 600:-1
Anda harus membuat file subtitle baru, kode waktu untuk film lengkap tidak akan berfungsi untuk GIF lima detik.
Buat subtitle menggunakan aegisub dan perbesar ukuran font untuk efek yang luar biasa!
Inilah 22.ass
dari perintah sebelumnya, dibuat dengan 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.
Hasil mengekstraksi GIF dari 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/efisien-gifs#sec44
YOLO!
Giflossy adalah cabang dari gifsicle, penulis gifsicle saat ini sedang berupaya mengintegrasikan bagian yang hilang ke dalam gifsicle.
Jadi dalam waktu singkat kita bisa langsung menggunakan paket gifsicle dan gifiscle.
jclem/gifify adalah sumber inspirasi yang hebat.