Wie konvertiere ich eine M4A-Datei in einem MP3- oder WMA-Datei programmatisch? [geschlossen]
Frage
Grüße,
Ich versuche, entweder eine freie .NET-Bibliothek oder eine Befehlszeile ausführbare Datei zu finden, die ich M4A-Dateien entweder MP3 oder WMA-Dateien konvertieren kann. Bitte helfen:)
.Lösung
Gefunden!
http://pieter.wigleven.com/it/archives/3
Es können auch andere Lösungen, aber das ist Gold für das, was ich suchte.
P. S. Ich habe einer .NET-DLL , die diese behind- Griffe die Szenen. Es ist ziemlich schrecklich Code, aber es bekommt den Job zu erledigen.
Andere Tipps
Dies ist einfach, wenn man die richtigen Werkzeuge kennen:
ffmpeg -i infile.m4a tmp.wav
lame tmp.wav outfile.mp3
Hier ist eine Batch-Version (sorry Linux / Mac only):
#!/bin/bash
n=0
maxjobs=3
for i in *.m4a ; do
ffmpeg -i "$i" "$TMP/${i%m4a}wav"
(lame "$TMP/${i%m4a}wav" "${i%m4a}mp3" ; rm "$TMP/${i%m4a}wav") &
# limit jobs
if (( $(($((++n)) % $maxjobs)) == 0 )) ; then
wait
fi
done
Interessant.
Der Link, den Sie geben Punkte zu einem Kommandozeilenprogramm.
Wenn Sie wirklich wollen, dass programmatisch, könnten Sie durch die DLL-Version interessiert sein, die ich unter Rarewares . Nicht sicher, ob API-Beschreibung kommt mit ...: -)
Wie Mediendatei zu WMA-Datei konvertieren
string fileName = @"e:\Down\test.wmv";
DsConvert.ToWma(fileName, fileName + ".wma", DsConvert.WmaProfile.Stereo128);
Für UWP
public class ConvertToMp3Manager
{
public PrepareTranscodeResult PrepareTranscode = null;
public MediaTranscoder TransCoder = null;
public StorageFile SourceAudio { get; set; }
public StorageFile DestinationAudio { get; set; }
public AudioFormat AudioFormat { get; set; }
public AudioEncodingQuality AudioQuality { get; set; }
private MediaEncodingProfile profile = null;
public ConvertToMp3Manager(StorageFile sourceAudio, StorageFile destinationAudio, AudioFormat AudioType = AudioFormat.MP3, AudioEncodingQuality audioEncodingQuality = AudioEncodingQuality.High)
{
if (sourceAudio == null || destinationAudio == null)
throw new ArgumentNullException("sourceAudio and destinationAudio cannot be null");
switch (AudioType)
{
case AudioFormat.AAC:
case AudioFormat.M4A:
profile = MediaEncodingProfile.CreateM4a(audioEncodingQuality);
break;
case AudioFormat.MP3:
profile = MediaEncodingProfile.CreateMp3(audioEncodingQuality);
break;
case AudioFormat.WMA:
profile = MediaEncodingProfile.CreateWma(audioEncodingQuality);
break;
}
this.SourceAudio = sourceAudio;
this.DestinationAudio = destinationAudio;
this.AudioFormat = AudioType;
this.AudioQuality = audioEncodingQuality;
this.TransCoder = new MediaTranscoder();
}
/// <summary>
/// Return true if audio can be transcoded
/// </summary>
/// <returns></returns>
public async Task<bool> ConvertAudioAsync()
{
PrepareTranscode = await this.TransCoder.PrepareFileTranscodeAsync(this.SourceAudio, this.DestinationAudio, profile);
if (PrepareTranscode.CanTranscode)
{
var transcodeOp = PrepareTranscode.TranscodeAsync();
return true;
}
else
return false;
}
public static async Task<bool> ConvertAudioAsync(StorageFile sourceAudio, StorageFile destinationAudio, AudioFormat AudioType = AudioFormat.MP3, AudioEncodingQuality audioEncodingQuality = AudioEncodingQuality.High)
{
ConvertToMp3Manager convertToMp3Manager = new ConvertToMp3Manager(sourceAudio, destinationAudio, AudioType, audioEncodingQuality);
var success = await convertToMp3Manager.ConvertAudioAsync();
return success;
}
}
public enum AudioFormat
{
MP3,
AAC,
M4A,
WMA
}