Hareketli Fotoğraflar, bir fotoğraf karesi ve bir resim içeren tekli dosyalardır. ses kaydını içeren kısa video. Bu tür medya, kullanıcının görüntü ve sesin yanı sıra yüksek çözünürlüklü bir fotoğraf görüntüleyin. atmosfer ve ortama göre hareket etmesi gerekir.
Bağımlılıklar
Aşağıda, bu spesifikasyon için normatif referanslar verilmiştir:
- Gereksinim Düzeylerini Belirtmek için RFC'lerde kullanılacak anahtar kelimeler
- T.81 (09/92) Dijital sıkıştırma ve sürekli tonlama kodlama resimler (JPEG)
- ISO/IEC 23008-12:2022 Hindistan'da yüksek verimlilikli kodlama ve medya yayını heterojen ortamlar 12. Bölüm: Resim Dosyası Biçimi (HEIC)
- AV1 Resim Dosyası Biçimi (AVIF) (AVIF)
- Ultra HDR Resim Biçimi v1.0 | Android Developers (Ultra HDR)
- ISO 16684-1:2011(E) XMP XMP Spesifikasyonu Bölüm 1 (XMP)
- Adobe XMP Spesifikasyonu 3. Bölüm Depolama Alanı Dosyalarda (XMP)
- ISO/IEC 14496-10:2022 Görsel-işitsel nesnelerin kodlaması Bölüm 10: Gelişmiş video kodlaması (AVC)
- ISO/IEC 23008-2:2023 ABD'de yüksek verimlilikli kodlama ve medya yayını heterojen ortamlar 2. Bölüm: Yüksek verimli video kodlama (HEVC)
- AV1 Bit akışı ve Kod Çözme Süreci Spesifikasyonu (AV1)
- ISO/IEC 14496-1:2010 Görsel-İşitsel Nesnelerin Kodlanması - Sistemler
- ISO/IEC 14496-12:2015 ISO Kutusu medya dosyası biçimi (ISOBMFF)
- ISO/IEC 14496-14:2020 Görsel-işitsel nesnelerin kodlanması Bölüm 14: MP4 dosyası biçimi (MP4)
- Apple QuickTime Dosya Biçimi (MOV)
Giriş
"ZORUNLU", "ZORUNLU OLMAMALIDIR", "GEREKLİ", "GEREKLİ", "KULLANMAMALIDIR", "ÖNERİLİR", "MAYIS" ve "İSTEĞE BAĞLI" IETF standardına göre RFC2119'da tanımlanmıştır.
Hareketli Fotoğraf Biçimi
Hareketli Fotoğraf dosyaları birincil hareketsiz görüntü dosyasından oluşur. JPEG, HEIC veya AVIF eklenen ikincil video dosyasıdır. Birincil görüntü Kamera XMP'yi içeriyor hareketsiz resim dosyasının ve video dosyası içeriklerinin nasıl gösterileceğini açıklayan meta veriler, ve video dosyası içeriklerinin nasıl bulunacağını açıklayan Container XMP meta verileridir.
Ultra HDR JPEG'lerde olduğu gibi resim dosyasının da bir kazanç haritası olabilir.
Dosya Adı Kalıbı
Yazarlar, aşağıdaki normal ifadeyle eşleşen bir dosya adı kullanmalıdır:
^([^\\s\\/\\\\][^\\/\\\\]*MP)\\.(JPG|jpg|JPEG|jpeg|HEIC|heic|AVIF|avif)
Okuyucular XMP meta verilerini, eklenen video dosyasını veya videoyu yok sayabilirler. içerikleri hariç tutar.
Medya Verileri Kodlaması
Birincil görüntü, bir Kapsayıcı Öğesi XMP içeriyor sonraki medya öğelerinin sırasını ve özelliklerini tanımlayan meta veri dizini dosyası olarak ekleyebilirsiniz. Kapsayıcıdaki her dosyaya karşılık gelen bir medya dosyası bulunur öğesine ekleyebilirsiniz. Medya öğesi, dosyadaki konumu açıklar ve birleştirilen her dosyanın temel özelliklerini gösterir.
XMP Özellikleri
Bir dosya için ekstra anlamsal bilgileri tanımlamak üzere iki XMP meta verisi seti kullanılır Hareketli Fotoğraf biçimi. Meta veriler herhangi bir sırada görünebilir.
Kamera Meta Verileri
Kamera meta verileri, birincil resmin nasıl sunulacağı ve görseller için ve Hareketli Fotoğraf'ın bazı video kısımlarını kullanabilirsiniz.
- Ad alanı URI'si:
http://ns.google.com/photos/1.0/camera/
- Varsayılan ad alanı öneki
Camera
Aşağıdaki özellikler hareketsiz resim dosyası XMP meta verilerinde görünebilir:
Ad |
Tür |
Açıklama |
|
Bu özellikler, Microvideo V1 spesifikasyonunun bir parçasıydı. Bunlar bu spesifikasyonda silinir ve varsa yoksayılmalıdır. Özellikle, dosyadaki video verilerinin bulunması için |
|
|
|
0: Dosyanın hareketli fotoğraf olarak değerlendirilmemesi gerektiğini belirtir. 1: Dosyanın hareketli fotoğraf olarak işlenmesi gerektiğini belirtir. Diğer tüm değerler tanımlanmamıştır ve 0 ile eşdeğer şekilde ele alınır. Değer sıfır veya negatif olursa dosya her zaman (harekete geçirici olmayan fotoğraf kullanabilirsiniz.) XMP, en iyi davranan editörler tarafından aktarıldığı için, sabit resim dosyaları eklenen video kaldırıldı. Dolayısıyla bu alan kesin değildir ve okuyucular her zaman videonun mevcut olduğunu onaylamalıdır. |
|
|
Hareketli Fotoğraf'ın dosya biçimi sürümünü belirtir. Bu spesifikasyon "1" sürümünü tanımlar. |
|
|
Resim sabitine karşılık gelen video karesinin sunum zaman damgasını (mikrosaniye cinsinden) temsil eden uzun değer. Ayarlanmadı/belirtilmediğini belirtmek için değer -1 olabilir. |
Sunu davranışı
XMP paketinde Camera:MotionPhotoPresentationTimestampUs
yoksa
okuyucular zaman damgasından hemen önce bir sunu zaman damgası kullanmalıdır.
Video parçasının ortasına en yakın yere (ör. video parçasının süresi)
2'ye bölünür.
XMP paketinde Camera:MotionPhotoPresentationTimestampUs
varsa ve
videoda "application/motionphoto-image-meta"
öğesi de yer alıyor,
değer, primaryImageFrameScoreDescr
presentationTimestampUs
içinde görünmelidir
bu yolu kullanabilirsiniz. Camera:MotionPhotoPresentationTimestampUs
değilse
meta veri parçası mevcutsa XMP paketinde mevcuttur. Ardından,
meta veri parçası -1 olmalıdır.
Kapsayıcı öğesi
Kapsayıcı öğesi, birincil görüntünün XMP meta verilerine kodlanır. kapsayıcıdaki medya öğelerinin dizinini tanımlar. Medya öğeleri olmalıdır: Burada, kapsayıcı dosyasında bulunan ve medya öğesi öğeleriyle aynı sırada sıkı bir şekilde paketlenmiş olmalıdır.
- Ad alanı URI'si:
http://ns.google.com/photos/1.0/container/
- Varsayılan ad alanı öneki
Container
Dizin yalnızca bir birincil resim öğesi içerebilir ve bu ilk resim öğesi olmalıdır öğesine ekleyebilirsiniz.
Öğe Adı |
Tür |
Açıklama |
|
Sıralı Yapı Dizisi |
Düzeni tanımlayan |
Öğe öğesi
Medya öğesi öğeleri, her bir öğenin uygulama tarafından nasıl kullanılması gerektiğini açıklar.
- Ad alanı URI'si:
http://ns.google.com/photos/1.0/container/item/
- Varsayılan ad alanı öneki
Item
İlk medya öğesi, birincil resim olmalıdır. Mime
içermelidir
Öğe MIME Türü alanında listelenen resim MIME türlerinden birini belirten özellik
Değerler. Birincil öğenin uzunluğu, birincil öğe ayrıştırılarak belirlenebilir.
başlangıcından itibaren MIME türüne göre bir resmi.
İlk medya öğesi, ek açıklama belirten bir Padding
özelliği içerebilir
kodlamalı birincil resmin sonu ile videonun başlangıcı arasındaki dolgu
sonraki medya öğesine dokunun. Yalnızca ilk medya öğesi Padding
özelliği içerebilir.
Her medya öğesi bir Mime
özelliği içermelidir. İkincil medya öğeleri,
Uzunluk özelliklerini de içermelidir.
Sıralı medya öğeleri, kaynak verilerini dosya kapsayıcısı içinde paylaşabilir. İlgili içeriği oluşturmak için kullanılan
ilk medya öğesi, kaynağın dosya kapsayıcısındaki konumunu belirler.
ve sonraki paylaşılan medya öğeleri için Length
değeri 0 olarak ayarlanır.
kaynak verilerinin kendisi bir kapsayıcıdır.
Kapsayıcıdaki medya öğesi kaynaklarının konumu toplanarak belirlenir
önceki ikincil öğe kaynaklarının Length
değerlerinden
birincil resim kodlaması ve belirtilirse Padding
.
Özellik Adı |
Tür |
Açıklama |
|
|
Zorunlu. Kapsayıcıdaki medya öğesinin MIME türünü gösteren basit dize. |
|
|
Zorunlu. Medya öğesinin uygulamaya özel anlamını gösteren basit dize. Tanım için Öğe Semantik Değerleri bölümüne bakın. |
|
|
Video kapsayıcısı da dahil olmak üzere ikincil medya öğeleri için gereklidir. Öğenin bayt cinsinden pozitif tam sayı uzunluğu. Medya öğelerinin, kodlama uygulanmadan orijinal biçiminde olması beklenir. Uzunluk değeri, dosyadaki baytların gerçek uzunluğudur. İkincil medya öğelerindeki uzunluk 0, medya öğesi kaynağının önceki medya öğesiyle paylaşıldığını gösterir. Birincil medya öğesinde uzunluğun 0 olması beklenir. |
|
|
[JPEG tabanlı hareketli fotoğraflar] Birincil medya öğesi için isteğe bağlıdır. Ek bayt cinsinden pozitif tam sayı uzunluğunu içeren basit dize kodlanmış birincil resmin sonu ile videonun başlangıcı arasındaki dolgu sonraki medya öğesine dokunun. [HEIC/AVIF tabanlı hareketli fotoğraflar] Birincil medya öğesi için gereklidir. 8'e eşit bir değere sahip olmalıdır, Hareketli Fotoğraf'ın başlık uzunluğu Video Verileri ("mpvd") kutusuna bakın. |
Öğe:Mime türü değerleri
Item:Mime
özelliği, her bir medya öğesinin MIME türünü tanımlar.
Değer |
Açıklama |
|
JPEG resim |
|
HEIC resmi |
|
AVIF resmi |
|
MP4 kapsayıcısı |
|
MOV kapsayıcısı |
Öğe:Anlamsal değerler
Item:Semantic
özelliği, her bir öğenin uygulamaya özel anlamını tanımlar
medya öğesi içerebilir.
|
Açıklama |
|
Medya öğesinin, kapsayıcıda görüntülenen birincil görüntülü reklamlar için hazır resim olduğunu belirtir. Hareketli fotoğraflar, bu anlamlara sahip yalnızca bir öğe içermelidir. |
|
Medya öğesinin, video kapsayıcısı olduğunu belirtir. Hareketli fotoğraflar, bu anlamlara sahip yalnızca bir öğe içermelidir. Bu medya öğesinin konumu dosyanın sonunda olmalıdır. Bu medya öğesinin baytları sonlandırıldıktan sonra başka bayt yerleştirilemez. |
Birincil Ultra HDR görüntü içeren hareketli fotoğraflar
Bu spesifikasyonda ve
Ultra HDR görüntü spesifikasyonu,
Birincil Ultra HDR resme sahip hareketli fotoğraflar,
"GainMap"
öğe semantiği. Ayrıca, hareketli fotoğrafları kodlayan yazarlar
video öğesi öğesinden önce kazanç haritası öğe öğesi ekleyin.
ISOBMFF resmine özgü davranış
Hareketli Fotoğraflar ISOBMFF tabanlı resimler (ör. HEIC ve AVIF resimleri), resmin bölümü, üst düzey bir "Hareketli Fotoğraf Video Verisi" ile sonlandırılır kutu [ ISO/IEC 14496-1:2010(E) madde 8:
// Box as defined in ISO/IEC 14496-12:2015: 4.2
aligned(8) class MotionPhotoVideoData extends Box('mpvd') {
bit(8) data[];
}
Burada "veriler" alanı tüm video baytlarını içerir. "0"ın özel değeri Hareketli Fotoğraf Video Veri Kutusu boyutu için izin verilmiyor. (bkz. ISO/IEC 14496-12:2015: 4.2, aşağıdaki özelliklere sahip bir sınıfın tanımını içerir: uzatır.)
ISOBMFF görüntüsünün XMP'si de birincil medya öğesinin Dolgusunu tanımlamalıdır özellik değeri, Hareketli Fotoğraf Videosu'nun bayt cinsinden boyuta eşit olacaktır. Veri Kutusu üstbilgisi, yani boyut ve ad üstbilgileri.
HEIC tabanlı hareket örneği için bu kutu yapısının gösterildiği Şekil 1'e bakın fotoğraf:
Şekil 1. Örnek bir HEIC resminin üst düzey kutularının çizimi tek bir HEIC hareketli fotoğraf dosyası. Kutuların sırasının genellikle (Lütfen URL'yi nasıl oluşturacağınızla ilgili standartlara HEIF veya video dosyaları); bununla birlikte, "mpvd" kutusu, tüm HEIC kodlarından sonra gelmelidir resim dosyası kutuları da kullanabilirsiniz.
Video kapsayıcı içerikleri
Birincil görüntüye eklenen video kapsayıcı dosyası şu değeri içermelidir: en az bir tane birincil video parçası olmalıdır. Bu parça zorunludur ve kodlamalı video içeriyor AVC'de HEVC veya AV1 İlgili içeriği oluşturmak için kullanılan birincil video karesi çözünürlüğü tanımlanmadı. Videonun renk alanı, aktarım işlevi ve bit derinliği değişiklik gösterebilir. Örneğin, SDR videolarda 8 bit bit olabilir derinlik, BT.709 renk alanı, sRGB aktarım işlevi. HDR videolar, 10 bit derinliğe, BT.2100 renk alanına ve HLG veya PQ aktarımına sahiptir işlevini kullanmanız gerekir.
Video kapsayıcı dosyası, isteğe bağlı olarak daha yüksek çözünürlüklü bir ikincil video içerebilir video parçasını tıklayın. Okuyucular, JPEG veya HEIC resminde kodlanmış birincil hareketsiz resim. Bu parça şunları içerebilir: AVC, HEVC veya AV1'de kodlanmış düşük kare hızlı videolar. İkincil video karesi çözünürlük tanımlanmadı.
İkincil video parçasındaki tüm karelerde bu karelerin olması beklenir. karşılık gelen kareleri ekleyebilirsiniz. Karşılık gelen her bir birincil ve ikincil video parçalarındaki karelerin sunumu aynı olmalıdır. ekleyebilirsiniz. Karşılık gelen birincil olmayan ikincil bir parça çerçevesi varsa parçanın karesi varsa, izleyiciler en yakın parçanın bulunduğu birincil parça karesini temsili küçük resim olarak eşleşen sunu zaman damgası ikinci video parçası olarak kullanabilirsiniz.
Video kapsayıcı dosyası isteğe bağlı bir 16 bit mono veya stereo ses içerebilir. AAC'de kodlanmış 44 kHz, 48 kHz veya 96 kHz'de izleyin. Okuyucular bunu sunmalıdır birincil video parçası gösterildiğinde ses parçası.
İkincil video parçası (varsa), her zaman birincil videodan sonra gelmelidir. video parçasını tıklayın. Diğer kanallarla ilgili başka sıralama kısıtlaması yoktur. İlgili içeriği oluşturmak için kullanılan birincil video parçasının, ikincil kanal dizininden daha düşük bir parça dizini olmalıdır video parçasını tıklayın. Yani birincil video parçasının parça numarası 2 ise ikincil video parçasının parça numarası 3 veya daha büyük olmalıdır.
Makine Zekası Puanlaması ile Video Meta Verisi Parçası
Yazarlar isteğe bağlı olarak "meta" yazın. Meta veri parçası, içinde bayt akışını "Söz dizimi" bölümünde açıklanan biçimde yeniden düzenleyebilirsiniz.
Meta veri parçası varsa parçaya göre (ör. "mdia.minf.stbl.stsd" adresinde bulunan "stsd" kutusu "trak" kutusu), bir metin meta veri örneğini belirten tek bir atom içermelidir girişi - (ör.bir "mett" kutusu). "mett" kutusunda şuna eşit bir MIME türü dizesi olmalıdır: olarak değiştirin.
Sözdizimi
Bu meta veri parçası tanımlanmışsa içeriği bayt akışından oluşmalıdır
bu MotionPhotoMetadataDescriptor
spesifikasyonuna uygun, açıklanan
Bu örnekte,
ISO/IEC 14496-1:2010(E) madde 8.
// BaseDescriptor as defined in ISO/IEC 14496-1:2010(E): 7.2.2.2
abstract aligned(8) expandable((1<<28) - 1) class BaseDescriptor
: bit(8) tag=0 {
// Empty. To be filled by classes extending this class.
}
// Score data for a frame.
class MotionPhotoFrameScoreDescriptor extends BaseDescriptor
: bit(8) tag=MotionPhotoFrameScoreDescrTag {
// The frame's score in the range [0, 1].
float(32) score;
// The frame's presentation timestamp in microseconds.
int(64) presentationTimestampUs;
}
// Score data for a track.
class MotionPhotoTrackScoreDescriptor extends BaseDescriptor
: bit(8) tag=MotionPhotoTrackScoreDescrTag {
// The number of scored frames in the track.
unsigned int(32) numScoredFrames;
// The track's frames' score data. They must be in ascending order with
// respect to the presentation timestamp.
MotionPhotoFrameScoreDescriptor trackFrameScoreDescr[numScoredHighResFrames];
}
// Score data for a motion photo.
class MotionPhotoScoreDescriptor extends BaseDescriptor
: bit(8) tag=MotionPhotoScoreDescrTag {
// Machine-intelligence model version used to calculate the scores. Writers
// using a scoring model should set this field to 1 or greater. Writers not
// using any scoring model should set this field to 0.
unsigned int(32) modelVersion;
// The primary image's frame score data.
MotionPhotoFrameScoreDescriptor primaryImageFrameScoreDescr;
// The high-resolution motion photo frames' score data.
MotionPhotoTrackScoreDescriptor highResTrackScoreDescr;
}
// Flag data for a track.
class MotionPhotoTrackFlagsDescriptor extends BaseDescriptor
: bit(8) tag=MotionPhotoTrackFlagDescrTag {
// Set to true to indicate the video frames have been stabilized and don't
// require readers of the track to apply any further stabilization.
bit(1) isStabilized;
}
// Flags for a motion photo.
class MotionPhotoFlagsDescriptor extends BaseDescriptor
: bit(8) tag=MotionPhotoFlagDescrTag {
// The low-resolution motion photo track's flag data.
MotionPhotoTrackFlagDescriptor lowResTrackFlagsDescr;
// The high-resolution motion photo track's flag data.
MotionPhotoTrackFlagDescriptor highResTrackFlagsDescr;
}
// Container for motion photo metadata, like stabilization indicators and
// quality scoring.
class MotionPhotoMetadataDescriptor extends BaseDescriptor
: bit(8) tag=MotionPhotoMetadataDescrTag {
// Scoring data for the still and high-res frames.
MotionPhotoScoreDescriptor motionPhotoScoreDescr;
// Flags for the low-res and high-res frames.
MotionPhotoFlagDescriptor motionPhotoFlagDescr;
}
// Class tags for MotionPhotoData using the "User Private" tag space 0xC0-0xFE
// for descriptors defined in ISO/IEC 14496-1:2010(E): 7.2.2.1, Table 1.
// 0xC0 MotionPhotoMetadataDescrTag
// 0xC1 MotionPhotoScoreDescrTag
// 0xC2 MotionPhotoTrackScoreDescrTag
// 0xC3 MotionPhotoFrameScoreDescrTag
// 0xC4 MotionPhotoFlagsDescrTag
// 0xC5 MotionPhotoTrackFlagDescrTag