Video-archief

Posted on 1 November 2012

0


Welk formaat is handig om het video-archief op te slaan? Want over een jaar of vijf moeten we er ook nog gewoon in kunnen. En we moeten het op termijn ook via een website kunnen ontsluiten.

Extensie/Container/Codec

Daarvoor is het handig om eerst onderscheid te maken tussen twee zaken: bij de meeste formaten is er een verschil tussen de extensie (.mov), de container (MOV Quicktime) en de codecs die daarin gebruikt worden (b.v. XDCAM422 of h264). Eén container (ookwel wrapper genoemd) kan vaak meerdere streams bevatten, die ieder weer hun eigen codec hebben. Vaak zie je één videostream i.c.m. een tijdcode stream en één of meerdere audiostreams.

MXF container

De eerste optie is een formaat te nemen waar alles in past en die op elk systeem af te spelen is. MXF zou daarvoor de beste optie kunnen zijn. Deze zou moeten kunnen worden afgespeeld met Quicktime maar ook met Windows Media Player. Maar: het vraagt om rewrappen omdat we op dit moment nog niets in MXF formaat opnemen en om coderen omdat FCP niet goed met de MXF files kan omgaan. Daarbij komt dat het niets zegt over de codec die IN de MXF container wordt gebruikt, zoals bijvoorbeeld de XDcam codec. Het geeft dus nog steeds weinig duidelijkheid.

MXF: XDcam

Een handig programma om .mov files vanuit FCP om te zetten naar XDCam is het gratis programma FileConvert. Je kan deze files (mits het XDCAM422 files zijn) dan terugschrijven naar de UserData map in een XDcam disk en uitlezen met XDCAM transfer. Denk eraan dat de bestandsnamen niet langer mogen zijn dan 57 tekens.

MOV container

We werken nu op Final Cut Pro en alles gebeurt dus op de mac. Door een MOV quicktime container te gebruiken (als .mov bestanden) heb je de voordelen van de MXF (het kan diverse soorten codecs en streams bevatten) zonder dat het nodig om deze te converteren (of log&transfer te gebruiken) voor het gebruik in FCP. Mits de codec aanwezig is kunnen deze .mov files worden afgespeeld met QT en VLC player.

MP4 container met h.264 en aac

De andere optie is om alles naar een standaard container met standaard codec te converteren, op dit moment zou een .mp4 container met daarin h.264 (MPEG-4 Part 10) video en AAC audio de beste keuze zijn, beide natuurlijk op een acceptabel hoge bitrate. Groot voordeel is de toegankelijkheid en relatief lage bestandsgrootte. Maar het nadeel is wederom: conversie en dus kwaliteitsverlies.

MTS container met AVCHD

Door de opkomst van de DSLR video’s is de AVCHD container erg populair geworden (o.a. Sony en Panasonic). Het grote voordeel is dat de MTS container alleen maar de AVCHD codec voor video kan bevatten, alhoewel dit alweer verwarrend begint te worden  nu er een AVCHD 2.0 codec is uitgekomen voor full HD 50p en S3D opnames.

Oorspronkelijk formaat

De derde optie is om juist alles op te slaan in het formaat waarin het is opgenomen. Groot voordeel is dat je geen kwaliteitsverlies hebt. Groot nadeel is dat je wel alle codecs tot in lengte van dagen moet bewaren. En dat kan wel eens problemen opleveren omdat het vaak helemaal niet zo duidelijk is welke codec er eigenlijk gebruikt moet worden en waar deze codec dan te vinden is.

Voorkeur

Mijn voorkeur is daarom: we bewaren alles in de originele codec waarin deze is opgenomen, maar maken wel een (beperkt) lijstje van welke codecs en formaten die zijn toegestaan. Video met exotische codecs moet worden geconverteerd naar één van de toegestane codecs. Dit geeft de mogelijkheid om in de toekomst altijd alsnog te batch-converteren naar andere formaten.

Analyseprogramma’s

MediaInfo 0.7.61 OSX en WinXP*
MediaInspector OSX (3 euro bij AppStore)
VideoSpec 0.8.2 OSX (traag)

* Let op bij het downloaden dat je op de engelse site klikt, deze versie is soms recenter

MediaInfo is een lekker snelle en handige tool die ook hele mappen kan analyseren. Gek is dat 0.7.61 steeds vastloopt op OSX 10.5.8, terwijl 0.7.60 daar wel werkt. Ook gek is dat MediaInfo op OSX minder opties heeft dan dezelfde versie op WinXP. Dat gaat dan om de handige zaken als sheet/tree/custom view en het exporteren (CSV, txt en html). Ik gebruik dus het liefst MediaInfo op Windows. Voor het draaien op mac gebruik ik dus ook de windows versie, maar dan via Wine. Nu kan ik ook custom sheets instellen.

De aangepaste weergave is namelijk al heel compleet. Je kan zelf ook je eigen templates maken, dit is het handigst om te doen in de Plugin/Custom map in program files. Ik gebruik nu de Table by streams, short template met enkele aanpassingen (zie helemaal onderaan). Ik zou nog wel graag willen weten hoe ik zaken kan afkorten (b.v. P voor progressive) zodat ik netjes zoiets kan maken als 1920*1080p25 @ 50Mbps (CBR).

Dankzij de aangepaste weergave is het niet meer nodig, maar mocht je de bestanden verder willen verwerken: Het CSV bestand bevat enorm veel kolommen en moet dus eerst worden ‘opgeschoond’ voordat deze kan worden geanalyseerd. Jammer dat je hiervoor niet dezelfde template kan gebruiken, maar mogelijk kan dat via de sheets die in c:/programfiles staan!?

Opvallend is dat er soms verschillende data uitrollen voor hetzelfde bestand bij analyse met MediaInfo en VideoSpec. Dit gaat (tot nu toe om):

  • container (MediaInfo:mpeg4, VideoSpec: mov-quicktime)
  • Format_Commercial_IfAny (MediaInfo: XDCam EX422, VideoSpec: Apple XDCam HD422). Het lijkt erop dat VideoSpec hier netjes de naam van de fourCC opzoekt, terwijl MediaInfo deze uit de metadata van het bestand zelf haalt. Bijvoorbeeld: een hdv7 bestand krijgt geen naam van MediaInfo, maar VideoSpec noemt dit netjes ‘Apple HDV 1080p25’.

Concluderend: MediaInfo is goed voor het maken van lijstjes, VideoSpec is handig om een fourCC te vertalen in een format.
Een andere optie is om het op te zoeken op  www.fourcc.org

Toegestane formaten

En dan nu de lijst met toegestane formaten, op basis van een analyse van het bestaand materiaal. We analyseerden een hele map en keken hierbij naar:

  • bestandsnaam, extensie, container, containerformat
  • video: codec, bitrate, width, height, aspect, framerate en interlaced/progressive etc etc.
  • audio 0, 1, 3 en 7: bitrate, codec en codec settings

HD1080

De whitelist voor nieuwe shots:

  • .mov /MPEG-4*/XDcam HD422
    V: xd5e 1920×1080 (16:9), 8 bits Component 4:2:2 YUV, 25,000 fps (Progressive)
    Format: MPEG Video @ 50,0 Mbps (XDCAM HD422, 4:2:2@High, Component)
    A: 8x 1 ch, 24 bits, 48,0 KHz, 1 152 Kbps, PCM (Little/Unsigned)*
    TC: 1x

*   Een batch-export naar XDcam HD422 vanuit FCP krijgt een MPEG-4 container, terwijl een directe import met Sony XDcam Transfer juist een Quicktime container oplevert. Een batch-export met FCP waarbij je de preset goed instelt op XDcam HD422 geeft altijd een MPEG-4 container met 8x little/unsigned audio. Gebruik dus altijd FCP voor de export.

In mijn archief heb ik nog een stapel prores shots.

HD720

Waarschijnlijk vooral HD100 opnames (JVC ProHD = JVC HDV). Dit zijn de exotische formaten:

  • .mov/apch (Prores 422 HQ).  91-96mbps. A: 1?
  • .mov/dvhq (panasonic?).  960*720(16:12)@50fps / 115mbps. A: 4ch
  • .mov/dvhq. Idem maar dan 25fps / 57,6mbps
  • .mov/icod (Apple Intermediate Codec). V:1280*720(16:9)@25fps/29-58mbps. A: 1/2
  • .mov/hdv5: bv 1x 2ch audio of ontbrekende TC. lijkt wel te komen door hoofdletters in de bestandsnamen!?

De whitelist voor nieuwe files:

  • .mov/MPEG-4/hdv5 (Apple HDV720p25)
    V: hdv5: 1280×720 (16:9) , 25,000 fps (Progressive) @ 18,3-20,3 Mbps Constant
    A: 2x 1 ch, 16 bits, 48,0 KHz, 768 Kbps, PCM (Little/Signed)
    TC: 1x

SD 16×9

Zie onderstaand, met als enig verschil de aspect ratio. Hierbij geven mediainfo, finder preview en FCP het als 16:9 weer.

SD 16×12

Dit zijn voornamelijk de oude DVcam en XDcam opnames in 4:3 (16:12) formaat.  Mijn voorstel:

  • .mov/QT/dvcp (Apple DV-PAL). V: 720×576@25i (BFF) / 28,8mbps. A: 1x 2ch.
    V: 1x dvcp (4:3) 720x?@25i BFF / 8 bits PAL 4:2:0 YUV / DV @ 24,4Mbps CBR (PAL) (videospec: pixel aspect ratio 59:54 / display aspect ratio: 4:3)
    A: 1x 2ch, 16 bit, 48 kHz, 1536 Kbps, PCM (Little/Signed)
    TC: 1x
  • .mov/QT/mx3p (IMX30 PAL). Deze bestanden worden gegenereerd door Sony XDcam Transfer software.
    V: 1x mx3p (4:3) 720×608@25i (TFF) , 8 bits 4:2:2 YUV, MPEG video @ 30mbps CBR (IMX30 4:2:2@Main) (videospec: Pixel aspect: 59:54 / Display aspect: 295:228)
    A: 4x 1ch, 24 bits, 48 kHz, 1152 kbps, PCM (Big, signed)
    TC: 1x

Er waren een paar opvallende zaken inzake de IMX30 bestanden:

  • IMX Audio: XDcam Transfer maakt big/signed audio. FCP QT export en FCP batch export maken little/signed PCM.
  • De pixel aspect (PAR) 720/59×54=768 pixels breed moeten maken. Uitgaande van 576 pixels hoogte is de display aspect (DAR) dan 4:3. Maar bij IMX is de DAR wel is 295:228. Dat klopt: SARxPAR=DAR → 720:608×59:54=295:228. Gek is dat  MPEG IMX juist 625 lijnen hoog zou moeten zijn (het heet ook wel IMX625/50). Dit klopt ook met de wiki: “576 scan lines of picture content, Also in analogue, 49 additional blank lines for the sync pulse are added, resulting in 625 lines”. Blijkbaar wordt daar in IMX op bespaard omdat het werkelijk maar 608 lijnen bevat, waarvan maar 576 ook echt beeld bevatten. Want in de bovenste 32 lijnen zie ik duidelijk tijdcode meelopen. Als het goed verwerkt wordt zou het dus moeten worden weergegeven als 768×576 pixels. Alhoewel… over de breedte zegt wiki ook wel wat: “only the center 704 pixels carry the actual 4:3 or 16:9 image. The other 8+8 pixels are black, or visuals for margin (in analog video, the center of a picture is well-defined but the edges of the picture are not standardize)”. Gelukkig zie ik dit alleen terug in ouder DV-PAL materiaal, maar niet in IMX materiaal:
    • Weergave in QT en compressor geeft DS: 787×576 pixels.
    • VLC geeft DS van 830×608. Hierbij is duidelijk te zien dat de bovenste 32 lijnen het tijdcode signaal bevatten. Zie screenshot hieronder.
    • Hmmm… gelukkig gaat het wel goed in FCP en zelfs in OSX finder preview (768x576px weergave)!

TODO:

  • SD DVPAL shots. Audio wordt bij sommige files gezien in MediaInfo en in VideoSpec als 2x stereo (1x PCM en 1x DV) vanuit FCP export QT movie, FCP Media Manager en ook als batch export (item settings en DV PAL 48kHz). Preset audio settings: 48kHz / 16-bit / Channel Grouped (andere opties zijn Stereo Downmix / Discrete channels, daarbij is precies hetzelfde probleem: hij luistert niet naar de settings aldaar). Dmv video-only export krijg ik twee audiokanalen te zien in MediaInfo (geen specs voor little/signed oid) en er is dan ook geen geluid.> In compressor is UNSIGNED alleen mogelijk als je 8bits sampled. Niet bij 16, 24 of 32 bit. Little endian kan je handmatig aan vinken
    Compressor voegt TC toe of neemt deze over van orig, dit kan niet uit. Compressor geeft ook netjes de media start en media end TC en de reelnummers mee bij conversie! Zo zou het dus nog altijd kunnen worden herladen mbv batch capture. Compressor reparareert ook het audio probleem mbt de ene fantoomkanaal (hij maakt een mixdown van alle kanalen tot 1 stereokanaal). De pixel dimensions van Compressor lijken overigens wel te worden overrulled door de DV codec settings, ik had deze eerst per ongeluk op 16:9 staan maar dat had geen effect op de weergave in QT, videospec en mediainfo. Weergave in QT is netjes 768x576px.
    Squeeze repareert ook de audio problemen, maar voegt geen TC toe. Daarbij wordt het beeld wat lichter in QT player en heb ik het idee wat meer ruis te zien. Ook blijkt dat squeeze bovenaan in het beeld wat storing heeft toegevoegd, maar dit komt door de deinterlacing die ik per ongeluk nog had aanstaan. Daarbij worden de PAR settings genegeerd bij weergave, dit blijft 720×576.
    Vanuit Squeeze en Compressor ziet ook VideoSpec ook bij details: 16-bit, little endian, signed lineair PCM. Display aspect staat nu netjes op 4:3 (720×576), PAL en Interlaced. De audio-fourCC is nu 0x1 ipv sowt.
    Ik heb ook geprobeerd om alles naar IMX te converteren. Maar naar IMX werkt niet echt goed in compressor en FCP→ QT negeert de pixel aspect ratio, maar dat komt ook doordat deze staat op resp 10000:9375 en 152:135. Daarbij krijgt het een stereo track, ipv de 4 tracks die de IMX specs voorschrijven. Ik denk toch dat we beter met compressor naar DV pal kunnen. Tot slot is er een groot BFF vs TFF probleem.
    CONCLUDEREND: converteren van het DV PAL materiaal met Compressor is verstandig!
  • SD luchtshots. Nog goed nakijken. 4:3 of 16:9?? Schoonsnijden? Ik vermoed dat deze uit FCP komen!?
  • SD16x9 Geen sound. Een paar shots zonder geluid of in P mode. Ik denk dat ik deze best kan converteren naar HD720p en daarbij zelf een mute stereotrack toevoegen. Compressor voegt namelijk geen audio toe als er geen audio in het origineel zit.
  • SD 16×9 IMX50. Specs zijn exact hetzelfde als IMX30 maar dan 50mbps CBR. Daarbij hebben de shots van project 1146 een verkeerde tag en pixel aspect ratio (4:3 ipv 16:9). Ik wil alles converteren naar DVPAL:
    • Bij converteren naar Dvpal gebeurt er iets vreemd. 1049 wordt 1024 pixels. Daarbij verschijnt er een zwarte rand van 6px aan beide zijden. En er valt aan de zijkanten daadwerkelijk beeldinformatie weg: zo’n 15 pixels aan beide zijden. Dit heb ik overigens alleen in QT player en osX preview, maar en NIET in FCP: daar worden beide files goed weergegeven. Daarbij blijft het TFF/BFF probleem bestaan, wat erg goed zichtbaar is door deze files te controleren op een externe monitor. DVPAL is dus geen optie.
  • Het zou mooi zijn om een goed programma te vinden om deze files goed mee naar IMX30 te converteren. Conversies met Compressor, FCP, QT of Squeeze resulteren in een QT weergave van 720x576px ipv de 787x576px die ik had verwacht. Maar niets leidt tot een juiste 16:9 weergave:
    • FCP: 720×608 / DAR = 4:3 / PAR = 152×135 (hoe ik dit had gemaakt weet ik niet meer)
    • FCP: 720×608 / DAR = 295:228 / PAR = 59:54 (batch / QT export, same settings / IMX30).
    • Compressor: 720×608 / DAR = 24:19 / PAR = 10000:9375 + 4x 1ch audio
    • Squeeze: 720×608 / DAR = 4:3 / PAR = 152×135 (met maar 1 audiotrack + geen TC meer!)
    • Quicktime: 720×608 / DAR = 4:3 / PAR = 152×135 + 1x 3ch audio + (geen TC meer!)

LET OP: CONTROLEER ALTIJD DE INTERLACING OP EEN EXTERNE CRT MONITOR!

MediaInfo template

Opslaan in mediainfo/plugin/custom:

;

;"Bug: ""Page_Begin"", ""Page_Middle"" and ""Page_End"" sections are picked on lines 10, 11 and 12 regardless what is there. So it is better to leave them there."
;"Bug: \r\n is not turned into a newline on ""Page"" entries."
;"Bug: ""Image"" sections are not active, but should."

Page;(unused)\r\n
Page_Begin;"<html><head><title>Media Info</title><style type=""text/css"">html,body,table{font-size:x-small} html,body{margin:0} html,body{padding:0} table{empty-cells:show} td.Name{white-space:pre-wrap} </style></head><body><table class=""body"" width=""100%"" border=""1"" cellpadding=""1"" cellspacing=""0"" style=""border:0px""><caption></caption><col><col span=""2"" align=""right"" style=""white-space:nowrap""><thead><tr align=""center""><th>File</th><th align=""center"">Size</th><th align=""center"">Time</th><th>Container</th><th>Video: fourcc, beeldspecs, formatspecs</th><th>Audio</th><th>Sub</th><th>Chaps</th></tr></thead><tbody>"
Page_Middle
Page_End;</tbody></table></body></html>

File;(unused)\r\n
File_Begin;<tr>
File_Middle;(unused)\r\n
File_End;</tr>

General;"<td class=""Name"">%FileName%.%FileExtension%</td><td>%FileSize/String4%</td><td>%Duration/String%</td><td bgcolor=""#DFDFDF"">[%Format%]</td>$if(%Video_Codec_List%,,<td bgcolor=""white""></td>)"
General_Begin
General_Middle;(unused)\r\n
General_End
;
Video;<b>#%StreamKindID%:</b> [%CodecID%][: %Width_Original%x%Height_Original%][ (%DisplayAspectRatio/String%)][, %Resolution/String%] [%Standard%][ %ChromaSubsampling%][ %ColorSpace%][, %FrameRate/String%][ (%ScanType% %ScanOrder/String%)]<br> [ format: %Format%][ @ %BitRate/String%][ %BitRate_Mode/String%] ([%Format_Commercial_IfAny%][, %Format_Profile%][, %Standard%])
Video_Begin;"<td bgcolor=""#FFBFBF"">"
Video_Middle;<br>
Video_End;</td>

Audio;<b>#%StreamKindID%:</b>[, %Channel(s)% ch][, %Resolution/String%][, %SamplingRate/String%][, %BitRate/String%][, %Format%] ([%Format_Settings_Endianness%][/%Format_Settings_Sign%])
Audio_Begin;"<td bgcolor=""#BFFFBF"">"
Audio_Middle;<br>
Audio_End;</td>

Text;<b>#%StreamKindID%:</b>%Format%[@%Language%]
Text_Begin;"<td bgcolor=""#BFBFFF"">"
Text_Middle;<br>
Text_End;</td>

Chapters;<b>#%StreamKindID%:</b>%Format%[@%Language%][, %Total% entries]
Chapters_Begin;"<td bgcolor=""#FFFFBF"">"
Chapters_Middle;<br>
Chapters_End

Image;<b>#%StreamKindID%:</b>[%Width%x%Height%][, %Resolution/String%][, %StreamSize/String4%][, %Format%]
Image_Begin;"<td bgcolor=""#FFBFFF"">"
Image_Middle;<br>
Image_End

Menu;<b>#%StreamKindID%:</b>[%Width%x%Height%][, %Resolution/String%][, %FrameRate/String%][, %BitRate/String%][, %Format%][, %Language%]
Menu_Begin;"<td bgcolor=""#BFFFFF"">"
Menu_Middle;<br>
Menu_End;</td>
Advertisements
Posted in: Codecs