Bu sayfada MP4 dosyalarının yerleştirilmesine izin veren bir spesifikasyon açıklanmaktadır Video çekimi sırasındaki kamera hareketiyle ilgili meta veriler. Video çeken cihazlar genellikle sensörler kullanır. Örneğin:
- Cep telefonlarında genellikle jiroskop, ivme ölçer, manyetometre ve GPS sensörleri bulunur.
- Cihazların 3 serbestlik derecesi (3DoF) duruşunu izlemek için sensör füzyonu kullanılabilir.
- 6 serbestlik derecesini izlemek için eşzamanlı yerelleştirme ve eşleme (SLAM) kullanılabilir. (6DoF) duruşu (örneğin, Tango).
- Pozlama bilgileri, tarama başına hareketin interpolasyonunu elde etmek için kullanılabilir.
Bu meta veriler, çeşitli uygulamalarda gelişmiş işleme sonrası için videoya kaydedilebilir. Örneğin:
- Videoları sabitlemek için kare düzeyinde döndürme bilgileri, yuvarlanan deklanşör efektlerini azaltmak için tarama çizgisi düzeyindeki hareket verileri kullanılabilir.
- IMU ölçümleri ve türetilen 3DoF duruşları, IMU ve kamera arasındaki zaman hizalamasını ve geometrik hizalamayı değerlendirmek için kullanılabilir.
Aşağıdaki bölümlerde, yeni bir örnek içeren CAmera Motion Metadata (CAMM) parçası belirtilmektedir Parçanın varlığını ve parça örneklerinin veri biçimini gösteren giriş.
Örnek giriş
Video dosyası, özel meta verileri belirtmek için aşağıdaki örnek giriş kutusunu içermelidir
parçanın (subComponentType
) değeri meta
olarak ayarlanmalıdır.
Camera Motion Metadata Sample Entry (camm) Definition Box Type: camm Container: stsd A sample entry indicating the data track that saves the camera motion. Syntax aligned(8) class CameraMotionMetadataSampleEntry extends SampleEntry('camm') { }
Veri biçimi
Meta veri parçası, aşağıdaki gibi biçimlendirilmiş meta veri örnekleri akışını içerir.
Alan | Birim | Açıklama |
---|---|---|
uint16 reserved; |
Ayrıldı. 0 olmalıdır. | |
uint16 type; |
Veri paketinin türü (aşağıya bakın). Her pakette bir veri türü vardır. | |
switch (type) { |
||
case 0: float angle_axis[3]; break; |
Yerel kamera koordinatlarından dünya koordinat sistemine dönüşü temsil eden radyan cinsinden açı ekseni yönü. Dünya koordinat sistemi uygulamalarla tanımlanır. M, açı eksen vektörüne karşılık gelen 3x3 döndürme matrisi olsun. Yerel koordinat sistemindeki herhangi bir X ışını için dünya koordinatındaki ışın yönü M * X'tir. Bu bilgiler, cihazda 3DoF sensör füzyonu çalıştırılarak elde edilebilir. IMU okumaları entegre edildikten sonra, yalnızca entegre genel yönün kaydedilmesi gerekir. Üç değer, açı eksen vektörünü temsil eder. Burada, radyan cinsinden dönüş açısı vektörün uzunluğuyla ve dönüş ekseni de normalleştirilmiş vektör ile verilir. Kodlanmış gösterim, Kodlanmış gösterim ise |
|
case 1: int32 pixel_exposure_time; int32 rolling_shutter_skew_time; break; |
nanosaniye |
Bu meta veri, video karesi başınadır. Bu meta verinin sunum zamanı (PTS) bir video karesinde ilk kullanılan tarama çizgisinin pozlanmasının başlangıcı. pixel_exposure_time_ns, tek bir pikselin pozlama süresidir: nanosaniye ve rolling_shutter_skew_time_ns, ve son kullanılan tarama çizgisine maruz kalma oranı. Herhangi bir kullanabilirsiniz. Karşılık gelen çerçevenin PTS'si şu aralıkta olmalıdır: pts_of_this_metadata ve pts_of_this_metadata + pixel_exposure_time_ns + roll_shutter_skew_time_ns Bu bilgiler kaydedilmezse cihaz, mümkün olan en iyi şekilde video karesinin PTS'sini, kare pozlamasının merkezinde olacak şekilde ayarlayın. |
case 2: float gyro[3]; break; |
radyan/saniye |
Kameranın XYZ eksenleri etrafında radyan/saniye cinsinden jiroskop sinyali. Rotasyon (şimdiki değeri) pozitif olmalıdır. Uygulamalar, IMU koordinat sistemi ile kamera arasındaki ilişkiyi tanımlar koordinat sisteminden geçer. Mümkünse bunları hizalamanızı öneririz. İlk jiroskop okumalarının, sürücüsü tarafından tanımlanan IMU koordinat sisteminde olduğunu unutmayın. ve kamera koordinat sistemine dönüştürmek için uygun bir dönüştürme gereklidir. Android Sensörüne bakın.TYPE_GYROSCOPE. |
case 3: float acceleration[3]; break; |
metre/saniye^2 |
Kameranın XYZ eksenlerinde metre/saniye^2 cinsinden ivme ölçer. Uygulamalar, IMU koordinat sistemi ile kamera arasındaki ilişkiyi tanımlar koordinat sisteminden geçer. Mümkünse bunları hizalamanızı öneririz. Android Sensor.TYPE_ACCELEROMETER öğesine bakın. |
case 4: float position[3]; break; |
Kameranın 3D konumu. 3D konumu ve açı ekseni döndürmesi birlikte ve kameranın 6DoF duruşunda ve uygulama tarafından tanımlanan ortak bir koordinat sisteminde bahsedeceğim. Bu bilgileri, cihazda 6DoF izlemeyi çalıştırarak alabilirsiniz. |
|
case 5: double latitude; double longitude; double altitude; break; |
derece |
Örneğin minimum GPS koordinatı. |
case 6: double time_gps_epoch; int gps_fix_type; double latitude; double longitude; float altitude; float horizontal_accuracy; float vertical_accuracy; float velocity_east; float velocity_north; float velocity_up; float speed_accuracy; break; |
seconds degrees degrees meters meters meters meters/seconds meters/seconds meters/seconds meters/seconds |
time_gps_epoch - Ölçümün alındığı GPS döneminden bu yana geçen süre gps_fix_type - 0 ( düzeltme yok), 2 (2D düzeltme), 3 (3D düzeltme) enlem - Derece cinsinden enlem boylam: Derece cinsinden boylam rakım - WGS-84 elipsoitinin üzerindeki yükseklik horizontal_accuracy: Yatay (enlem/boylam) doğruluk vertical_accuracy - Dikey doğruluk velocity_east - Doğu yönündeki hız velocity_north - Kuzey yönünde hız velocity_up - Yukarı yönde hız speed_accuracy - Hız doğruluğu |
case 7: float magnetic_field[3]; break; |
mikrotesla |
Ortam manyetik alanı. Android Sensor.TYPE_MAGNETIC_FIELD bölümüne bakın. |
} |
Notlar
- Her MP4 dosyası için yukarıdaki veri türlerinin tümünü içeren yalnızca bir CAMM parçası olmalıdır. üretebilirsiniz.
- Durum 5 ve 6'daki GPS örnekleri, sensörler tarafından oluşturulan ham değerler olmalıdır. Başaramazlar olmadığı durumlarda ara değer olarak test edilir veya tekrarlanır.
- Koordinat sistemleri sağ taraftadır. Kamera koordinat sistemi X olarak tanımlanır sağı, Y aşağıyı ve Z ileriyi gösteriyor. Global çerçevenin Y ekseni koordinat sistemi yerçekimi vektörü boyunca aşağıyı işaret etmelidir.
- IMU ölçümleri genellikle ayrı bir IMU koordinat sistemindedir ve iki koordinat sistemi farklıysa onları kamera koordinat sistemine eşleyin.
- Tüm alanlar küçük-endian (önce en az anlamlı bayt) ve 32 bit kayandır IEEE 754-1985 biçimindedir.
- Video karesini ve meta verileri doğru şekilde senkronize etmek için video karesinin PTS'si olması gerektiğini unutmayın (bu, maruz kalma meta verilerinden de anlaşılabilir).
- Bu verileri karıştıran uygulama, PTS
Olası sorunlar
-
Bu tasarımda, veri örneği başına yalnızca bir pakete izin verilir. Yerleşik cihazlarda yazmayla ilgili sorunlar olabilir
hem G/Ç basıncını hem de başlık boyutunu artırdığı için çok yüksek frekanslı paketler
(örneğin, paket boyutu değişiklik gösteriyorsa
stsc
vestsz
atomları). - Farklı veri türlerinin ve farklı gecikmelerin bir arada kullanılması, PTS'nin her ikisinde de ileriye doğru ilerlemesine neden olabilir. ve geriye doğru planlarsınız. Ancak aynı zamanda arabelleğe alma ve bunları tekdüze sırada yazma.