Windows Media Audio
Das Dateiformat Windows Media Audio / WMA ist ein komprimiertes, verlustbehaftetes Audioformat, beim Erzeugen entstehen also Audio-Artefakte. Windows Media Audio ist gleichzeitig ein proprietärer Audiocodec der Firma Microsoft und Teil der Windows Media-Plattform.
WMA wird zur Komprimierung von digitalen Audioinhalten verwendet und in der Regel mit verlustbehafteter Datenkompression eingesetzt, vergleichbar dem MP3-Verfahren. Der Audiocodec unterstützt bis zu 24 bit/96 KHz bei einer variablen Bitrate von bis zu 768 kb/s und Surround-Ton mit bis zu 7.1 Kanälen. Daneben gibt es eine Version, die explizit auf Quellmaterial mit Stimmen ausgelegt ist (Windows Media Audio Voice / ACELP), sowie den verlustfreien Codec Windows Media Audio Lossless.
Das standardmässige verlustbehaftete Kompressionsverfahren von WMA basiert auf derselben Grundlage wie die MP3-Kompression: Nach einer Umwandlung in eine Frequenz-Amplituden-Domäne werden Maskierungseffekte (nahe Frequenzen, die nicht unterscheidbar sind) oder nicht hörbare Töne (Hörgrenze) gelöscht. Dadurch wird Speicherplatz gespart.
WMA-kodierte Audio-Streams sind in der Regel in eine ASF-Containerdatei eingebettet. Im Falle einer reinen Audiodatei tragen die Dateinamen zumeist die Endung ".wma". Der Content-Type ist "audio/x-ms-wma".
WMA unterstützt ferner die Einbindung des DRM-Kopierschutzes, weshalb das Format in vielen Musik-Online-Shops anzutreffen ist.
Neben dem Windows Media Player und anderen auf Directx-basierenden Audiospielern beherrschen auch Mplayer und einige eigenständige Hardware-Abspielgeräte die Dekodierung von WMA.
Umwandlung
WMA-Datei in MP3-Datei umwandeln: möglicherweise mit einem Windows-Decoder unter Wine, ansonsten Zwischenschritt über WAV-Datei.
Umwandlung möglicherweise auch mit Mencoder bzw. mit Mplayer (der WMA-Dateien abspielen kann).
WMA-Datei in WAV-Datei umwandeln.
$ mplayer file.wma -ao pcm -aofile file.wav
Gestreamte WMA-Datei unter dem Namen "file.wma" speichern.
$ mplayer -dumpstream -dumpfile "file.wma" \ "mms://rxs-lvl3-wa02.rbn.com/farm/*/ultrastar/ultrastar/secure/demand/ \ rollingstones/public/audio/Album/02LetMeDownSlow.wma?rbnkey=2005090215536558a4d4abf8e108ed78e8cd2a3621fd"
Skripte
Ein Skript
# A little Perl program "convert.pl" to: # 1) Read all WMA files in the current directory and with each one: # 2) Use MPlayer to make a converted copy to WAV file # 3) Use LAME to convert the WAV file to MP3 # 4) Remove the WAV file # 5) After completing you will end up with an MP3 copy of each WMA file. The program will leave all # original file names as is and use the original file names to make the MP3 file. # # Run program: "perl convert.pl" #! /usr/bin/perl ### WMA to MP3 converter $dir=`pwd`; ## read ech file, if WMA, make a "copy" to WAV then to MP3 then delete WMA chop($dir); opendir(checkdir,"$dir"); while ($file=readdir(checkdir)) { $orig_file=$file; if ($orig_file !~ /\.wma$/i) {next}; print "Checking file: $orig_file\n"; $new_wav_file=$orig_file;$new_wav_file=~s/\.wma/\.wav/; $new_mp3_file=$orig_file;$new_mp3_file=~s/\.wma/\.mp3/; $convert_to_wav="mplayer \"./$orig_file\" -ao pcm -aofile \"./$new_wav_file\""; $convert_to_mp3="lame -h \"./$new_wav_file\" \"./$new_mp3_file\""; $remove_wav="rm -rf \"./$new_wav_file\""; print "EXEC 1: $convert_to_wav\n"; $cmd=`$convert_to_wav`; print "EXEC 2: $convert_to_mp3\n"; $cmd=`$convert_to_mp3`; print "REMOVE WAV: $remove_wav\n"; $cmd=`$remove_wav`; print "\n\n"; } print "Done.";
Noch ein Skript
#!/usr/bin/perl -w use strict; foreach my $file (@ARGV) { next if ($file !~ /\.wma$/i); my $base = $file; $base =~ s/\.wma$//i; system "mplayer \"$file\" -ao pcm -aofile \"$base.wav\""; system "lame -h \"$base.wav\" \"$base.mp3\""; unlink("$base.wav"); print "$base.wma converted to mp3.\n"; }
Another script:
for i in *.wma do mplayer -ao pcm -aofile "${i%.wma}.wav" "$i" oggenc "${i%.wma}.wav" rm "${i%.wma}.wav" done