Yapay Zeka Destekli Video Editor Kit İle Siyah Beyaz Videoları Renklendirme

Tolgahan Tutar
Huawei Developers - Türkiye
7 min readApr 28, 2022
Kaynak

Giriş

Sosyal medya uygulamalarının giderek yaygınlaşması ile beraber fotoğraflar ve videolar hayatımızda önemli ölçüde yer edinmeye başladı. Aynı zamanda bu görseller üzerinde düzenlemeler yapmak da büyük bir ihtiyaç haline geldi. Bütün bunlar göz önünde bulundurulduğunda fotoğraf/video düzenleme uygulamalarının son zamanlarda oldukça popülerleştiğini rahatlıkla söyleyebiliriz. Huawei’nin sunmuş olduğu Video Editor Kit ile çok sayıda video düzenleme özelliğini hızlı bir şekilde uygulamalarımıza entegre edebilir ve kullanıcılara sunabiliriz. Bugünkü yazımda hem Video Editor Kit içerisindeki yapay zeka özelliklerini nasıl kullanabileceğimizi anlayacağız hem de adım adım siyah beyaz videoları renklendiren bir uygulama oluşturacağız. Uygulama bittiğinde aşağıdaki gibi olacak ;

Uygulama bittiğinde siyah beyaz bir görseli şekildeki gibi renklendirip galerimize kaydedebileceğiz.

Önemli Not: Video Editor Kit ve Huawei’nin sunmuş olduğu diğer kitleri kullanabilmek için bir AppGallery Connect hesabına sahip olmanız gerekiyor. Eğer henüz bir hesap oluşturmadıysanız link üzerinden hesap oluşturabilir ve farklı özelliklerdeki diğer kitleri de kolayca kullanmaya başlayabilirsiniz.

Proje Konfigürasyonu

AppGallery Connect hesabımızı oluşturduktan sonra, Video Editor Kit’i projemizde kullanabilmemiz için AppGallery Connect üzerinden yeni bir uygulama oluşturup bazı konfigürasyonlar yapmamız gerekiyor. Aşağıdaki makaleyi inceleyerek nasıl yeni bir uygulama oluşturabileceğinizi ve oluşturduğunuz uygulamaya HMS Core’u nasıl entegre edebileceğinizi adım adım görebilirsiniz.

Android | Uygulamalarınıza Huawei HMS Core Entegre Edin | by Ibrahim R. Serpici | Huawei Developers — Türkiye | Medium

HMS Core’u entegre ettikten sonra projemizde Video Editor Kit’i kullanabilmek için AppGallery Connect üzerinden Video Editor Kit’i aktif etmeliyiz. Bunun için ilk olarak AppGallery Connect’e giriş yapıp kendi projemizi seçiyoruz:

Projemizi Seçiyoruz

Daha sonra projemizin ayarlarının gözüktüğü sayfa açılıyor. Sağ üst tarafta Video Editor Kit’i kullanacağımız uygulamanın seçili olduğundan emin olduktan sonra Manage APIs menüsünü seçiyoruz.

Manage APIs menüsünü seçiyoruz

Manage API’yi seçtikten sonra karşımıza birden fazla servis çıkıyor. Bizim ihtiyacımız olan Video Editor Kit olduğu için Video Editor Kit’i aktif ediyoruz.

Video Editor Kit’i aktif hale getiriyoruz.

Video Editor Kit, UI SDK ve Fundamental Capability SDK olmak üzere geliştiricilere iki farklı SDK sunuyor. UI SDK oldukça basit bir entegrasyona sahip ve kendi içinde barındırdığı oldukça şık bir arayüzle, kullanıcılara hazır bir şekilde bir video düzenleme uygulaması içinde bulunabilecek tüm özellikleri sunuyor. Bir diğer taraftan Fundamental SDK ise yapay zeka destekli video düzenleme özelliklerine sahipken aynı zamanda tasarımı geliştiricilere bırakarak özgür bir tasarım imkanı veriyor. Bu kısımda ihtiyacımız doğrultusunda bir SDK seçmemiz gerekiyor. Çünkü her bir projede SDK’lerden yalnızca bir tanesini kullanabiliyoruz. Biz uygulamamızda yapay zeka destekli renklendirme fonksiyonunu kullanacağımızdan Fundamental SDK’yi entegre edeceğiz. UI SDK’i de incelemek istiyorsanız aşağıdaki yazıya tıklayıp inceleyebilirsiniz.

Hangi SDK’yi kullanacağımıza da karar verdikten sonra kütüphanelerimizi ekleyebiliriz. Projemizde kullanacağımız AI Color için aşağıdaki kütüphaneleri projemize ekliyoruz.

Gradle dosyamızı senkronize ettikten sonra projemizin konfigürasyon işlemlerini bitirmiş oluyoruz. Uygulamamızı geliştirmeye başlayabiliriz.

Tasarım

Yazının başında görmüş olduğunuz gibi, ekranda videoların oynatılabilmesi için bir alan ve onun altında da video/fotoğraf seçimi, renklendirme, çıktı alma gibi işlemler için butonlar bulunmakta. Anasayfamızın tasarım kodları aşağıdaki şekilde :

Anasayfa tasarımının dışında iki adet özel Dialog nesnesi bulunmakta. Bir tanesinde uzun süren işlemlerde yüzdeyi gösterme amaçlı Progress, diğerinde ise videoyu export ederken ayarları seçebileceğimiz RadioGrouplar var. Progress Dialog:

Export Settings Layout:

Kodlama

Video Editor Kit’in temel entegrasyonunu sağlamak için ilk olarak Video Editor Kit’e bir Access Token, API Key ve License ID vermeliyiz. Bu kısımda Video Editor Kit Access Token’ı zorunlu tutmuyor fakat daha güvenli API çağrıları için uygulamalarımızda Access Token kullanılması öneriliyor. Ben uygulamamı demo amacıyla yaptığım için Access Token entegrasyonu yapmadım. Access Token’ı nasıl alacağınızı öğrenmek için linke tıklayıp inceleyebilirsiniz. API Key’i ise projemize eklediğimiz agconnect-services.json dosyasından ya da AppGallery Connect üzerindeki proje ayarları sayfasından alabiliriz. License ID’ye de kendi belirlediğimiz bir String değerini atayabiliriz. License ID ile ilgili bilmemiz gereken en önemli şeylerden birisi License ID’nin 1 gün içerisinde 3 kere kullanılabileceğidir. Kullanıcı uygulamayı her silip yüklediğinde 1 hakkını tüketmiş olur. 3 hakkı da biten kullanıcılar o gün saat 00:00'dan sonra Video Editor Kit’i tekrar kullanabilirler. Şu an için Video Editor Kit kullanımında herhangi bir ücret talep edilmediği için böyle bir senaryo izlenmiş. License ID’leri her bir kullanıcı özelinde unique olarak oluşturmalıyız. Bu şekilde ilerleyen zamanda bir ücretlendirme politikası belirlendikten sonra isteğe bağlı olarak kullanıcıları belirli bir noktadan sonra kısıtlayabilir ve ücretlendirme politikası uygulayabiliriz. Ben örnek uygulamamda kotaya takılmamak için ve sadece kendim kullanacağım için her seferinde License ID’yi rastgele alacak şekilde kod yazdım. Aşağıda temel entegrasyon için yazdığım kodları görebilirsiniz:

API Key ve License ID’yi verdikten sonra düzenleme işlemi için kullanacağım değişkenleri tanımlıyorum. Bu değişkenler HuaweiVideoEditor, HVETimeLine, HVEVideoLane ve HVEVisibleAsset sınıflarından oluşturulmakta.

editor değişkenimiz projemizin temel nesnesi olup başlangıç için initialize etmemiz gereken bir değişken. timeLine, o an editor içindeki videolarin başlangıçtan bitişine kadarki uzunluğunu ifade ederken videoLane ise eklediğimiz videoları içinde tutan bir yapı. visibleAsset değişkeni ise bizim üzerinde değişiklik yapacağımız ve daha sonra export edeceğimiz videomuzun tutulacağı değişken. Video Editor Kit ile editörümüze video dışında yine ses, sticker veya efektler ekleyebiliriz. Linke tıklayarak detaylı bir şekilde inceleyebilirsiniz.

Değişkenlerimizin tiplerini belirledikten sonra değer atamalarını yapalım :

Editorümüzü uygulamada kullanabilmek için initEnvironment() fonksiyonu ile beraber çağırmamız gerekiyor. Bu işlemi de yapalım :

Bütün bu işlemlerden sonra layout, buton ve textleri de tanımladıktan sonra fonksiyonlarımızı yazmaya başlayabiliriz. İlk olarak resim ve video seçme butonlarının click işlemlerini yazalım. Bu butonlara tıkladıktan sonra uygulama bizi kullanıcının galerisine yönlendireceği için ilk olarak ihtiyacımız olan READ_EXTERNAL_STORAGE ve WRITE_EXTERNAL_STORAGE izinlerinin alınıp alınmadığını kontrol ediyoruz.

Eğer gerekli izinler alınmışsa uygulama openGallery() fonksiyonunu çağırarak kullanıcının galerisini açıyor. Aksi durumda kullanıcıdan gerekli izinleri istiyor ve kullanıcının onayından sonra yine openGallery() fonksiyonu çağrılıyor.

Tıklanılan butona göre video mu yoksa resim mi seçileceği belirleniyor. Galeri açılıyor ve kullanıcı galerisinden bir video veya resim seçiyor.

Video Editor Kit, video formatı olarak: MP4, 3GP, 3G2, MKV, MOV ve WebM formatlarını, resim olarak ise: BMP, JPG ve PNG formatlarını desteklemekte.

Galeriden bir dosya seçildikten sonra tekrar uygulamaya dönüyoruz. Bu kısımda ilk olarak bir dosya seçilip seçilmediğini kontrol ediyoruz. Daha sonraki aşamalar ise sırasıyla şöyle:

  1. Eğer bir dosya seçilmişse, editörümüze dosya yolu üzerinden video ekleyeceğimiz için FileUtils isimli class sayesinde dosyanın cihazdaki konumunu alıyoruz.(Bu class’ı proje sonunda paylaşacağım GitHub linkinde bulabilirsiniz.)
  2. visibleAsset isimli değişkenimize eğer resim seçilmişse videoLane.appendImageAsset(filePath), eğer video seçilmişse videoLane.appendVideoAsset(filePath) değerlerini atıyoruz.
  3. Videoların gösterilmesi için oluşturduğumuz layout’u editorün kullanılacağı layout olarak tanımlıyoruz.
  4. Kendi oluşturduğumuz video oynatıcısında bulunan seekBar için videonun süresini seekBar’ın maksimum progressi olarak veriyoruz.
  5. Bu süreyi mm:ss formatına çevirip, video oynatıcımızda gösteriyoruz.

Bu işlemlerden sonra seçmiş olduğumuz görsel aşağıdaki gibi editörümüzde gözüküyor:

Görseli seçtikten sonra editörümüzde gözüküyor.

Video Editor Kit resimleri otomatik olarak video haline çevirip 3 saniye şeklinde editörde gösterir. Eğer video seçerseniz videonun uzunluğunu değiştirmeden olduğu gibi editöre ekleyebilirsiniz. Kullanacağımız AI Color özelliği için seçilecek videonun maksimum boyutu 100 MB olmalıdır.

Seçmiş olduğumuz video, editörümüzde gözüktükten sonra, yine Video Editor Kit’in sunmuş olduğu fonksiyonlar sayesinde videoyu oynatma, durdurma, ileri/geri sarma işlemlerini yapabiliriz. Editördeki bir videoyu oynatmak için playTimeLine(startTime, endTime) fonksiyonunu, durdurmak için ise pauseTimeLine() fonksiyonunu kullanabiliriz. Videoyu istenilen zamana sarmak için seekTimeLine(startTime) fonksiyonunu kullanabiliriz. Oynatma işlemlerini takip etmek için PlayCallback değişkeni oluşturup videonun oynamaya başladığı, oynadığı, durduğu veya oynatırken hata aldığı durumları yakalayabiliriz. playVideo() fonksiyonumuz:

playCallBack değişkenimiz:

Editörümüze video oynatma, durdurma, ileri/geri sarma özelliklerini de ekledikten sonra artık videoyu renklendirme aşamasına geçebiliriz. Bu işlemin başlaması için visibleAsset.addColorAIEffect() fonksiyonunu çağırıyoruz ve callback ile birlikte işlemi kontrol ediyoruz.

Başarılı bir şekilde işlem tamamlandıktan sonra yeni videomuzu editörde göstermek için onSuccess() içerisinde tekrar editörümüzün görünümünü setDisplay() fonksiyonu ile yeniliyoruz. Bu işlemlerden sonra uygulamamızın görüntüsü aşağıdaki gibi oluyor:

Convert işleminden sonra editörümüzde renklendirilmiş video gözüküyor.

Görmüş olduğunuz gibi Video Editor Kit’in arkasındaki güçlendirilmiş yapay zeka ile çok doğal bir görünüm elde ediyoruz. Dönüştürülmüş videomuzu editörümüz üzerinde görüntüledikten sonra Export işlemine geçebiliriz. Export butonuna bastıktan sonra aşağıdaki gibi bir ekranla karşılaşıyoruz:

Export seçenekleri ekranı.

Video Editor Kit bize videoları 24–25–30–50–60 frame rate’de ve 720, 1080, 2K, 4K çözünürlükte export etme imkanı sunuyor. Kullanıcı frame rate ve resolution değerlerini seçtikten sonra dosya adını da girerek export butonuna basıyor ve HVEExportManager().exportVideo() fonksiyonu ile export işlemini başlatıyoruz.

Son olarak export işlemi için bir callback oluşturup işlemin durumunu takip ediyoruz.

Bu işlemlerden sonra eğer hata almazsak dönüştürdüğümüz yeni videomuz kullanıcının cihazında belirtilen dosyaya MP4 uzantısı ile kaydediliyor.

Sonuç

Bu yazıda Video Editor Kit’i uygulamalarımıza nasıl entegre edeceğimizi öğrenmiş olduk. İçerisinde bulunan bazı fonkiyonları öğrendik.Ayrıca içerisindeki yapay zeka desteği sayesinde siyah beyaz videoları renklendirmek için bir uygulama oluşturduk.

Referans

--

--