Proyek python converter video ke gif dengan kode sumber

Dengan pengonversi video2gif ini, Anda dapat mengunggah semua format video dan file multimedia untuk mengubahnya menjadi GIF animasi berkualitas tinggi

Persyaratan

Piton 3. 6+, pysimplegui,opencv-python dan paket umum lainnya yang terdaftar di requirements.txt

Instalasi

  1. Kloning repositori ini
  2. Instal dependensi

    pip3 install -r requirements.txt

  3. Jalankan setup dari direktori root repositori

    python3 setup.py install
    _

Mulai

  1. Mulai antarmuka

    python3 vgif/main.py

  2. Pilih berkas video
  3. Tetapkan opsi
  4. Klik tombol "Mulai" untuk memulai
  5. Setelah dimulai konverter akan menyimpan output di bawah video sumber iklan folder yang sama
  6. Klik tombol "Mulai Ulang" untuk memulai kembali proses ini
  7. Klik tombol "Keluar" untuk mengakhiri program ini

Antarmuka

Pilihannya termasuk

  • Tingkat Sampel Video. Setel laju sampel untuk video sumber [sampel default setiap 10 bingkai]
  • Keluarkan FPS GIF. Atur output GIF fps [default 10 fps]
  • Tingkat Pengubahan Ukuran Video. Kecilkan video n kali lebih kecil [default 2 kali lebih kecil]

Kutipan

Gunakan bibtex ini untuk mengutip repositori ini

@misc{ouzheng1993,
  title={video2gif},
  author={ou zheng},
  year={2020},
  publisher={Github},
  journal={GitHub repository},
  howpublished={\url{//github.com/ozheng1993/video2gif}},
}

Melakukan

  • Ukuran GIF
  • keluaran berkas

Berkontribusi

Kontribusi ke repositori ini dipersilakan. Contoh hal-hal yang dapat Anda kontribusikan

  • perbarui README
  • memperbarui antarmuka pengguna

Terkadang menghasilkan GIF animasi yang bagus memerlukan beberapa penyesuaian tingkat lanjut, yang dapat membantu pembuatan skrip. Jadi saya menambahkan fitur ekspor GIF ke MoviePy, paket Python yang awalnya ditulis untuk pengeditan video

Untuk demo ini kami akan membuat beberapa GIF dari trailer ini

Anda dapat mengunduhnya dengan perintah ini jika Anda telah menginstal Youtube-dl

1
youtube-dl 2Jw-AeaU5WI -o frozen_trailer.mp4

Mengubah kutipan video menjadi GIF

Berikut ini kami mengimpor MoviePy, kami membuka file video, kami memilih bagian antara 1'22. 65 [1 menit 22. 65 detik] dan 1'23. 2, kurangi ukurannya [menjadi 30% dari aslinya] dan simpan sebagai GIF

1
2
3
4
5
6
from moviepy.editor import *

clip = [VideoFileClip["frozen_trailer.mp4"]
        .subclip[[1,22.65],[1,23.2]]
        .resize[0.3]]
clip.write_gif["use_your_head.gif"]

Memotong gambar

Untuk GIF saya berikutnya, saya hanya akan mempertahankan bagian tengah layar. Jika Anda bermaksud menggunakan MoviePy, perhatikan bahwa Anda dapat mempratinjau klip dengan

1
2
3
4
5
6
0. Selama pratinjau mengklik piksel akan mencetak posisinya, yang nyaman untuk dipotong dengan presisi

1
2
3
4
5
kris_sven = [VideoFileClip["frozen_trailer.mp4"]
             .subclip[[1,13.4],[1,13.9]]
             .resize[0.5]
             .crop[x1=145,x2=400]] # remove left-right borders
kris_sven.write_gif["kris_sven.gif"]

Membekukan suatu wilayah

Banyak pembuat GIF suka membekukan beberapa bagian GIF untuk mengurangi ukuran file dan/atau memfokuskan perhatian pada satu bagian animasi

Di GIF berikutnya, kami membekukan bagian kiri klip. Untuk melakukannya, kami mengambil cuplikan klip pada t=0. 2 detik, kami memotong snapshot ini hanya untuk menyimpan setengah kiri, lalu kami membuat klip komposit yang melapiskan snapshot yang dipotong pada klip asli

1
2
3
4
5
6
7
8
9
10
11
12
anna_olaf = [VideoFileClip["frozen_trailer.mp4"]
             .subclip[87.9,88.1]
             .speedx[0.5] # Play at half speed
             .resize[.4]]

snapshot = [anna_olaf
            .crop[x2= anna_olaf.w/2] # remove right half
            .to_ImageClip[0.2] # snapshot of the clip at t=0.2s
            .set_duration[anna_olaf.duration]]

composition = CompositeVideoClip[[anna_olaf, snapshot]]
composition.write_gif['anna_olaf.gif', fps=15]

Membekukan wilayah yang lebih rumit

Kali ini kita akan menerapkan custom mask ke snapshot untuk menentukan di mana itu akan transparan [dan membiarkan bagian animasi muncul].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import moviepy.video.tools.drawing as dw

anna_kris = [VideoFileClip["frozen_trailer.mp4", audio=False]
             .subclip[[1,38.15],[1,38.5]]
             .resize[.5]]

# coordinates p1,p2 define the edges of the mask
mask = dw.color_split[anna_kris.size, p1=[445, 20], p2=[345, 275],
                      grad_width=5] # blur the mask's edges

snapshot = [anna_kris.to_ImageClip[]
            .set_duration[anna_kris.duration]
            .set_mask[ImageClip[mask, ismask=True]]

composition = CompositeVideoClip[[anna_kris,snapshot]].speedx[0.2]
# 'fuzz' [0-100] below is for gif compression
composition.write_gif['anna_kris.gif', fps=15, fuzz=3]

Simetri waktu

Tentunya Anda telah memperhatikan bahwa di GIF sebelumnya, akhir tidak selalu terlihat seperti awal. Akibatnya, Anda dapat melihat gangguan setiap kali animasi dimulai ulang. Cara untuk menghindarinya adalah dengan menyelaraskan waktu klip, mis. e. untuk membuat klip diputar sekali ke depan, lalu sekali ke belakang. Dengan cara ini akhir klip benar-benar menjadi awal klip. Ini menciptakan GIF yang dapat berputar dengan lancar, tanpa awal atau akhir yang nyata

youtube-dl 2Jw-AeaU5WI -o frozen_trailer.mp4
0
youtube-dl 2Jw-AeaU5WI -o frozen_trailer.mp4
1

Oke, ini mungkin contoh buruk dari simetri waktu, ini membuat butiran salju naik ke atas di paruh kedua animasi

Menambahkan beberapa teks

Di GIF berikutnya akan ada klip teks yang dilapiskan pada klip video

youtube-dl 2Jw-AeaU5WI -o frozen_trailer.mp4
2
youtube-dl 2Jw-AeaU5WI -o frozen_trailer.mp4
3

Membuat gif dapat diulang

GIF berikut menampilkan banyak salju yang turun. Oleh karena itu, tidak dapat dibuat berulang menggunakan simetri waktu [atau salju akan melayang ke atas. ]. Jadi kami akan membuat animasi ini dapat diulang dengan membuat awal animasi muncul secara progresif [memudar] tepat sebelum akhir klip. Montase di sini agak rumit, saya tidak bisa menjelaskannya lebih baik daripada dengan gambar ini

youtube-dl 2Jw-AeaU5WI -o frozen_trailer.mp4
4
youtube-dl 2Jw-AeaU5WI -o frozen_trailer.mp4
5

Contoh lain dari GIF yang dibuat dapat diulang

Klip berikutnya [dari film Charade] hampir dapat diulang. Anda bisa melihat Carry Grant tersenyum, lalu memasang wajah lucu, lalu kembali normal. Masalahnya adalah di akhir kutipan Cary tidak persis berada di posisi yang sama, dan dia tidak tersenyum seperti di awal. Untuk memperbaikinya, kami mengambil snapshot dari bingkai pertama dan membuatnya muncul secara progresif di bagian akhir. Ini sepertinya berhasil

1
2
3
4
5
6
7
8
9
10
11
12
youtube-dl 2Jw-AeaU5WI -o frozen_trailer.mp4
7

Selesai besar. penghapusan latar belakang

Mari selami kegilaan scripting lebih jauh. kami menganggap video ini sekitar 2'16 [edit. bukan video yang awalnya saya gunakan, itu dihapus oleh pengguna Youtube, saya tambahkan untuk mencari tautan lain]

Dan kami akan menghapus latar belakang untuk membuat gif ini [dengan latar belakang transparan]

Kesulitan utama adalah menemukan apa latar belakang adegan itu. Untuk melakukannya, skrip mengumpulkan beberapa gambar di mana babi kecil berada pada posisi yang berbeda [sehingga setiap bagian dari latar belakang terlihat pada setidaknya beberapa [sebenarnya sebagian besar] slide, maka dibutuhkan piksel per-

Bagaimana cara mengonversi video ke GIF menggunakan Python?

Untuk akhirnya mengonversi video menjadi gif, Anda perlu memasukkan variabel videoClip dan menggunakan metode write_gif[] di dalamnya, lalu tentukan nama yang ingin Anda berikan ke . Periksa folder tempat file video berada dan Anda akan melihat file gif. . Check the folder inside which the video file is located and you should see the gif file.

Bagaimana cara mengubah video menjadi GIF?

Begini caranya. .
Buka YouTube dan temukan video yang ingin Anda ubah menjadi GIF
Salin URL, lalu arahkan ke GIPHY
Klik Buat di pojok kanan atas
Rekatkan URL YouTube ke dalam kotak yang bertuliskan Any Url
Kemudian, gunakan penggeser untuk menyesuaikan layar sebelah kanan untuk menampilkan klip dari video yang ingin Anda ubah menjadi GIF

Bagaimana Anda membuat kode GIF dengan Python?

Membuat Animasi .
impor glob
dari PIL impor Gambar
def make_gif[folder_bingkai]
bingkai = [Gambar. buka[gambar] untuk gambar di glob. glob[f"{frame_folder}/*. JPG"]]
frame_one = bingkai[0]
frame_one. simpan["my_awesome. gif", format="GIF", append_images=bingkai,
save_all=Benar, durasi=100, putaran=0]
make_gif["/jalur/ke/gambar"]

Bisakah Anda mengubah MP4 menjadi GIF?

Konversi video MP4 menjadi GIF yang dapat dibagikan dengan mudah . Unggah video MP4 Anda ke konverter online kami, pilih jenis kualitas berdasarkan tujuan Anda, dan langsung unduh GIF baru Anda, siap untuk dibagikan.

Bài mới nhất

Chủ Đề