Ffmpeg ve ffmpeg kullanan gui programlarla render alırken artifactleri engelleme

Started by Nommalorel, Jul 02, 2024, 08:23 PM

Previous topic - Next topic

Nommalorel

FFMPEG VE MOV DÖNÜŞTÜRME PROBLEMİ

Çoğunlukla bütün video formatı içeren işlerim için media encoder'dan ffmpeg'e geçmiştim. Fakat daha sonra ffmpeg ile bir .mov dosyasını .mp4'e çevirmeye çalıştığımda başarısız olduğumu fark ettim.

İlk kullandığım kod
ffmpeg -i {inname}.mov {outname}.mp4}

Bu kod normalde diğer her türlü videoyu istediğim video formatına çevirmeme yardımcı olmuştu fakat bu sefer çalışmadı. Bu yüzden ben de internette küçük bir araştırma yaparak şu koda ulaştım:

İkinci kod
ffmpeg -i in.mov -c:v libx264 -c:a aac -vf format=yuv420p -movflags +faststart out.mp4

Fakat bu sefer de karakterin çevresinde garip artifactler ve bozulmalar çıkararak bir render elde etmiştim. Adobe Media Encoder kullanmama isteğim sebebiyle bir tür FOSS "Free Open Source" video dönüştürücü aramaya koyuldum. Bu sırada Shutter Encoder ve Olive Video Editor Programlarına rastladım. Shutter encoder nedeninin bilmediğim bir sebeple ilk kullandığımda çalışmadı (Daha sonra öğrendim ki programın desteklediği belli boyutlar varmış ve istediğim çıktı bu boyutlardan birine uymadığında hata veriyormuş. Programın desteklediği bir boyut seçtiğimde çalıştı.) bu sebeple ben de gayet iyi çalışan olive video editor'u kullanmaya başladım. Bir süre kullandıktan sonra gayet memnun kalmıştım ama açıkçası videoları biraz kalitesiz export alıyordu bu sebeple tekrar bir alternatif arama yoluna koyuldum. Bir dünya ffmpeg kullanan video dönüştürücü GUI buldum fakat hepsinden garip bozulma problemi alıyordum.

Adobe media encoder ile dönüştürdüğüm ilk kare:


Shutter Encoder ile dönüştürdüğüm ilk kare:


Sorunun çözümü:

Bir sebepten ötürü ffmpeg alpha channel sahibi (arkaplanı transparan) videoları daha sonra alpha channel'ına sahip olmayacak videolara dönüştürürken problem yaşıyor. Bu sebeple Reddit üzerinde yaptığım bir sorguyla smushkan isimli reddit kullanıcısından aldığım cevap üzerine mov render alırken bu kez spine programında karakterimin arkasına arkaplan koyarak ve bir kez de arkaplan olmadan ve spine'da render alma özelliklerinden transparan özelliğini kapatarak render aldım. Bu sayede mov dosyasının transparan bir arkaplanı olmadığından ffmpeg dönüştürürken problem yaşamadı ve olması gerektiği şekilde dönüştürdü.

Dönüştürmek için kullandığım kod buydu.

İkinci kod
ffmpeg -i in.mov -c:v libx264 -c:a aac -vf format=yuv420p -movflags +faststart out.mp4

Kısacası: ffmpeg ile dönüştürürken mov un arkası transparan olmasın.


Bu problemin çözümünün takibi için: https://trac.ffmpeg.org/ticket/11081#ticket

#shutter-encoder, #ffmpeg, #adobe-media-encoder


Dosyalarıma ulaşmak isterseniz:

Soulseek: ommalorel
GigaTribe: Nommalorel