Windows Media Audio

Aus Mikiwiki
Zur Navigation springen Zur Suche springen

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

# 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.";	

Another script.

#!/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

Weblinks

Vorlage:dewi