table of contents
- NAME
- SAMMENDRAG
- BESKRIVELSE
- BRUK
- REKKEFøLGE På ALTERNATIV
- EKSEMPLER
- SPOR-IDER
- SPRåKHåNDTERING
- TEKSTFILER OG TEGNSETTKONVERTERINGER
- ALTERNATIVFILER
- FILKOBLING
- STANDARD VERDIER
- VEDLEGG
- KAPITLER
- TAGGER
- SEGMENTINFORMASJON
- MATROSKA(TM) FILOPPSETT
- EKSTERNE TIDSSTEMPELFILER
- AVSLUTNINGSKODER
- MILJøVARIABLER
- SE OGSå
- WWW
- AUTHOR
- NOTES
MKVMERGE(1) | Brukerkommandoer | MKVMERGE(1) |
NAME¶
mkvmerge - Slå sammen multimediestrømmer til en Matroska(TM) fil
SAMMENDRAG¶
mkvmerge [globale alternativer] {-o ut} [alternativer1] {fil1} [[alternativer2] {fil2}] [@alternativer-fil.json]
BESKRIVELSE¶
Dette programmet tar inndata fra flere mediefiler og slår sammen strømmene deres (alle av dem eller bare et utvalg) til en Matroska(TM) fil; Se Matroska(TM) nettside[1].
Important
Rekkefølgen på kommandolinjealternativer er viktig. Vennligst les avsnittet "Alternativ rekkefølge" hvis du er ny bruker av programmet.
Globale alternativer¶
-v, --verbose
-q, --quiet
-o, --output filnavn
-w, --webm
For kapitler og tagger er bare et delsett av elementer tillatt. mkvmerge(1) vil automatisk fjerne alle elementer som ikke er tillatt av spesifikasjonen.
--title tittel
--default-language språkkode
Standard språkkode er 'und' for 'ubestemt'.
Håndtering av segmentinformasjon (globale alternativer)¶
--segmentinfo filnavn.xml
Se avsnittet om segmentinfo XML-filer nedenfor for detaljer.
--segment-uid SID1,SID2,...
Hvis SID starter med =, tolkes resten som navnet på en Matroska-fil hvis segment-UID leses og brukes.
Hver fil som opprettes inneholder ett segment, og hvert segment har ett segment-UID. Hvis flere segment-UID-er er spesifisert enn segmenter opprettes, ignoreres de overskytende UID-ene. Hvis færre UID-er er spesifisert enn segmenter som opprettes, vil tilfeldige UID-er bli opprettet for dem.
Kapittel- og tagghåndtering (globale alternativer)¶
--chapter-language språkkode
Dette alternativet kan brukes både for enkle kapittelfiler og for kildefiler som inneholder kapitler, men ingen informasjon om kapitlenes språk, eks.MP4 og OGM-filer.
Språket som er angitt med dette alternativet, brukes også når kapitler genereres med --generate-chapters alternativet.
--chapter-charset tegnsett
Dette byttet gjelder også for kapitler som er kopiert fra visse konteinertyper, f.eks. Ogg/OGM- og MP4-filer. Se avsnittet om kapitler nedenfor for detaljer.
--chapter-sync d[,o[/p]]
o/p: juster tidsstemplene med o/p for å fikse lineære drifter. per standard til 1 hvis utelatt. Både o og p kan være flyttall.
Standardinnstillinger: ingen manuell korrigering av synkronisering (som er det samme som d = 0 og o/p = 1.0).
Dette alternativet kan brukes flere ganger for en inndatafil som gjelder for flere spor ved å velge forskjellige spor-IDer hver gang.
--generate-chapters modus
Denne modusen fungerer også med splittmoduser 'parts:' and 'parts-frames:'.For disse modusene vil det bli generert ett kapittel for hvert tilføyde tidsstempelområde (de hvis starttidsstempler er prefikset med '+').
Note
mkvmerge(1) krever at en video eller et lydspor er til stede for å kunne bestemme når en ny fil tilføyes. Hvis ett eller flere videospor er multiplekset, brukes det første. Ellers brukes det første lydsporet.
Eksempel: --generate-chapters interval:45s
Navnene på de nye kapitlene styres av alternativet --generate-chapters-name-template. Språket settes med --chapter-language som må inntre før --generate-chapters.
--generate-chapters-name-template mal
Det er flere variabler som kan brukes i malen som erstattes av de faktiske verdiene når et kapittel genereres. Strengen '<NUM>' vil bli erstattet av kapittelnummeret. Strengen '<START>' vil bli erstattet av kapitlets starttidsstempel.
Strengene '<FILE_NAME>' og '<FILE_NAME_WITH_EXT>' fylles bare når du genererer kapitler for tilføyde filer. De vil bli erstattet av den vedlagte filens navn uten henholdsvis utvidelsen. Merk at bare filens basisnavn og filtype er satt inn, ikke katalogen eller stasjonskomponentene.
Du kan angi et minimum antall plasser for kapittelnummeret med '<NUM:places>', for eksempel '<NUM:3>'. Det resulterende tallet vil bli fylt ut med innledende nuller hvis antall plasser er mindre enn angitt.
Du kan kontrollere formatet som brukes av starttidsstempelet med <START:format>. Formatet er som standard '%H:%M:%S' hvis ingen er angitt. Gyldige formatkoder er:
--cue-chapter-name-format format
Hvis dette alternativet ikke er gitt, vil mkvmerge(1) bruke standard formatet '%p - %t' (utøveren, etterfulgt av et mellomrom, en bindestrek, et annet mellomrom og tittelen).
Hvis formatet er gitt, kopieres alt unntatt følgende metategn som det er, og metategnene erstattes slik:
--chapters filnavn
--global-tags filnavn
Generell utdatakontroll (avanserte globale alternativer)¶
--track-order FID1:TID1,FID2:TID2,...
Hvis dette alternativet ikke er angitt, sorteres sporene etter type først & rekkefølgen på kildefilen deretter. Videospor kommer først, etterfulgt av lyd- & undertekstspor. Andre sjelden brukte sportyper kommer sist.
--cluster-length spesfikasjon
Hvis ingen enhet brukes vil mkvmerge(1) sette maksimalt n datablokker i hver klynge. Maksimalt antall blokker er 65535.
Hvis nummeret d er etterfikset med 'ms' vil mkvmerge(1) sette på det meste d millisekunder med data i hver klynge. Minimum for d er '100ms', og maksimum er '32000ms'.
mkvmerge(1) setter som standard maksimalt 65535 datablokker og 5000ms data i en klynge.
Programmer som prøver å finne en bestemt ramme, kan bare søke direkte til en klynge og må lese hele klyngen etterpå. Derfor kan det å skape større klynger føre til upresis eller langsom søking.
--clusters-in-meta-seek
--timestamp-scale faktor
Normalt vil mkvmerge(1) bruke en verdi på 1000000, noe som betyr at tidsstempler og varigheter vil ha en presisjon på 1ms. For filer som ikke vil inneholde et videospor, men minst ett lydspor vil mkvmerge(1) automatisk velge et tidsstempelskaleringsfaktor slik at alle tidsstempler og varigheter har en presisjon på en lydsample. Dette fører til mer etterarbeid, men tillater presis søking og uttrekking.
Hvis den magiske verdien -1 brukes, vil mkvmerge(1) bruke samplepresisjon selv om et videospor er til stede.
--enable-durations
--no-cues
--no-date
--disable-lacing
--disable-track-statistics-tags
Aktivering av dette alternativet forhindrer mkvmerge(1) fra å skrive disse taggene og fra å berøre eksisterende tagger med samme navn.
--disable-language-ietf
--normalize-language-ietf modus
I kanonisk form erstattes alle undertagger som det finnes foretrukne verdier for, med de foretrukne verdiene. Dette konverterer for eksempel 'zh-yue-jyutping' til 'yue-jyutping' eller 'fr-FX' til 'fr-FR'.
For undertaggene for utvidet språk bygges den kanoniske formen først. Deretter erstattes alle primærspråk som det finnes en utvidet språkundertagg for, med den utvidede språkundertaggen og prefikset. Dette konverterer for eksempel 'yue-jyutping' tilbake til 'zh-yue-jyutping', men har ingen effekt på 'fr-FR' da 'fr' ikke er en undertagg for utvidet språk.
--stop-after-video-ends
Filsplitting, kobling, tilføying og sammenknytting (flere globale alternativer)¶
--split spesifikasjon
For øyeblikket støtter mkvmerge(1) følgende moduser:
Syntaks: --split [size:]d[k|m|g]
Eksempler: --split size:700m eller --split 150000000
Parameteren d kan ende med 'k', 'm' eller 'g' for å indikere at størrelsen er henholdsvis i KB, MB eller GB. Ellers antas en størrelse i byte. Etter at gjeldende utdatafil har nådd denne størrelsesgrensen, vil en ny bli startet.
Prefikset 'size:' kan utelates av kompatibilitetsgrunner.
Syntaks: --split [duration:]HH:MM:SS.nnnnnnnnn|ds
Eksempler: --split duration:00:60:00.000 eller --split 3600s
Parameteren må enten ha formen HH:MM:SS.nnnnnnnnn for å spesifisere varigheten i opptil nanosekunders presisjon eller være et tall d etterfulgt av bokstaven 's' for varigheten i sekunder. HH er antall timer, MM antall minutter, SS antall sekunder og nnnnnnnnn antall nanosekunder. Både antall timer og antall nanosekunder kan utelates. Det kan være opptil ni sifre etter desimaltegnet. Etter at varigheten av innholdet i gjeldende utdata har nådd denne grensen, startes en ny utdatafil.
Prefikset 'duration:' kan utelates av kompatibilitetsgrunner.
Syntaks: --split timestamps:A[,B[,C...]]
Eksempel: --split timestamps:00:45:00.000,01:20:00.250,6300s
Parametrene A, B, C osv. må alle ha samme format som de som brukes i løpet av varigheten (se ovenfor). Listen over tidsstempler er atskilt med komma. Når inndatastrømmen har nådd tidsstempelet for gjeldende splittpunkt, opprettes en ny fil. Deretter brukes neste splittpunkt gitt i denne listen.
Prefikset 'timestamps:' kan ikke utelates.
Syntaks: --split parts:start1-slutt1[,[+]start2-slutt2[,[+]start3-slutt3...]]
Eksempler:
Delemodusen forteller mkvmerge(1) å beholde visse tidsstempler mens andre forkastes. Områdene som skal beholdes må listes etter delene: nøkkelord og skilles med komma. Et område i seg selv består av et start- og et sluttstempel i samme format som de andre variantene av --split aksepter (f.eks. refererer både 00:01:20 og 80s til samme tidsstempel).
Hvis et starttidsstempel utelates, brukes det som standard det forrige områdets sluttstempel. Hvis det ikke var noe tidligere område, er det som standard starten på filen (se eksempel 3).
Hvis et sluttidsstempel er utelatt, er det som standard slutten av kildefilene som i utgangspunktet forteller mkvmerge(1) å beholde resten (se eksempel 3).
Normalt vil hvert område bli skrevet til en ny fil. Dette kan endres slik at etterfølgende områder skrives til samme fil. For det må brukeren prefikse starttidsstempelet med en +. Dette forteller mkvmerge(1) ikke å opprette en ny fil og i stedet legge til området til den samme filen det forrige området ble skrevet til. Tidsstempler vil bli justert slik at det ikke blir noe gap i utdatafilen selv om det var et gap i de to områdene i inndatafilen.
I eksempel 1 vil mkvmerge(1) opprette to filer. Den første vil inneholde innholdet som starter fra 00:01:20 frem til 00:02:45. Den andre filen vil inneholde innholdet som starter fra 00:05:50 frem til 00:10:30.
I eksempel 2 vil mkvmerge(1) opprette bare en fil. Denne filen vil inneholde både innholdet som starter fra 00:01:20 frem til 00:02:45 og innholdet som starter fra 00:05:50 frem til 00:10:30.
I eksempel 3 vil mkvmerge(1) opprette to filer. Den første vil inneholde innholdet fra starten av kildefilene til 00:02:45. Den andre filen vil inneholde innholdet som starter fra 00:05:50 til slutten av kildefilene.
Note
Merk at mkvmerge(1) bare tar beslutninger om splitting på viktige rammeposisjoner. Dette gjelder både starten og slutten av hvert område. Så selv om et sluttstempel er mellom to nøkkelrammer vil mkvmerge(1) fortsette å sende ut rammene opp til, men unntatt følgende nøkkelramme.
Syntaks: --split parts-frames:start1-slutt1[,[+]start2-slutt2[,[+]start3-slutt3...]]
Eksempler:
parts-frames-modusen mode forteller mkvmerge(1) å beholde visse områder med ramme-/feltnumre mens andre forkastes. Områdene som skal beholdes, må oppføres etter parts-frames:-nøkkelordet og være separert med kommategn. Et område i seg selv består av en start og en sluttramme/feltnummer. Nummereringen starter på 1.
Hvis et startnummer utelates, er det som standard sluttnummeret til det forrige området. Hvis det ikke var noe tidligere område, er det som standard starten på filen (se eksempel 3).
Hvis et sluttnummer er utelatt, er det som standard slutten av kildefilene som i utgangspunktet forteller mkvmerge(1) å beholde resten (se eksempel 3).
Normalt vil hvert område bli skrevet til en ny fil. Dette kan endres slik at etterfølgende områder skrives til samme fil. For det må brukeren prefikse startnummeret med en +. Dette forteller mkvmerge(1) ikke å opprette en ny fil og i stedet tilføye området til den samme filen det forrige området ble skrevet til. Tidsstempler vil bli justert slik at det ikke blir noe gap i utdatafilen selv om det var et gap i de to områdene i inndatafilen.
Note
Merk at mkvmerge(1) bare tar beslutninger om splitting på viktige rammeposisjoner. Dette gjelder både starten og slutten av hvert område. Så selv om en ramme/felt er mellom to nøkkelrammer vil mkvmerge(1) fortsette å sende ut rammene opp til, men unntatt følgende nøkkelramme.
I eksempel 2 vil mkvmerge(1) opprette bare en fil. Denne filen vil inneholde både innholdet som starter fra 733 frem til 912 og innholdet som starter fra 1592 frem til 2730.
I eksempel 3 vil mkvmerge(1) opprette to filer. Den første vil inneholde innholdet fra starten av kildefilene til 430. Den andre filen vil inneholde innholdet som starter fra 2512 til slutten av kildefilene.
Denne modusen vurderer bare det første videosporet som sendes ut. Hvis det ikke sendes ut noe videospor, vil det ikke oppstå splitting.
Note
Tallene gitt med dette argumentet tolkes basert på antall Matroska(TM) blokker som er sendt ut. En enkelt Matroska(TM) blokk inneholder enten en fullformat (for progressivt innhold) eller et enkelt felt (for sammenflettet innhold). MKVMERGE skiller ikke mellom disse to og teller bare antall blokker. For eksempel: hvis man ønsket å splitte etter den 25. fulle rammen med sammenflettet innhold, måtte man bruke 50 (to felt per full ramme) som splittpunkt.
Syntaks: --split frames:A[,B[,C...]]
Eksempel: --split frames:120,237,891
Parametrene A, B, C osv. må alle være positive heltall. Nummereringen starter på 1. Listen over ramme-/feltnumre er atskilt med komma. Etter at inndatastrømmen har nådd ramme-/feltnummeret for gjeldende splittpunkt, opprettes en ny fil. Deretter brukes neste splittpunkt gitt i denne listen.
Prefikset 'frames:' kan ikke utelates.
Denne modusen vurderer bare det første videosporet som sendes ut. Hvis det ikke sendes ut noe videospor, vil det ikke oppstå splitting.
Note
Tallene gitt med dette argumentet tolkes basert på antall Matroska(TM) blokker som er sendt ut. En enkelt Matroska(TM) blokk inneholder enten en fullformat (for progressivt innhold) eller et enkelt felt (for sammenflettet innhold). MKVMERGE skiller ikke mellom disse to og teller bare antall blokker. For eksempel: hvis man ønsket å splitte etter den 25. fulle rammen med sammenflettet innhold, måtte man bruke 50 (to felt per full ramme) som splittpunkt.
Syntaks: --split chapters:all eller --split chapters:A[,B[,C...]]
Eksempel: --split chapters:5,8
Parametrene A, B, C osv. må alle være positive heltall. Nummereringen starter på 1. Listen over kapittelnumre er atskilt med komma. Oppdeling skjer rett før den første nøkkelrammen hvis tidsstempel er lik eller større enn starttidsstempelet for kapitlene der tallene er oppført. Et kapittel som starter på 0s blir aldri vurdert for splitting og forkastes stille.
Nøkkelordet all kan brukes i stedet for å liste opp alle kapittelnumre manuelt.
Prefikset 'chapters:' kan ikke utelates.
Note
Matroska(TM) filformatet støtter vilkårlig dypt nestede kapittelstrukturer kalt 'utgaveoppføringer' og 'kapittelatomer'. Denne modusen vurderer imidlertid bare det øverste nivået av kapitler på tvers av alle utgaveoppføringer.
For denne splittingsmodusen behandles utdatafilnavnet annerledes enn for den normale operasjonen. Den kan inneholde et printf-lignende uttrykk '%d' inkludert en valgfri feltbredde, f.eks. '%02d'. Hvis det gjør det, blir det nåværende filnummeret formatert riktig og satt inn på det punktet i filnavnet. Hvis det ikke finnes et slikt mønster, antas et mønster av '-%03d' rett før filens utvidelse: '-o output.mkv' vil resultere i 'output-001.mkv' og så videre. Hvis det ikke er noen utvidelse, vil '-%03d' bli tilføyd navnet.
Et annet mulig mønster er '%c' som vil bli erstattet av navnet på det første kapittelet i filen. Merk at når '%c' er til stede, vil mønsteret '-%03d' ikke bli lagt til automatisk.
--link
--link-to-previous segment-UID
Hvis SID starter med =, tolkes resten som navnet på en Matroska-fil hvis segment-UID leses og brukes.
--link-to-next segment-UID
Hvis SID starter med =, tolkes resten som navnet på en Matroska-fil hvis segment-UID leses og brukes.
--append-mode modus
Når mkvmerge tilføyer et spor (kalt 'track2_1' fra nå av) fra en annen fil (kalt 'fil2') til et spor (kalt 'track1_1') fra den første filen (kalt 'file1') så må den forskyve alle tidsstempler for 'track2_1' med en mengde. For 'fil'-modus er denne mengden det høyeste tidsstempelet som oppstår i 'fil1', selv om tidsstempelet var fra et annet spor enn 'track1_1'. I spormodus er forskyvningen det høyeste tidsstempelet på 'track1_1'.
Dessverre kan mkvmerge ikke oppdage hvilken modus som kan brukes pålitelig. Derfor er den standard til 'fi' -modus. 'Fil' -modus fungerer vanligvis bedre for filer som er opprettet uavhengig av hverandre; f.eks. når du tilføyer AVI- eller MP4-filer. 'Spor'-modus kan fungere bedre for kilder som egentlig bare er deler av en stor fil, for eksempel for VOB- og EVO-filer.
Undertekstspor blir alltid behandlet som om 'fil'-modus var aktiv, selv om 'spor'-modus faktisk er det.
--append-to SFID1:STID1:DFID1:DTID1[,...]
Hvis dette alternativet er utelatt, brukes en standardtilordning. Denne standardtilordningen legger til hvert spor fra gjeldende fil til et spor fra den forrige filen med samme sporings-ID. Dette gjør det enkelt å tilføye hvis en film er splittet i to deler og begge filene har samme antall spor og spor-IDer med kommandoen mkvmerge -o utdata.mkv del1.mkv + del2.mkv.
+
$ mkvmerge -o full.mkv fil1.mkv + fil2.mkv $ mkvmerge -o full.mkv fil1.mkv +fil2.mkv
[ fil1 fil2 ]
Dette er en alternativ syntaks til å bruke '+' mellom filnavnene. Derfor er de følgende to kommandoene likeverdige:
$ mkvmerge -o full.mkv fil1.mkv + fil2.mkv $ mkvmerge -o full.mkv '[' fil1.mkv fil2.mkv ']'
=
'=' kan også settes foran neste filnavn. Derfor er de følgende to kommandoene likeverdige:
$ mkvmerge -o full.mkv = fil1.vob $ mkvmerge -o full.mkv =fil1.vob
( fil1 fil2 )
Dette kan brukes til f.eks. VOB filer som kommer fra en DVD- eller MPEG-transportstrømmer. Den kan ikke brukes hvis hver fil inneholder sitt eget sett med datahoder, noe som vanligvis er tilfelle med frittstående filer som AVI eller MP4.
Å sette et filnavn i parentes forhindrer også mkvmerge(1) fra å lete etter flere filer med samme basenavn som beskrevet i alternativ =. Derfor er disse to kommandolinjene likeverdige:
$ mkvmerge -o ut.mkv = fil.mkv $ mkvmerge -o ut.mkv '(' fil.mkv ')'
Flere ting bør bemerkes:
Støtte for vedlegg (flere globale alternativer)¶
--attachment-description beskrivelse
--attachment-mime-type MIME type
Hvis ingen MIME-type er gitt en for et vedlegg, vil typen bli oppdaget automatisk.
--attachment-name navn
--attach-file filnavn, --attach-file-once filnavn
mkvextract(1) kan brukes til å trekke ut vedlagte filer fra en Matroska(TM)-fil.
--enable-legacy-font-mime-types
Dette påvirker både nye vedlegg hvis MIME-typen oppdages automatisk og eksisterende vedlegg hvis lagrede MIME-typer vil bli tilordnet på nytt til de eldre.
De berørte MIME-typene er 'font/sfnt', 'font/ttf' og 'font/collection' som alle er tilordnet 'application/x-truetype-fonts' og 'font/otf' som er tilordnet 'application/vnd' .ms-opentype'.
Alternativer som kan brukes for hver inndatafil¶
-a, --audio-tracks [!]n,m,...
I stedet for spor-ID-er kan du også oppgi ISO 639-2-språkkoder. Dette vil bare fungere for kildefiler som tilbyr språktagger for sporene sine.
Standard: kopier alle spor av denne typen.
Hvis ID-ene er prefikset med ! da blir betydningen snudd: kopier alle spor av denne typen bortsett fra de som er oppført etter !.
-d, --video-tracks [!]n,m,...
I stedet for spor-ID-er kan du også oppgi ISO 639-2-språkkoder. Dette vil bare fungere for kildefiler som tilbyr språktagger for sporene sine.
Hvis ID-ene er prefikset med ! da blir betydningen snudd: kopier alle spor av denne typen bortsett fra de som er oppført etter !.
-s, --subtitle-tracks [!]n,m,...
I stedet for spor-ID-er kan du også oppgi ISO 639-2-språkkoder. Dette vil bare fungere for kildefiler som tilbyr språktagger for sporene sine.
Hvis ID-ene er prefikset med ! da blir betydningen snudd: kopier alle spor av denne typen bortsett fra de som er oppført etter !.
-b, --button-tracks [!]n,m,...
I stedet for spor-ID-er kan du også oppgi ISO 639-2-språkkoder. Dette vil bare fungere for kildefiler som tilbyr språktagger for sporene sine.
Hvis ID-ene er prefikset med ! da blir betydningen snudd: kopier alle spor av denne typen bortsett fra de som er oppført etter !.
--track-tags [!]n,m,...
Hvis ID-ene er prefikset med ! blir betydningen snudd: kopier alt bortsett fra de ID-ene som er oppført etter !.
-m, --attachments [!]n[:all|first],m[:all|first],...
Standard er å kopiere alle vedlegg til alle utdatafiler.
Hvis ID-ene er prefikset med ! blir betydningen snudd: kopier alt bortsett fra de ID-ene som er oppført etter !.
-A, --no-audio
-D, --no-video
-S, --no-subtitles
-B, --no-buttons
-T, --no-track-tags
--no-chapters
-M, --no-attachments
--no-global-tags
--regenerate-track-uids
Denne virkemåten aktiveres automatisk for Matroska-filer opprettet av MakeMKV-programvaren. Årsaken er at MakeMKV bruker fortløpende tall (1, 2, 3...) som UID-er i stedet for å generere tilfeldige.
-y, --sync TID:d[,o[/p]]
o/p: juster tidsstemplene med o/p for å fikse lineære drifter. per standard til 1 hvis utelatt. Både o og p kan være flyttall.
Standardinnstillinger: ingen manuell korrigering av synkronisering (som er det samme som d = 0 og o/p = 1.0).
Dette alternativet kan brukes flere ganger for en inndatafil som gjelder for flere spor ved å velge forskjellige spor-IDer hver gang.
--cues TID:none|iframes|all
Standard er 'iframes' for video- og undertekstspor og 'none' for lydspor. Se også alternativet --no-cues som hindrer opprettelsen av signaloppføringer uavhengig av --cues-alternativene som brukes.
Dette alternativet kan brukes flere ganger for en inndatafil som gjelder for flere spor ved å velge forskjellige spor-IDer hver gang.
--default-track-flag TID[:bool]
Hvis brukeren ikke eksplisitt velger et spor under avspilling, bør avspilleren velge et av sporene som har flagget "standardspor" satt, og ta hensyn til brukerpreferanser som foretrukket språk.
Dette alternativet kan brukes flere ganger for en inndatafil som gjelder for flere spor ved å velge forskjellige spor-IDer hver gang.
--track-enabled-flag TID[:bool]
Bare spor der flagget "spor aktivert" er angitt, skal vurderes for avspilling.
Dette alternativet kan brukes flere ganger for en inndatafil som gjelder for flere spor ved å velge forskjellige spor-IDer hver gang.
--forced-display-flag TID[:bool]
Dette alternativet kan brukes flere ganger for en inndatafil som gjelder for flere spor ved å velge forskjellige spor-IDer hver gang.
--hearing-impaired-flag TID[:bool]
Dette alternativet kan brukes flere ganger for en inndatafil som gjelder for flere spor ved å velge forskjellige spor-IDer hver gang.
--visual-impaired-flag TID[:bool]
Dette alternativet kan brukes flere ganger for en inndatafil som gjelder for flere spor ved å velge forskjellige spor-IDer hver gang.
--text-descriptions-flag TID[:bool]
Dette alternativet kan brukes flere ganger for en inndatafil som gjelder for flere spor ved å velge forskjellige spor-IDer hver gang.
--original-flag TID[:bool]
Dette alternativet kan brukes flere ganger for en inndatafil som gjelder for flere spor ved å velge forskjellige spor-IDer hver gang.
--commentary-flag TID[:bool]
Dette alternativet kan brukes flere ganger for en inndatafil som gjelder for flere spor ved å velge forskjellige spor-IDer hver gang.
--track-name TID:navn
--language TID:språk
Dette alternativet kan brukes flere ganger for en inndatafil som gjelder for flere spor ved å velge forskjellige spor-IDer hver gang.
-t, --tags TID:filnavn
--aac-is-sbr TID[:0|1]
Hvis kildefilen er en Matroska(TM) fil, bør CodecID være nok til å oppdage SBR AAC. Men hvis CodecID er feil, kan denne bryteren brukes til å rette opp det.
Hvis mkvmerge urettmessig oppdager at en AAC-fil er SBR, kan du legge til :0' til spor-IDen.
--audio-emphasis TID:n|symbolsk navn
--reduce-to-core TID
For øyeblikket påvirkes bare DTS-spor av dette alternativet. TrueHD-spor som inneholder en innebygd AC-3-kjerne, presenteres i stedet som to separate spor der brukeren kan velge hvilket spor som skal kopieres. For DTS ville en slik ordning ikke fungere, da HD-utvidelsene ikke kan dekodes av seg selv - i motsetning til TrueHD-dataene.
--remove-dialog-normalization-gain TID
For øyeblikket påvirkes bare AC-3-, DTS- og TrueHD-spor av dette alternativet.
--timestamps TID:filnavn
--default-duration TID:x
Hvis standardvarigheten ikke tvinges, vil mkvmerge prøve å utlede sporets standardvarighet fra konteineren og/eller den kodede bitstrømmen for bestemte sportyper, for eksempel AVC/H.264 eller MPEG-2.
Dette alternativet kan også brukes til å endre FPS for videospor uten å måtte bruke en ekstern tidsstempelfil.
--fix-bitstream-timing-information TID[:0|1]
Note
Dette har bare blitt implementert for AVC / H.264-videospor så langt.
--compression TID:n
Komprimeringsmetoden 'mpeg4_p2'/'mpeg4p2' er en spesiell komprimeringsmetode kalt 'header removal' (fjerning av datahode) som bare er tilgjengelig for MPEG4 del 2 videospor.
Standard for noen underteksttyper er 'zlib' komprimering. Denne komprimeringsmetoden er også den som de fleste om ikke alle avspillingsapplikasjoner støtter. Støtte for andre komprimeringsmetoder enn 'none' er ikke garantert.
Alternativer som bare gjelder for videospor¶
-f, --fourcc TID:FourCC
--display-dimensions TID:breddexhøyde
En annen måte å angi verdiene på er å bruke --aspect-ratio eller --aspect-ratio-factor alternativet (se nedenfor). Disse alternativene utelukker hverandre.
--aspect-ratio TID:sideforhold|bredde/høyde
En annen måte å angi verdiene på er å bruke --aspect-ratio-factor eller --display-dimensions alternativene (se ovenfor og nedenfor). Disse alternativene utelukker hverandre.
--aspect-ratio-factor TID:faktor|n/d
En annen måte å angi verdiene på er å bruke --aspect-ratio eller --display-dimensions alternativene (se ovenfor). Disse alternativene utelukker hverandre.
--cropping TID:venstre,topp,høyre,bunn
--color-matrix-coefficients TID:n
Gyldige verdier og deres betydning er:
0: GBR, 1: BT709, 2: uspesifisert, 3: reservert,4: FCC, 5: BT470BG, 6: SMPTE 170M, 7: SMPTE 240M, 8: YCOCG, 9: BT2020 ikke-konstant luminans, 10: BT2020 konstant luminans
--color-bits-per-channel TID:n
--chroma-subsample TID:hori,vert
Eksempel: for video med 4:2:0 kroma subsampling bør parameteren settes til TID:1,1.
--cb-subsample TID:hori,vert
Eksempel: for video med 4:2:1 kroma subsampling, bør parameteren --chroma-subsample settes til TID:1,0 og Cb-subsample bør settes til TID:1,0.
--chroma-siting TID:hori,vert
--color-range TID:n
--color-transfer-characteristics TID:n
Gyldige verdier og deres betydning er:
0: reservert, 1: ITU-R BT.709, 2: uspesifisert, 3: reservert, 4: gamma 2.2-kurve, 5: gamma 2.8-kurve, 6: SMPTE 170M, 7: SMPTE 240M, 8: lineær, 9: log, 10: log sqrt, 11: IEC 61966-2-4, 12: ITU-R BT.1361 utvidet fargespekter, 13: IEC 61966-2-1, 14: ITU-R BT.2020 10 bit, 15: ITU-R BT.2020 12 bit, 16: SMPTE ST 2084, 17: SMPTE ST 428-1; 18: ARIB STD-B67 (HLG)
--color-primaries TID:n
Gyldige verdier og deres betydning er:
0: reservert, 1: ITU-R BT.709, 2: uspesifisert, 3: reservert, 4: ITU-R BT.470M, 5: ITU-R BT.470BG, 6: SMPTE 170M, 7: SMPTE 240M, 8: FILM, 9: ITU-R BT.2020, 10: SMPTE ST 428-1, 22: JEDEC P22 fosfor
--max-content-light TID:n
--max-frame-light TID:n
--chromaticity-coordinates TID:rød-x,rød-y,grønn-x,grønn-y,blå-x,blå-y
--white-color-coordinates TID:x,y
--max-luminance TID:flyttall
--min-luminance TID:flyttall
--projection-type TID:metode
--projection-private TID:data
--projection-pose-yaw TID:flyttall
--projection-pose-pitch TID:flyttall
--projection-pose-roll TID:flyttall
--field-order TID:n
0: progressiv; 1: sammenflettet med toppfelt vist først og toppfelt lagret først; 2: ubestemt feltrekkefølge; 6: sammenflettet med det nederste feltet vist først og det nederste feltet lagret først; 9: sammenflettet med bunnfelt vist først og toppfelt lagret først; 14: sammenflettet med toppfelt vist først og nederste felt lagret først
--stereo-mode TID:n|symbolsk navn
Alternativer som bare gjelder for tekst-undertekstspor¶
--sub-charset TID:tegnsett
Dette alternativet kan brukes flere ganger for en inndatafil som gjelder for flere spor ved å velge forskjellige spor-IDer hver gang.
Andre alternativer¶
-i, --identify filnavn
Utdataformatet som brukes til resultatet, kan endres med alternativet --identification-format.
-J filnavn
-F, --identification-format format
Dette formatet er ikke ment å analyseres. Utdataen vil bli oversatt til språket mkvmerge(1) bruker (se også --ui-language).
mkvmerge-identification-output-schema-v20.json[3]
Alle versjoner av JSON-skjemaet er tilgjengelige både på nett og i de frigitte kildekodearkivene.
--probe-range-percentage prosent
Hvis spor er kjent for å være til stede, men ikke funnet, kan prosentandelen som skal undersøkes endres med dette alternativet. Minimum 10 MB er innebygd og kan ikke endres.
--list-audio-emphasis
--list-languages
--list-stereo-modes
-l, --list-types
--priority prioritet
Å velge 'laveste' fører også til at mkvmerge(1) velger inaktiv I/O-prioritet i tillegg til lavest mulig prosessprioritet.
--command-line-charset character-set
--output-charset character-set
-r, --redirect-output filnavn
--flush-on-close
--ui-language kode
--abort-on-warnings
--deterministic frø
Frøet kan være en vilkårlig streng og trenger ikke å være et tall.
Resultatet av byte-identiske filer er bare garantert under følgende forhold:
Bruk av andre versjoner av mkvmerge(1) eller andre kommandolinjealternativer kan resultere i den samme byte-identiske filen, men det kan ikke garanteres å gjøre det.
--debug emne
--engage funksjon
--gui-mode
@alternativer-fil.json
--capabilities
-h, --help
-V, --version
BRUK¶
For hver fil kan brukeren velge hvilke spor mkvmerge(1) skal ta. De er alle satt inn i filen spesifisert med -o. En liste over kjente (og støttede) kildeformater kan fås med alternativet -l.
Important
Rekkefølgen på kommandolinjealternativer er viktig. Vennligst les avsnittet "Alternativ rekkefølge" hvis du er ny bruker av programmet.
REKKEFøLGE På ALTERNATIV¶
Rekkefølgen som alternativene angis i, er viktig for noen alternativer. Alternativene faller inn i to kategorier:
Alternativene behandles fra venstre mot høyre. Hvis et alternativ vises flere ganger innenfor samme omfang, brukes den siste forekomsten. Derfor settes tittelen til "Noe annet" i følgende eksempel:
$ mkvmerge -o utdata.mkv --title 'Det og dette' input.avi --title 'Noe annet'
Følgende eksempel viser at det er greit å bruke --language-alternativet to ganger fordi de brukes i forskjellige områder. Selv om de gjelder for samme spor-ID, gjelder de for forskjellige inndatafiler og har derfor forskjellige omfang:
$ mkvmerge -o utdata.mkv --language 0:fre français.ogg --language 0:deu deutsch.ogg
EKSEMPLER¶
La oss anta at du har en fil som heter MinFilm.avi og lydsporet i en egen fil, f.eks. 'MinFilm.wav'. Først vil du kode lyden til OggVorbis(TM):
$ oggenc -q4 -o MinFilm.ogg MinFilm.wav
Etter et par minutter kan du forene video og lyd:
$ mkvmerge -o MinFilm-med-lyd.mkv MinFilm.avi MinFilm.ogg
Hvis din AVI allerede inneholder et lydspor, blir det også kopiert (hvis mkvmerge(1) støtter lydformatet). For å unngå det bare gjør
$ mkvmerge -o MinFilm-med-lyd.mkv -A MinFilm.avi MinFilm.ogg
Etter noen minutters betenkningstid ripper du et annet lydspor, f.eks. regissørens kommentarer eller et annet språk til "MinFilm-leggtil-lyd.wav". Kod den på nytt og slå den sammen med den andre filen:
$ oggenc -q4 -o MinFilm-leggtil-lyd.ogg MinFilm-leggtil-lyd.wav $ mkvmerge -o MM-komplett.mkv MinFilm-med-lyd.mkv MinFilm-leggtil-lyd.ogg
Det samme resultatet kan oppnås med
$ mkvmerge -o MM-komplett.mkv -A MinFilm.avi MinFilm.ogg MinFilm-leggtil-lyd.ogg
Fyr opp mplayer(TM)og kos deg. Hvis du har flere lydspor (eller til og med videospor), kan du fortelle mplayer(TM) hvilket spor som skal spilles med '-vid' og '-aid' alternativene. Disse er 0-baserte og skiller ikke mellom video og lyd.
Hvis du trenger et lydspor synkronisert, kan du gjøre det enkelt. Finn først ut hvilken spor-ID Vorbis-sporet har med
$ mkvmerge --identify ikke-synkronisert.ogg
Nå kan du bruke denne ID-en på følgende kommandolinje:
$ mkvmerge -o synkronisert.mkv -A kilde.avi -y 12345:200 ikke-synkronisert.ogg
Dette vil legge til 200 ms stillhet i begynnelsen av lydsporet med ID-en 12345 tatt fra 'ikke-synkronisert.ogg'.
Noen filmer synkroniseres riktig, men går sakte ut av synkronisering. For denne typen filmer kan du angi en forsinkelsesfaktor som brukes på alle tidsstempler – ingen data legges til eller fjernes. Så hvis du gjør den faktoren for stor eller for liten, får du dårlige resultater. Et eksempel er at en episode jeg transkodet var 0.2 sekunder ute av synkronisering på slutten av filmen som var 77340 rammer lang. Ved 29.97fps korresponderer0.2 sekunder omtrent til 6 rammer. Da gjorde jeg dette
$ mkvmerge -o synkronisert.mkv -y 23456:0,77346/77340 ikke-synkronisert.mkv
Resultatet ble bra.
Synkroniseringsalternativene kan også brukes til undertekster på samme måte.
For tekst-undertekster kan du enten bruke Windows-programvare (som SubRipper(TM)) eller subrip(TM)-pakken som finnes i transkode(1)s kilder i katalogen 'contrib/subrip'. Den generelle prosessen er:
$ tccat -i /sti/til/kopiert/dvd/ -T 1 -L | tcextract -x ps1 -t vob -a 0x20 | undertekst2pgm -o minfilm
$ pgm2txt minfilm
$ ispell -d american *txt
$ srttool -s -w -i minfilm.srtx -o minfilm.srt
Den resulterende filen kan brukes som en annen inndatafil for mkvmerge(1):
$ mkvmerge -o minfilm.mkv minfilm.avi minfilm.srt
Hvis du vil spesifisere språket for et gitt spor, gjøres dette enkelt. Finn først ut ISO 639-2-koden for språket ditt. mkvmerge(1) kan liste alle disse kodene for deg:
$ mkvmerge --list-languages
Søk i listen etter språkene du trenger. La oss anta at du har lagt to lydspor i en Matroska(TM) fil og vil angi språkkodene deres og at spor-ID-ene deres er 2 og 3. Dette kan gjøres med
$ mkvmerge -o med-språk-koder.mkv --language 2:ger --language 3:dut uten-språk-koder.mkv
Som du kan se, kan du bruke --language-bryteren flere ganger.
Kanskje du også vil at spilleren skal bruke det nederlandske språket som standardspråk. Du har også ekstra undertekster, for eksempel på engelsk og fransk, og vil at spilleren skal vise de franske som standard. Dette kan gjøres med
$ mkvmerge -o med-språk-koder.mkv --language 2:ger --language 3:dut --default-track-flag 3 uten-språk-koder.mkv --language 0:eng engelsk.srt --default-track-flag 0 --language 0:fre fransk.srt
Hvis du ikke ser språket eller standard sporflagg som du har angitt i mkvinfo(1)s utdata, kan du lese avsnittet om standard verdier.
Slå av komprimeringen for en inndatafil.
$ mkvmerge -o ingen-komprimering.mkv --compression -1:none MinFilm.avi --compression -1:none minfilm.srt
SPOR-IDER¶
Vanlige spor-IDer¶
Noen av alternativene for mkvmerge(1) trenger en spor-ID for å spesifisere hvilket spor de skal brukes på. Disse spor-IDene skrives ut av leserne når de demultiplekser gjeldende inndatafil, eller hvis mkvmerge(1) kalles med --identify-alternativet. Et eksempel på slik utdata:
$ mkvmerge -i v.mkv Fil 'v.mkv': konteiner: Matroska(TM) Spor ID 0: video (V_MS/VFW/FOURCC, DIV3) Spor ID 1: lyd (A_MPEG/L3)
Ikke forveksle spor-IDene som er tilordnet sporene som er plassert i utdata-MKV-filen, med spor-ID-ene til inndatafilene. Bare spor-ID-ene for inndatafilen brukes til alternativer som trenger disse verdiene.
Vær også oppmerksom på at hver inndatafil har sitt eget sett med spor-IDer. Derfor endres ikke spor-ID-ene for filen 'file1.ext' som rapportert av 'mkvmerge --identify' uansett hvor mange andre inndatafiler som er der eller i hvilken posisjon 'file1.ext' brukes.
Spor-ID-er tildeles slik:
Alternativene som bruker spor-ID-ene er de hvis beskrivelse inneholder 'TID'. Følgende alternativer bruker spor-ID-er også: --audio-tracks, --video-tracks, --subtitle-tracks, --button-tracks og --track-tags.
Spesial spor-IDer¶
Det er flere IDer som har spesiell betydning og som ikke forekommer i identifikasjonsutdataene.
Den spesielle spor-ID-en '-1' er et jokertegn og bruker den gitte bryteren på alle spor som leses fra en inndatafil.
Den spesielle spor-IDen '-2' refererer til kapitlene i en kildefil. Foreløpig bruker bare alternativet --sync denne spesielle IDen. Som et alternativ til --sync -2:... kan alternativet --chapter-sync ... brukes.
SPRåKHåNDTERING¶
Matroska(TM) har støtte for to forskjellige typer språkelementer: det gamle, utdaterte "Language"-elementet som inneholder ISO 639-2 alfa 3-koder og de nye "LanguageIETF"-kodene som inneholder IETF BCP 47-språkkoder. Alle mkvmerge(1)s alternativer som godtar et språk, godtar en BCP 47-språkkode. mkvmerge(1) vil utlede verdien for det avviklede "Språk"-elementet fra BCP 47-språkkodene der det er mulig.
Når du identifiserer en fil i JSON-modus, blir eksisterende "LanguageIETF"-sporhodeelementer sendt ut som language_ietf-sporegenskapen.
Når du skriver en fil vil mkvmerge(1) alltid skrive "LanguageIETF", "ChapLanguageIETF" og "TagLanguageIETF" elementer (de to sistnevnte bare hvis kapitler eller koder er skrevet henholdsvis). I tillegg til disse elementene vil de tilsvarende gamle elementene bli skrevet; de blir satt til ISO 639-2-kodedelen av BCP 47-språktaggen. For eksempel, når sporspråket er satt til sr-Cyrl-RS, vil "LanguageIETF" bli satt til sr-Cyrl-RS og det gamle "Language" -elementet vil bli satt til srp.
Når du leser eksisterende filer (Matroska-filer, XML-kapittel- eller taggfiler osv.) som allerede inneholder "... LanguageIETF"-elementer vil de eksisterende elementene bli beholdt. Ellers vil "... LanguageIETF"-elementer bli lagt til basert på kommandolinjealternativer og andre eksisterende avviklede "... Language"-elementer.
Opprettelsen av de nye elementene kan deaktiveres helt med kommandolinjealternativet --disable-language-ietf som opererer på alle tre nye elementer.
Du kan velge normaliseringsmetoden som brukes på undertagger for utvidet språk med parameteren --normalize-language-ietf.
TEKSTFILER OG TEGNSETTKONVERTERINGER¶
Introduksjon¶
All tekst i en Matroska(TM) fil er kodet i UTF-8. Dette betyr at mkvmerge(1) må konvertere hver tekstfil den leser, samt hver tekst gitt på kommandolinjen fra ett tegnsett til UTF-8. Til gjengjeld betyr dette også at mkvmerge(1)s utdata må konverteres tilbake til det tegnsettet fra UTF-8, f.eks. hvis en ikke-engelsk oversettelse brukes med --ui-language eller for tekst som kommer fra en Matroska(TM) fil.
mkvmerge(1) gjør denne konverteringen automatisk basert på tilstedeværelsen av en byterekkefølgemarkør (kort: BOM) eller systemets gjeldende nasjonale innstilling. Hvordan tegnsettet utledes fra den nasjonale innstillingen, avhenger av operativsystemet som mkvmerge(1) kjøres på.
Markører for byterekkefølge (BOM)¶
Tekstfiler som starter med en BOM, er allerede kodet i én representasjon av UTF. mkvmerge(1) støtter følgende fem moduser: UTF-8, UTF-16 Little og Big Endian, UTF-32 Little og Big Endian. Tekstfiler med en BOM konverteres automatisk til UTF-8. Noen av parametrene som ellers ville angi tegnsettet for en slik fil (f.eks. --sub-charset) blir stille ignorert.
Linux og Unix-lignende systemer inkludert macOS¶
På Unix-lignende systemer bruker mkvmerge(1) systemkallet setlocale(3) som igjen bruker miljøvariablene LANG, LC_ALL og LC_CYPE. Det resulterende tegnsettet er ofte et av UTF-8- eller ISO-8859-*-familien og brukes til alle tekstfiloperasjoner og for koding av strenger på kommandolinjen og for utdata til konsollen.
Windows¶
I Windows bestemmes standard tegnsett som brukes til å konvertere tekstfiler, av et kall til systemkallet GetACP().
Lesing av kommandolinjen gjøres med GetCommandLineW()-funksjonen som allerede returnerer en Unicode-streng. Derfor ignoreres alternativet --command-line-charset i Windows.
Utdata til konsollen består av tre scenarier:
Kommandolinjealternativer¶
Det finnes følgende alternativer som gjør det mulig å angi tegnsettene:
ALTERNATIVFILER¶
En alternativfil er en fil mkvmerge(1) kan lese flere kommandolinjeargumenter fra. Dette kan brukes for å omgå visse begrensninger i skallet eller operativsystemet når du kjører eksterne programmer som en begrenset kommandolinjelengde.
En alternativfil inneholder JSON-formaterte data. Innholdet må være en gyldig JSON-tabell som bare består av JSON-strenger. Filens koding må være UTF-8. Filen skal ikke starte med en byterekkefølgemarkør (BOM), men hvis det finnes en, hoppes den over.
Reglene for å unnslippe spesialtegn inne i JSON er de i den offisielle JSON-spesifikasjonen, RFC 7159[4].
Selve alternativfilens navn må angis som et kommandolinjeargument med '@-tegn som prefiks.
Kommandolinjen 'mkvmerge -o "minfil.mkv" -A "en film.avi" lyd.ogg' kan konverteres til følgende JSON-alternativfil kalt f.eks. 'alternativer.json':
[
"-o",
"c:\\Matroska\\min fil.mkv",
"--title",
"#65",
"-A",
"en film.avi",
"lyd.ogg" ]
Den tilsvarende kommandoen vil da være 'mkvmerge @alternativer.json'.
FILKOBLING¶
Matroska(TM) støtter filkobling som ganske enkelt sier at en bestemt fil er forgjengeren eller etterfølgeren til den nåværende filen. For å være presis er det egentlig ikke filene som er koblet, men Matroska(TM) segmentene. Siden de fleste filer sannsynligvis bare vil inneholde ett Matroska(TM) segment, bruker følgende forklaringer begrepet 'filkobling', selv om 'segmentkobling' ville være mer passende.
Hvert segment identifiseres av en unik 128-biters bred segment-UID. Denne UID-en genereres automatisk av mkvmerge(1). Koblingen gjøres primært ved å sette segment-UID-ene (kort: SID) til den forrige/neste filen inn i segmentoverskriftsinformasjonen. mkvinfo(1) skriver ut disse SIDs hvis den finner dem.
Hvis en fil er delt inn i flere mindre og kobling brukes, vil ikke tidsstemplene starte på 0 igjen, men fortsette der den siste filen har sluttet. På denne måten beholdes den absolutte tiden selv om de tidligere filene ikke er tilgjengelige (f.eks. ved strømming). Hvis ingen kobling brukes, skal tidsstemplene starte på 0 for hver fil. Som standard bruker mkvmerge(1) ikke filkobling. Hvis du vil det, kan du slå den på med --link-alternativet. Dette alternativet er bare nyttig hvis splitting også er aktivert.
Uansett om splitting er aktiv eller ikke, kan brukeren fortelle mkvmerge(1) å koble de produserte filene til bestemte SID-er. Dette oppnås med alternativene --link-to-previous og --link-to-next. Disse alternativene godtar et segment-SID i formatet som mkvinfo(1) sender ut: 16 heksadesimale tall mellom 0x00 og 0xff med prefiks '0x' for hvert, f.eks. '0x41 0xda 0x73 0x66 0xd9 0xcf 0xb2 0x1e 0xae 0x78 0xeb 0xb4 0x5e 0xca 0xb3 0x93'. Alternativt kan en kortere form brukes: 16 heksadesimale tall mellom 0x00 og 0xff uten '0x' prefikser og uten mellomrommene, f.eks. '41da7366d9cfb21eae78ebb45ecab393'.
Hvis splitting brukes, blir den første filen koblet til SID-en gitt med --link-to-previous og den siste filen er knyttet til SID gitt med --link-to-next. Hvis splitting ikke brukes, vil den ene utdatafilen bli koblet til begge de to SIDene.
STANDARD VERDIER¶
Matroska(TM) spesifikasjonen angir at noen elementer har en standardverdi. Vanligvis skrives ikke et element til filen hvis verdien er lik standardverdien for å spare plass. Elementene som brukeren kan gå glipp av i mkvinfo(1)s utdata er språk og standard sporflagg-elementene. Standard verdi for språk er engelsk ('eng'), og standard verdien for standard sporflagg er sann. Derfor, hvis du brukte --language 0:eng for et spor vil det ikke vises i mkvinfo(1)s utdata.
VEDLEGG¶
Kanskje du også vil beholde noen bilder sammen med Matroska(TM) -filen, eller du bruker SSA-undertekster og trenger en spesiell TrueType(TM)-skrift som er veldig sjelden. I disse tilfellene kan du legge disse filene ved Matroska(TM)-filen. De vil ikke bare bli tilføyd filen, men innebygd i den. En avspiller kan deretter vise disse filene ('bilder'-tilfellet) eller bruke dem til å gjengi undertekstene ('TrueType(TM) skrifttyper'-tilfellet).
Her er et eksempel på hvordan du legger ved et bilde og en TrueType(TM)-skrift til utdatafilen:
$ mkvmerge -o utdata.mkv -A video.avi lyd.ogg \
--attachment-description "Jeg og bandet bak scenen i en liten sammenkomst" \
--attachment-mime-type image/jpeg \
--attach-file meg_og_bandet.jpg \
--attachment-description "Den virkelige sjeldne og utrolig pene skrifttypen" \
--attachment-mime-type application/octet-stream \
--attach-file skikkelig_kul_font.ttf
Hvis en Matroska(TM) som inneholder vedleggsfil brukes som en inndatafil, vil mkvmerge(1) kopiere vedleggene til den nye filen. Valget av hvilke vedlegg som kopieres og hvilke som ikke kopieres, kan endres med alternativene --attachments og --no-attachments.
KAPITLER¶
Matroska(TM) kapittel systemet er kraftigere enn det gamle kjente systemet som brukes av OGM- filer. De fullstendige spesifikasjonene finner du på Matroska(TM)s nettside[1].
mkvmerge(1) støtter to typer kapittelfiler som inndata. Det første formatet, kalt 'enkelt kapittelformat', er det samme formatet som OGM-verktøyene forventer. Det andre formatet er et XML basert kapittelformat som støtter alle Matroska(TM)s kapittelfunksjonalitet.
Bortsett fra dedikerte kapittelfiler kan mkvmerge(1) også lese kapitler fra andre filformater (e.g. MP4, Ogg, Blu-rays eller DVDer).
Enkelt kapittelformat¶
Dette formatet består av linjepar som starter med henholdsvis 'CHAPTERxx=' og 'CHAPTERxxNAME='. Den første inneholder starttidsstempelet mens den andre inneholder tittelen. Her er et eksempel:
CHAPTER01=00:00:00.000 CHAPTER01NAME=Intro CHAPTER02=00:02:30.000 CHAPTER02NAME=Baby forbereder seg på å rocke CHAPTER03=00:02:42.300 CHAPTER03NAME=Baby rocker huset
mkvmerge(1) vil forvandle hvert par eller linjer til en Matroska(TM) ChapterAtom. Det angir ikke noe ChapterTrackNumber, noe som betyr at alle kapitler gjelder for alle spor i filen.
Siden dette er en tekstfil, kan det hende at tegnsettkonvertering må gjøres. Se avsnittet om tekstfiler og tegnsett for en forklaring på hvordan mkvmerge(1) konverterer mellom tegnsett.
Det XML baserte kapittelformatet¶
Det XML baserte kapittelformatet ser slik ut som dette eksemplet:
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE Chapters SYSTEM "matroskachapters.dtd"> <Chapters>
<EditionEntry>
<ChapterAtom>
<ChapterTimeStart>00:00:30.000</ChapterTimeStart>
<ChapterTimeEnd>00:01:20.000</ChapterTimeEnd>
<ChapterDisplay>
<ChapterString>A short chapter</ChapterString>
<ChapterLanguage>eng</ChapterLanguage>
</ChapterDisplay>
<ChapterAtom>
<ChapterTimeStart>00:00:46.000</ChapterTimeStart>
<ChapterTimeEnd>00:01:10.000</ChapterTimeEnd>
<ChapterDisplay>
<ChapterString>A part of that short chapter</ChapterString>
<ChapterLanguage>eng</ChapterLanguage>
</ChapterDisplay>
</ChapterAtom>
</ChapterAtom>
</EditionEntry> </Chapters>
Med dette formatet er tre ting mulig som ikke er mulig med det enkle kapittelformatet:
mkvtoolnix-distribusjonen inneholder noen eksempelfiler i doc-underkatalog som kan brukes som grunnlag.
Nedenfor vises XML-taggene som støttes, datatypene deres og, der det er aktuelt, det gyldige området for verdiene:
Chapters (master)
EditionEntry (master)
EditionUID (unsigned integer, valid range: 1 <= value)
EditionFlagHidden (unsigned integer, valid range: 0 <= value <= 1)
EditionFlagDefault (unsigned integer, valid range: 0 <= value <= 1)
EditionFlagOrdered (unsigned integer, valid range: 0 <= value <= 1)
ChapterAtom (master)
ChapterAtom (master)
ChapterUID (unsigned integer, valid range: 1 <= value)
ChapterTimeStart (unsigned integer)
ChapterTimeEnd (unsigned integer)
ChapterFlagHidden (unsigned integer, valid range: 0 <= value <= 1)
ChapterFlagEnabled (unsigned integer, valid range: 0 <= value <= 1)
ChapterSegmentUID (binary, valid range: 1 <= length in bytes)
ChapterSegmentEditionUID (unsigned integer, valid range: 1 <= value)
ChapterPhysicalEquiv (unsigned integer)
ChapterTrack (master)
ChapterTrackNumber (unsigned integer, valid range: 1 <= value)
ChapterDisplay (master)
ChapterString (UTF-8 string)
ChapterLanguage (UTF-8 string)
ChapterCountry (UTF-8 string)
ChapterProcess (master)
ChapterProcessCodecID (unsigned integer)
ChapterProcessPrivate (binary)
ChapterProcessCommand (master)
ChapterProcessTime (unsigned integer)
ChapterProcessData (binary)
Lese kapitler fra Blu-rays¶
mkvmerge(1) kan lese kapitler fra ukrypterte Blu-rays. For det kan du bruke banen til en av MPLS-spillelistene med parameteren --chapters.
Eksempel: --chapters /srv/blurays/BigBuckBunny/BDMV/PLAYLIST/00001.mpls
Lese kapitler fra DVD-er¶
Når MKVToolNix er kompilert med libdvdread(TM) biblioteket, kan mkvmerge(1) lese kapitler fra DVD-er. For det kan du bruke banen til en av mappene eller filene på DVD-en med parameteren --chapters. Siden DVD-er kan inneholde mer enn én tittel og hver tittel har sitt eget sett med kapitler, kan du legge til et kolon og ønsket tittelnummer på slutten av filnavnargumentet. Tittelnummeret er som standard 1.
Eksempel: --chapters /srv/dvds/BigBuckBunny/VIDEO_TS:2
Generelle merknader¶
Når du splitter filer vil mkvmerge(1) også justere kapitlene riktig. Dette betyr at hver fil bare inneholder kapitteloppføringene som gjelder for den, og at tidsstemplene vil bli forskjøvet for å samsvare med de nye tidsstemplene for hver utdatafil.
mkvmerge(1) er i stand til å kopiere kapitler fra Matroska(TM) kildefiler med mindre dette er eksplisitt deaktivert med --no-chapters-alternativet. Kapitlene fra alle kilder (Matroska(TM) filer, Ogg-filer, MP4-filer, kapitteltekstfiler) blir vanligvis ikke slått sammen, men ender opp i separate ChapterEditions. Bare hvis kapitler leses fra flere Matroska(TM) eller XML filer som deler samme utgave UIDer, vil kapitler bli slått sammen til en enkelt ChapterEdition. Hvis en slik sammenslåing også er ønskelig i andre situasjoner, må brukeren trekke ut kapitlene fra alle kilder med mkvextract(1) først slå sammen XML filene manuelt og multiplekse dem etterpå.
TAGGER¶
Introduksjon¶
Matroska(TM)s taggsystem ligner på andre konteinere: et sett med KEY = VALUE-par. Men i Matroska(TM) kan disse taggene også nestes, og både KEY og VALUE er egne elementer. Eksempelfilen example-tags-2.xml viser hvordan du bruker dette systemet.
Omfanget til taggene¶
Matroska(TM) tagger gjelder ikke automatisk for hele filen. De kan, men de kan også gjelde for forskjellige deler av filen: til ett eller flere spor, til ett eller flere kapitler, eller til og med til en kombinasjon av begge. Matroska(TM) spesifikasjonen[5] gir flere detaljer om dette faktum.
Et viktig faktum er at tagger er knyttet til spor eller kapitler med Targets Matroska(TM) tagg-elementet, og at UID-ene som brukes til denne koblingen ikke er spor-ID-ene mkvmerge(1) bruker overalt. I stedet er tallene som brukes UID-ene som mkvmerge(1) beregner automatisk (hvis sporet er hentet fra et annet filformat enn Matroska(TM)) eller som kopieres fra kildefilen hvis sporets kildefil er en Matroska(TM) fil. Derfor er det vanskelig å vite hvilke UID-er som skal brukes i taggfilen før filen overleveres til mkvmerge(1).
mkvmerge(1) kjenner to alternativer som du kan legge til tagger til Matroska(TM) filer: --global-tags og --tags alternativene. Forskjellen er at det tidligere alternativet, --global-tags, vil gjøre taggene anvendelig for hele filen ved å fjerne noen av disse Targets-elementene nevnt ovenfor. Det siste alternativet, --tags, setter automatisk inn UID-en som mkvmerge(1) genererer for taggen som er angitt med TID-delen av --tags-alternativet.
Eksempel¶
La oss si at du vil legge til tagger i et videospor som leses fra en AVI. mkvmerge --identify fil.avi forteller deg at videosporets ID (ikke bland denne ID-en med UID!) er 0. Så du oppretter din tagg-fil, utelater alle Targets-elementer og kaller mkvmerge(1):
$ mkvmerge -o fil.mkv --tags 0:tagger.xml fil.avi
Taggfilformat¶
mkvmerge(1) støtter et XML basert taggfilformat. Formatet er veldig nært modellert etter Matroska(TM) spesifikasjonen[5]. Både binær- og kildedistribusjonene til MKVToolNix kommer med en eksempelfil kalt example-tags-2.xml som ganske enkelt viser alle kjente tagger og som kan brukes som grunnlag for virkelige taggfiler.
Det grunnleggende er:
Datatyper¶
Det nye Matroska(TM)-taggingssystemet kjenner bare to datatyper, en UTF-8-streng og en binær type. Den første brukes for taggens navn og <String>-elementet mens den binære typen brukes for <Binary>-elementet.
Siden binære data i seg selv ikke ville passe inn i en XML-fil støtter mkvmerge(1) to andre metoder for lagring av binære data. Hvis innholdet i en XML-tagg starter med '@', behandles følgende tekst som et filnavn. Den tilsvarende filens innhold kopieres til Matroska(TM) elementet.
Ellers forventes dataene å være Base64-kodet. Dette er en koding som forvandler binære data til et begrenset sett med ASCII-tegn og brukes for eksempel i e-postprogrammer. mkvextract(1) vil sende ut Base64-kodede data for binære elementer.
Det utdaterte taggingssystemet kjenner noen flere datatyper som finnes i de offisielle Matroska(TM) tagg-spesifikasjonene. Da mkvmerge(1) ikke støtter dette systemet lenger, er disse typene ikke beskrevet her.
Kjente tagger for XML-filformatet¶
Nedenfor vises XML-taggene som støttes, datatypene deres og, der det er aktuelt, det gyldige området for verdiene:
Tags (master)
Tag (master)
Targets (master)
TargetTypeValue (unsigned integer)
TargetType (UTF-8 string)
TrackUID (unsigned integer)
EditionUID (unsigned integer)
ChapterUID (unsigned integer)
AttachmentUID (unsigned integer)
Simple (master)
Simple (master)
Name (UTF-8 string)
TagLanguage (UTF-8 string)
DefaultLanguage (unsigned integer)
String (UTF-8 string)
Binary (binary)
SEGMENTINFORMASJON¶
Med en XML-fil med segmentinfo er det mulig å angi bestemte verdier i datahodefeltet "segment information" i en Matroska(TM)-fil. Alle disse verdiene kan ikke angis via andre kommandolinjealternativer.
Andre "segmentinformasjon"-datahodefelt kan angis via kommandolinjealternativer, men ikke via XML-filen. Dette omfatter f.eks. --title og --timestamp-scale-alternativene.
Det finnes andre elementer som verken kan angis via kommandolinjealternativer eller via XML-filene. Disse inkluderer følgende elementer: DateUTC (også kjent som "muxing date"), MuxingApp, WritingApp og Duration. De er alltid satt av mkvmerge(1) seg selv.
Nedenfor vises XML-taggene som støttes, datatypene deres og, der det er aktuelt, det gyldige området for verdiene:
Info (master)
SegmentUID (binary, valid range: length in bytes == 16)
SegmentFilename (UTF-8 string)
PreviousSegmentUID (binary, valid range: length in bytes == 16)
PreviousSegmentFilename (UTF-8 string)
NextSegmentUID (binary, valid range: length in bytes == 16)
NextSegmentFilename (UTF-8 string)
SegmentFamily (binary, valid range: length in bytes == 16)
ChapterTranslate (master)
ChapterTranslateEditionUID (unsigned integer)
ChapterTranslateCodec (unsigned integer)
ChapterTranslateID (binary)
MATROSKA(TM) FILOPPSETT¶
Matroska(TM) filoppsettet er ganske fleksibelt. mkvmerge(1) vil gjengi en fil på en forhåndsdefinert måte. Den resulterende filen ser slik ut:
[EBML-dataholde] [segment {metasøk #1} [segment informasjon] [sporinformasjon] {vedlegg} {kapitler} [klynge 1] {klynge 2} ... {klynge n} {signaler} {metasøk #2} {tagger}]
Elementene i krøllete parenteser er valgfrie og avhenger av innholdet og alternativene som brukes. Et par notater:
Kortest mulig Matroska(TM) filen vil se slik ut:
[EBML-datahode] [segment [segmentinformasjon] [sporinformasjon] [klynge 1]]
Dette kan være tilfelle for rene lydfiler.
EKSTERNE TIDSSTEMPELFILER¶
mkvmerge(1) lar brukeren velge tidsstempler for et bestemt spor selv. Dette kan brukes til å lage filer med video med variabel bildefrekvens eller inkludere hull i lyd. En ramme i dette tilfellet er enheten som mkvmerge(1) oppretter separat per Matroska(TM) blokk. For video er dette nøyaktig en ramme, for lyd er dette en pakke med den spesifikke lydtypen. For eksempel for AC-3 vil dette være en pakke som inneholder 1536 sampler.
Tidsstempelfiler som brukes når spor tilføyes hverandre, må bare angis for den første delen i en kjede med spor. Hvis du for eksempel føyer til to filer, v1.avi og v2.avi, og vil bruke tidsstempler, må kommandolinjen se omtrent slik ut:
$ mkvmerge ... --timestamps 0:mine_tidsstempler.txt v1.avi +v2.avi
Det er fire formater som gjenkjennes av mkvmerge(1). Den første linjen inneholder alltid versjonsnummeret. Tomme linjer, linjer som bare inneholder mellomrom og linjer som begynner med '#', ignoreres.
Tidsstempel filformat v1¶
Dette formatet starter med versjonslinjen. Den andre linjen angir standard antall bilder per sekund. Alle følgende linjer inneholder tre tall atskilt med komma: startrammen (0 er den første rammen), sluttrammen og antall rammer i dette området. FPS er et flyttall med prikken '.' som desimaltegn. Områdene kan inneholde hull som standard FPS brukes til. Et eksempel:
# timestamp format v1 assume 27.930 800,1000,25 1500,1700,30
Tidsstempel filformat v2¶
I dette formatet inneholder hver linje et tidsstempel for den tilsvarende rammen. Dette tidsstempelet må angis i millisekunds presisjon. Det kan være et flyttall, men det trenger ikke å være det. Du må gi minst like mange tidsstempellinjer som det er rammer i sporet. Tidsstemplene i denne filen må sorteres. Eksempel på 25 bilder per sekund:
# timestamp format v2 0 40 80
Tidsstempel filformat v3¶
I dette formatet inneholder hver linje en varighet i sekunder etterfulgt av et valgfritt antall bilder per sekund. Begge kan være flyttall. Hvis antall bilder per sekund ikke er til stede, brukes standard. For lyd bør du la kodeken beregne rammetidsstemplene selv. For det bør du bruke 0.0 som antall bilder per sekund. Du kan også opprette gap i strømmen ved å bruke nøkkelordet 'gap' etterfulgt av varigheten av gapet. Eksempel på en lydfil:
# timestamp format v3 assume 0.0 25.325 7.530,38.236 gap, 10.050 2.000,38.236
Tidsstempel filformat v4¶
Dette formatet er identisk med v2-formatet. Den eneste forskjellen er at tidsstemplene ikke trenger å sorteres. Dette formatet skal nesten aldri brukes.
AVSLUTNINGSKODER¶
mkvmerge(1) avsluttes med en av tre avslutningskoder:
MILJøVARIABLER¶
mkvmerge(1) bruker standardvariablene som bestemmer systemets lokalitet (for eksempel LANG og LC_*-familien). Ytterligere variabler:
MKVMERGE_DEBUG, MKVTOOLNIX_DEBUG og dens korte form MTX_DEBUG
MKVMERGE_ENGAGE, MKVTOOLNIX_ENGAGE og dens korte form MTX_ENGAGE
SE OGSå¶
mkvinfo(1), mkvextract(1), mkvpropedit(1), mkvtoolnix-gui(1)
WWW¶
Den nyeste versjonen finner du alltid på MKVToolNixs hjemmeside[6].
AUTHOR¶
Moritz Bunkus <moritz@bunkus.org>
NOTES¶
- 1.
- Matroska(TM) nettside
- 2.
- IANAs hjemmeside
- 3.
- mkvmerge-identification-output-schema-v20.json
- 4.
- RFC 7159
- 5.
- Matroska(TM) spesifikasjonen
- 6.
- MKVToolNixs hjemmeside
2024-10-19 | MKVToolNix 88.0 |