Hareketli Fotoğraf biçimi 1.0

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:

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

Camera:MicroVideo

Camera:MicroVideoVersion

Camera:MicroVideoOffset

Camera:MicroVideoPresentation
TimestampUs

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 MicroVideoOffset özelliğinin yerine GContainer:ItemLength değeri kullanılır.

Camera:MotionPhoto

Integer

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.

Camera:MotionPhotoVersion

Integer

Hareketli Fotoğraf'ın dosya biçimi sürümünü belirtir. Bu spesifikasyon "1" sürümünü tanımlar.

Camera:MotionPhotoPresentationTimestampUs

Long

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

Directory

Sıralı Yapı Dizisi

Düzeni tanımlayan Container:Item yapıların sıralı dizisi ve izin verir.

Öğ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

Mime

String

Zorunlu. Kapsayıcıdaki medya öğesinin MIME türünü gösteren basit dize.

Semantic

String

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.

Length

Integer

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.

Padding

Integer

[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

image/jpeg

JPEG resim

image/heic

HEIC resmi

image/avif

AVIF resmi

video/mp4

MP4 kapsayıcısı

video/quicktime

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.

Value

Açıklama

Primary

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.

MotionPhoto

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:

HEIC hareket dosyasındaki öğelerin yerleşimini gösteren çizgi diyagramı

Ş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