Video bilgisayarda sorunsuz açılıyor ama telefonda ya hiç açılmıyor ya da yeşil/siyah ekran veriyor. WhatsApp durumunda yükleniyor gibi görünüp sonra sessizce düşüyor. Bazı durumlarda ses geliyor, görüntü yok.
Neden
İşin özü piksel formatı ve profil uyumsuzluğu. Telefonların donanım çözücüleri genelde yuv420p bekler. Kaynak yuv444p veya 10-bit ise (H.264 High 4:4:4 Predictive gibi) cihaz bunu çözemez. Ayrıca moov atomu dosyanın sonundaysa video bağlantıdan açılırken tamamı inmeden oynamaya başlamaz.
Kontrol
Önce dosyanın gerçekte ne olduğuna bakın:
ffprobe -v error -select_streams v:0 -show_entries stream=pix_fmt,profile,codec_name -of default=nw=1 video.mp4Çıktıda yuv444p, yuv420p10le veya High 4:4:4 görürseniz sorun burada.
Düzeltme
Tek komutla uyumlu hale getirebilirsiniz:
ffmpeg -i girdi.mp4 -c:v libx264 -pix_fmt yuv420p -profile:v high -level 4.1 -movflags +faststart -c:a aac -b:a 160k cikti.mp4Burada pix_fmt yuv420p donanım uyumluluğunu, profile/level cihaz desteğini, faststart ise moov atomunu başa taşıyıp anında oynatmayı sağlar.
Filtre zincirleri
xfade, overlay, scale gibi filtrelerden sonra çıktı formatı bozulabilir. Zincirin sonuna mutlaka şunu ekleyin:
-vf "...,format=yuv420p"Tek sayılı çözünürlük
Genişlik veya yükseklik tek sayıysa libx264 hata verir. Ölçeği çift sayıya çekin:
-vf "scale=trunc(iw/2)*2:trunc(ih/2)*2,format=yuv420p"Son kontrol listesi
pix_fmt yuv420p mi, profil High ve level 4.1 mi, faststart eklendi mi, çözünürlük çift sayı mı, ses AAC mi? Hepsini ffprobe ile bir kez daha doğrulayın.
Sorunuz olursa yazın.