Masalah dengan Saluran Audio yang Tidak Digunakan di QuickTime Capture

Saya telah menulis aplikasi yang menangkap audio dan video dari beberapa perangkat secara bersamaan, menggunakan API penangkapan QTKit beberapa waktu lalu.

Namun, saya mengetahui bahwa dari waktu ke waktu, media yang diambil dari camcorder DV tampaknya tidak memiliki audio terkait. Faktanya, trek audio ada dalam file, tetapi saluran disetel ke "tidak digunakan" di QuickTime Player Pro — sehingga tidak ada suara.

Karena saya merasa tidak nyaman mengekspos pengguna saya pada kejahatan seperti itu, saya ingin memposting rekaman saya dan memperbaiki tata letak saluran secara otomatis, jika diperlukan.

Sayangnya, saya kesulitan mencari tahu caranya!

Pertanyaan saya ada dua:

  1. Apakah mungkin untuk mendeteksi jika saluran audio suatu trek ditandai sebagai "tidak digunakan" dari QTKit?
  2. Karena menurut saya jawaban di atas adalah "tidak", saya telah menggali struktur beberapa file film yang berfungsi dengan benar dengan "Atom Inspector" — sejauh ini tidak berhasil:
    Apa/Di mana file tersebut QuickTime Atom di mana info ini disimpan?
    Saya dapat melihat jumlah saluran yang benar di stsd Atom (yang terdapat dalam stbl Atom) namun saya tidak melihat di mana pemetaan terjadi.

person danyowdee    schedule 21.03.2011    source sumber


Jawaban (1)


Pertanyaan pertama: Sepertinya tidak.

Anda harus menggunakan QTGetTrackPropertyInfo API dengan kQTPropertyClass_Audio, kQTAudioPropertyID_ChannelLayout untuk mendapatkan tata letak saluran. Jika struktur AudioChannelLayout yang dikembalikan berisi tag != 0, Anda dapat menyelesaikannya melalui AudioFormatGetPropertyInfo dengan kAudioFormatProperty_ChannelLayoutForTag; jika tidak, kolom AudioChannelDescription akan valid, dengan mChannelLabel disetel ke kAudioChannelLabel_Unused (0). Tentu saja, semua ini hanya berfungsi dalam 32 bit. Jangan lupa #include <AudioToolbox/AudioToolbox.h>

Pertanyaan kedua:
Atom stsd trek audio harus berisi ekstensi 'chan'. Ekstensi ini tampaknya merupakan UInt32 yang disetel ke nol, diikuti oleh struktur AudioChannelLayout. Tampaknya tidak didokumentasikan baik dalam spesifikasi file QT maupun spesifikasi MP4.

Semoga beruntung!

person jfortmann    schedule 22.03.2011