2008-08-27 25 views
0

Yaygın video formatları için çerçeve başlangıç ​​kodlarının bir listesini (MPEG-1/2/4, .wmv, .mov vb.) Bilen herkes (veya içerdiği bir kaynağı biliyorsanız). Örneğin, bir MPEG-1 video karesi (bence) her zaman "00 00 01 00" ile başlayacaktır.Video Kodek start kodları

Özünde bunları bilmek istiyorum, böylece bir dizi farklı video formatı için bir video boyunca karelerin başlangıcını otomatik olarak bulabilen bir program yazabilirim.

cevap

1

Neyi başarmak istiyorsunuz?

Bu, video kabı türlerinin nasıl yapılandırıldığı sorusu mu?

örneğin bakınız: http://www.daubnet.com/formats/AVI.html avi dosyaları nasıl yapılandırılmıştır tanımıdır

. Google, diğer kapsayıcı dosya biçimlerini bulmanıza yardımcı olabilir.

Bir video kaydettiğinizde, normalde tek tek karelerden oluşur, bir dizinde ayrı bitmap dosyaları düşünülür.

Sadece 1 dosya video dosyasına sahip olmak için, bu kareler akışı, içerikleri ve başlıkların sırayla dosyada saklandığı belirli bir düzeni açıklayan bir üstbilgiye sahip olan bir kaba konur. Kendi konteyner için

Basit bir örnek:

{ 
    struct header 
    { 
     unsigned int frametype; 
     unsigned int framesize; 
    }; 

    byte* readFrame(header* pHdr, int frameNum) 
    { 
     byte* pFirstFrame = ((byte*) pHdr) + sizeof(header); 
     return pFristFrame + frameNum * pHdr->framesize; 
    } 
} 

diğer bazı konteyner tipi vardır. AVI, bu kapsayıcı türlerden yalnızca biridir. Tek tek karelere ulaşmak için, üstbilgiyi dosyada yorumlamalısınız ve ardından bu bilgilere dayanarak, ayrıştırmak istediğiniz çerçevenin konumunu hesaplayın.

Size avi dosya formatı tanımına bir bağlantı gönderdim. Mpeg/mkv/ogm dosya formatları hakkında bilgi alabileceğiniz başka yerler var.

Programınızın çalışması için bu bilgilere ihtiyacınız vardır.

Bir kenar notunda, sıkıştırılmış biçimler bağımsız olarak tüm çerçeveleri korumaz. Tek bir kareyi ve daha sonra sadece mevcut karenin son kareden nasıl ayrıldığına dair bilgileri içeren birkaç ara çerçeveleri korurlar. Böylece, her kare numarasında tam kareleri ayıklayamazsınız.