This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
mkv [2020-11-23 18:50:23] mi |
mkv [2024-01-27 11:07:45] (current) mi [Extract subtitles] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | =mkv info | + | =mkv |
+ | |||
+ | ==info | ||
mkvmerge --identify "$mkv" | mkvmerge --identify "$mkv" | ||
Line 24: | Line 26: | ||
</pre></blockquote></HTML> | </pre></blockquote></HTML> | ||
+ | ==Extract subtitles | ||
- | mkvinfo "$mkv" | perl -00 -ne '@tracks=split /^. . . track$/m; foreach (@tracks) {next unless /subtitles/; ($id,$codec,$lang) = /number: .*?: (\d+).*?Codec ID: (\S+)(?:.*?Language: (\w+))?/s; $codec=~s!/!-!g; print "mkvextract tracks \"\$mkv\" $id:$id.$lang.$codec\n";}' | + | mkvinfo --summary "$f" | head -10 \ |
+ | | perl -nle 'if ( /^Track (\d+): subtitles, codec ID: ([A-Z_]+).*extract track ID: (\d+)(?:, language: (\S+))?/ ) { | ||
+ | warn "$_=$1: type=$2, xtrack=$3, lang=$4\n"; print "$2 $3 $4" }' \ | ||
+ | | while read type t lang; do d=$(dirname "$f"); b=$(basename "$f"); | ||
+ | echo "#Run this:# mkvextract tracks \"\$f\" $t:'$d/$b-$lang-$t.$type'"; done | ||
<HTML><blockquote><pre> | <HTML><blockquote><pre> | ||
- | mkvextract tracks "$mkv" 2:2..S_TEXT-UTF8 | + | Track 3: subtitles, codec ID: S_TEXT/UTF8, mkvmerge/mkvextract track ID: 2, language: por = 3: type=S_TEXT, xtrack=2, lang=por |
- | mkvextract tracks "$mkv" 3:3.ara.S_TEXT-UTF8 | + | Track 4: subtitles, codec ID: S_TEXT/UTF8, mkvmerge/mkvextract track ID: 3, language: eng = 4: type=S_TEXT, xtrack=3, lang=eng |
- | mkvextract tracks "$mkv" 4:4.bul.S_TEXT-UTF8 | + | ... |
- | mkvextract tracks "$mkv" 5:5.dan.S_TEXT-UTF8 | + | # mkvextract tracks "$f" 2:'./2-Death.to.2020.2020.720p.WEBRip.800MB.x264-GalaxyRG.mkv-por.S_TEXT' |
- | mkvextract tracks "$mkv" 6:6.dut.S_TEXT-UTF8 | + | # mkvextract tracks "$f" 3:'./3-Death.to.2020.2020.720p.WEBRip.800MB.x264-GalaxyRG.mkv-eng.S_TEXT' |
- | mkvextract tracks "$mkv" 7:7.fin.S_TEXT-UTF8 | + | ... |
- | mkvextract tracks "$mkv" 8:8.fre.S_TEXT-UTF8 | + | |
- | mkvextract tracks "$mkv" 9:9.ger.S_TEXT-UTF8 | + | |
- | mkvextract tracks "$mkv" 10:10.hun.S_TEXT-UTF8 | + | |
- | mkvextract tracks "$mkv" 11:11.pol.S_TEXT-UTF8 | + | |
- | mkvextract tracks "$mkv" 12:12.por.S_TEXT-UTF8 | + | |
- | mkvextract tracks "$mkv" 13:13.rum.S_TEXT-UTF8 | + | |
- | mkvextract tracks "$mkv" 14:14.rus.S_TEXT-UTF8 | + | |
- | mkvextract tracks "$mkv" 15:15.spa.S_TEXT-UTF8 | + | |
- | mkvextract tracks "$mkv" 16:16.swe.S_TEXT-UTF8 | + | |
</pre></blockquote></HTML> | </pre></blockquote></HTML> | ||
- | + | ==Chapters | |
- | mkvextract tracks "$mkv" 2:2..S_TEXT-UTF8 | + | |
- | + | ||
- | <HTML><blockquote><pre> | + | |
- | Extracting track 2 with the CodecID 'S_TEXT/UTF8' to the file '2..S_TEXT-UTF8'. Container format: SRT text subtitles | + | |
- | Progress: 100% | + | |
- | </pre></blockquote></HTML> | + | |
- | + | ||
- | =Chapters | + | |
* Extract as plain text or xml: | * Extract as plain text or xml: | ||
Line 63: | Line 53: | ||
mkvpropedit $mkvfile --chapters $mkvile-chapters.txt | mkvpropedit $mkvfile --chapters $mkvile-chapters.txt | ||
+ | |||
+ | * Create chapters file from 2 columns tab-delimited list of timecode and name : | ||
+ | <code>perl -ne 'BEGIN{$fps=24}; $c=sprintf("CHAPTER%02d", $n++); | ||
+ | ($tc, $name)=split(/\t/); | ||
+ | $tc =~ s!:(\d\d)$!sprintf(".%03d",$1*1000/$fps)!e; | ||
+ | print "$c=$tc\n", | ||
+ | "${c}NAME=$name"' $My_ChaptersList_File | ||
+ | </code> | ||