Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
[Video Sıkıştırma Yöneticisi bu sayfayla ilişkilendirilmiş özellik eski bir özelliktir. Microsoft, yeni kodun bu özelliği kullanmamalarını kesinlikle önerir.]
Uygulamanız verileri sıkıştırmak için bir dizi ICCompress işlevi ve makro kullanabilir. İşlevler ve makrolar aşağıdaki görevleri gerçekleştirmenize yardımcı olabilir:
- Belirtilen giriş biçimi için kullanılacak sıkıştırma biçimini belirleyin.
- Kompresörü hazırlayın.
- Verileri sıkıştırın.
- Sıkıştırmayı sonlandır.
Uygulamanız, ICCompress işlevlerini ve makrolarını kullanarak sıkıştırma işlemi üzerindeki denetimi artırabilir. Bu işlev ve makro grubu, diziyi bir bütün olarak değil, tek tek çerçeveleri işler. Örneğin uygulamanız, ICCompress işlevini kullanarak anahtar çerçeve olarak sıkıştıracak çerçeveleri tanımlayabilir.
Kompresör verileri tek bir biçimde alır, verileri sıkıştırır ve belirtilen biçimi kullanarak verilerin sıkıştırılmış bir sürümünü döndürür. Tipik giriş biçimi, BITMAPINFO yapısını kullanan DIB'leri belirtir. Tipik çıkış biçimi, BITMAPINFO yapısını kullanarak sıkıştırılmış DIB'leri belirtir.
Not
Kayıttan yürütme sırasında görüntü ve ses düşüşü en aza indirmek için bir AVI dosyasını birden çok kez sıkıştırmaktan kaçının. Sıkıştırılmamış video parçalarını düzenleme sisteminizde birleştirin ve ardından son ürünü sıkıştırın.
Kompresör ve Sıkıştırma Biçimi Seçimi
Verileri sıkıştırmak istiyorsanız ve uygulamanız belirli bir çıkış biçimi gerektiriyorsa, giriş ve çıkış biçimlerini destekleyip desteklemediğini belirlemek üzere kompresörü sorgulamak için ICM_COMPRESS_QUERY iletisini gönderin (veya ICCompressQuery makrosunu kullanın).
Çıkış biçimi uygulamanız için önemli değilse, yalnızca giriş biçimini işleyebilen bir kompresör bulmanız gerekir. Kompresörün giriş biçimini işleyip işleyemediğini belirlemek için lParam parametresi için NULL belirterek ICM_COMPRESS_QUERYgönderebilirsiniz. Bu ileti, uygulamanıza çıkış biçimini döndürmez. Uygulamanız, ICM_COMPRESS_GET_FORMAT iletisini göndererek sıkıştırma biçimini belirten veriler için gereken arabellek boyutunu belirleyebilir (veya ICCompressGetFormatSize makrosunu kullanabilir). ICM_COMPRESS_GET_FORMAT (veya ICCompressGetFormat makrosunu) göndererek de biçim verilerini alabilirsiniz.
Sıkıştırıcının sıkıştırma için gerektirebileceği en büyük arabelleği belirlemek istiyorsanız, ICM_COMPRESS_GET_SIZE iletisini gönderin (veya ICCompressGetSize makroyu kullanın). sonraki görüntü sıkıştırmaları için arabellek ayırmak üzere ICSendMessage işlevi tarafından döndürülen bayt sayısını kullanabilirsiniz.
Kompresör Başlatma
Uygulamanız ihtiyaç duyduğu giriş ve çıkış biçimlerini işleyebilen bir kompresör seçtikten sonra, ICM_COMPRESS_BEGIN iletisini kullanarak kompresörü başlatabilir (veya ICCompressBegin makrosunu kullanabilirsiniz). Bu ileti kompresör tutamacını ve giriş ve çıkış biçimlerini gerektirir.
Veri Sıkıştırma
Çerçeveyi sıkıştırmak için ICCompress işlevini kullanabilirsiniz. Bir dizideki tüm çerçeveler sıkıştırılana kadar uygulamanızın bu işlevi tekrar tekrar kullanması gerekir. Uygulamanızın ayrıca ICCompressile sıkıştırılmış her çerçevenin sayısını izlemesi ve artırması gerekir. Kompresör, çerçevelerin hızlı zamana bağlı sıkıştırma sırasında (ardışık çerçeveler arasındaki farkların depolanması) sıra dışı gönderilip gönderilmediğini denetlemek için bu değeri kullanır. Uygulamanız bir çerçeveyi yeniden sıkıştırırsa, çerçeve ilk sıkıştırıldığındakiyle aynı çerçeve numarasını kullanmalıdır. Uygulamanız bir hareketsiz çerçeve görüntüsünü sıkıştırıyorsa, sıfır kare sayısını belirtebilir.
Uygulamanız ICCOMPRESS_KEYFRAME bayrağını kullanarak ICCompress tarafından sıkıştırılmış çerçeveyi bir anahtar çerçeve.
VCM, çerçeveyi sıkıştırdıktan sonra denetimi uygulamanıza döndürdüğünde, VCM sıkıştırılmış verileri lpbiOutput tarafından başvurulan yapılarda depolar ve lpData parametrelerini. Uygulamanızın sıkıştırılmış verileri taşıması gerekiyorsa, boyutunu lpbiOutputiçinde belirtilen BITMAPINFO yapısının biSizeImage üyesinde bulabilir.
Not
Uygulamanızın sıkıştırılmamış ve sıkıştırılmış verileri depolayan yapıları ve arabellekleri ayırması gerekir. Kompresör zamansal sıkıştırmayı destekliyorsa, uygulamanızın önceki bilgi çerçevesinin biçimini ve verilerini tutmak için bir yapı ve arabellek ayırması gerekir.
Sıkıştırmayı Sonlandırma
Uygulamanız verileri sıkıştırdıktan sonra, ICCompressEnd makrosunu kullanarak kompresöre bittiğini bildirebilir. Bu işlevi kullandıktan sonra sıkıştırmayı yeniden başlatmak istiyorsanız, uygulamanızın ICM_COMPRESS_BEGIN iletisini göndererek kompresörü yeniden başlatması gerekir (veya ICCompressBegin makrosunu kullanın).