fredag 3 augusti 2012

Extrahera undertexter från en MKV kontainerfil

Om du vill inspektera undertexter som är inkluderade i en MKV fil så finns det bra verktyg för det.

Ladda ner MKVtoolnix som finns till OSX här! (Testat och fungerar i 10.8)

Lägg programfilen bland dina program och länka in verktygen till något lämpligt ställe i din path.
computer:/ kalle$ sudo ln -s /Applications/Mkvtoolnix.app/Contents/MacOS/mkv* /usr/local/bin/  

Ställ dig i samma katalog som MKV filen och använd verktyget mkvinfo för att granska filen.
 computer:/ kalle$ mkvinfo mkvfil.mkv   
 + EBML head  
 |+ EBML version: 1  
 |+ EBML read version: 1  
 |+ EBML maximum ID length: 4  
 |+ EBML maximum size length: 8  
 |+ Doc type: matroska  
 |+ Doc type version: 2  
 |+ Doc type read version: 2  
 + Segment, size 3716994008  
 |+ Seek head (subentries will be skipped)  
 |+ EbmlVoid (size: 4044)  
 |+ Segment information  
 | + Timecode scale: 1000000  
 | + Muxing application: libebml v1.2.3 + libmatroska v1.3.0  
 | + Writing application: mkvmerge v5.1.0 ('And so it goes') built on Nov 28 2012 23:58:28  
 | + Duration: 4053.259s (01:07:55.259)  
 | + Date: Mon Dec 24 15:15:15 2012 UTC  
 | + Segment UID: 0xa2 0x51 0x3e 0xa0 0xae 0x49 0x54 0x8b 0xa5 0x5f 0x72 0x19 0xa7 0xbf 0xe6 0xab  
 |+ Segment tracks  
 | + A track  
 | + Track number: 1 (track ID for mkvmerge & mkvextract: 0)  
 | + Track UID: 1  
 | + Track type: video  
 | + Lacing flag: 0  
 | + MinCache: 1  
 | + Codec ID: V_MPEG4/ISO/AVC  
 | + CodecPrivate, length 41 (h.264 profile: High @L4.1)  
 | + Default duration: 40.000ms (25.000 frames/fields per second for a video track)  
 | + Language: "SPRÅK"  
 | + Video track  
 |  + Pixel width: 1280  
 |  + Pixel height: 688  
 |  + Display width: 1280  
 |  + Display height: 688  
 | + Content encodings  
 |  + Content encoding  
 |  + Content compression  
 |   + Algorithm: 3 (header removal)  
 |   + Settings: length 1, data: 0x00  
 | + A track  
 | + Track number: 2 (track ID for mkvmerge & mkvextract: 1)  
 | + Track UID: 1019151009  
 | + Track type: audio  
 | + Codec ID: A_DTS  
 | + Default duration: 10.667ms (93.750 frames/fields per second for a video track)  
 | + Language: "SPRÅK"  
 | + Audio track  
 |  + Sampling frequency: 48000  
 |  + Channels: 6  
 | + Content encodings  
 |  + Content encoding  
 |  + Content compression  
 |   + Algorithm: 3 (header removal)  
 |   + Settings: length 4, data: 0x7f 0xfe 0x80 0x01  
 | + A track  
 | + Track number: 3 (track ID for mkvmerge & mkvextract: 2)  <- Track ID
 | + Track UID: 2795065227  
 | + Track type: subtitles  
 | + Lacing flag: 0  
 | + Codec ID: S_TEXT/SSA  
 | + CodecPrivate, length 700  
 | + Language: und  
 |+ EbmlVoid (size: 1137)  
 |+ Cluster  
Leta reda på Track type : subtitle och kolla vilket Track ID som det spåret har (innanför parentes)

Kör mkvextract tracks och peka ut Track ID i sista argumentet samt filnamn på textfilen som kommer att skapas. (Track ID 2 och subtitles.txt i det här fallet)
 computer:/ kalle$ mkvextract tracks mkvfil.mkv 2:subtitles.txt  

Nu kan du inspektera undertexterna i en editor.

onsdag 1 augusti 2012

Från wma till mp3

Sedan en lång tid har jag haft ett stort antal wma-musik filer liggandes utspritt på datorn då jag rippade skivor i Windows Media Player i samband med Windows ME eran.

Då dom inte spelar i Spotify så fick jag i uppdrag att hitta alla och konvertera dom till mp3.

Försökte först på mig GUI metoden i VLC men fick inte till något effektivt sätt att göra all konvertering så jag tänkte att ett skript är den bästa lösningen.

Så här gjorde jag skriptet:
 #!/bin/bash  
 vlc=/Applications/VLC.app/Contents/MacOS/VLC  
 $vlc -I dummy -vvv "$1" --intf=rc --sout "#transcode{acodec=mp3,ab=192}:standard{mux=raw,dst=\"$1.mp3\",access=file}" vlc://quit  
 newfilename=$(echo $1 | sed s/.wma/.mp3/)  
 mv "$1.mp3" "$newfilename"  
 #rm -rf "$1"  
Skriptet skapar en ny mp3 fil(bitrate 192) bredvid wma filen och döper den till musikfil.wma.mp3
Sedan döper om filen för att ta bort ".wma" i filnamnet
Tar man bort sista # så tar man även bort ursprungs wma file..

Jag sparade skriptet som wma2mp3 i /usr/local/bin/ och körde det tillsammans med find:
 computer:/ kalle$ find / -type f -name "*.wma" -exec /usr/local/bin/wma2mp3 {} \;  

Med lite modifikation kan man konvertera från mp3 till ogg om man är ute efter det.