>>1131Teşekkür ederim, ileteceğim :) Ben sadece ondan öğrendiklerimi aktarıyorum.
>>1133Şu attığım resim ikisi arasındaki farkı güzelce özetlemiş ama bir de ben özetleyeyim.
Kamera sensöründen aldığı görüntü iki farklı şekilde sıkıştırabilir: intra compression ve interframe compression.
intra çok basit ve ilkel bir yöntem. sensörden aldığı bir kareyi direkt jpeg gibi bir resim sıkıştırma algoritması ile sıkıştırıyor. yani her kareyi tek tek diğerlerinden bağımsızmış gibi değerlendirip sıkıştırıyor. sonra bu sıkıştırılmış resimleri arka arkaya ekliyor. mesela mjpeg tam olarak böyle böyle bir codec. jpeglerin bir araya getirilmesinden ibaret. zaten açılımı da Motion Jpeg.
bunun çok verimsiz bir sıkıştırma olacağı belli. çünkü ardışık 2 karede aslında çok çok küçük farklılıklar vardır, belki sadece 10 pixelin rengi değişti, ama intraframe codec'ler buna bakmaz.
Bunun tek avantajı pek işlemci gücü gerektirmemesi, kare geldikçe hızlıca sıkıştıp hafızaya yazıyor.
interframe codec'lerde ise çok daha karışıktır, ben yine çok basitleştirerek anlatıyorum tabi.
sensörden gelen karelerin atıyorum 100 tanesi geçici hafızada toplanır.
bunlar arasında keskin sahne geçişi olan yerler belirlenir bunlar keyframe yapılır
bunlar aynı bir resim gibi sıkıştırırılır,
bunların hemen ardından gelen görüntüler ise sadece aradaki farkı kodlar. "şuradaki pixelin rengi maviden yeşile döndü" gibi
aynı anda birden fazla kareye bakılıp analiz edilerek en optimal sıkıştırmayı yapmaya çalışmak çok daha işlemci gücü gerektirir tabi. ama kameraların işlemci gücü düşük olduğu için daha kötü ayarlarla sıkıştırma yaparlar, atıyorum son 100 kareyi analiz etmez de son 20 kareye bakar…
profesyoneller görüntü sıkıştırma işini ciddiye alır, kameraların aptal işlemcilerine bırakmaz. kamera çektiği görüntüyü hiç sıkıştırmadan raw olarak hafızaya kaydeder, sonra bu görüntüler bilgisayarda yüksek işlemci gücü ve gelişmiş ayarlarla yavaş yavaş sıkıştırılır.
interframe compression çok daha üstün olduğu için çok dandik güvenlik kameraları hariç çoğu yerde o kullanılır.
üstteki verdiğim posta interframe örneğine dönecek olursak,
K1 D D D D D
| D D D D K2 D D D D D D D D K3 D D D D
sen tam olarak şu işaretlediğim yerden videoyu kesersen yeni video şu olur:
D D D D K2 D D D D D D D D K3 D D D D
video oynatıcılar en baştaki Delta framelerine anlam veremez çünkü referans alabilecekleri bir keyframe yok. o yüzden K2 keyframe'ine gelene kadar görüntü oynamaz. K2'den normal şekilde oynar.
sen o noktadan kayıpsız kesmek istediğinde (yani ffmpeg'deki -c:v copy), program tam olarak o kareyi seçmek yerine K2'yi seçip şöyle bir çıktı da verebilir:
K2 D D D D D D D D K3 D D D D
bu sefer de video istediğinden tam istediğin yerden başlamamış oldu.