Привет,Как преобразовать файл M4A в файл MP3 или WMA программно?
Я пытаюсь найти бесплатную библиотеку .NET или исполняемый файл из командной строки, который позволяет мне конвертировать файлы M4A в файлы MP3 или WMA. Пожалуйста помоги :).
Привет,Как преобразовать файл M4A в файл MP3 или WMA программно?
Я пытаюсь найти бесплатную библиотеку .NET или исполняемый файл из командной строки, который позволяет мне конвертировать файлы M4A в файлы MP3 или WMA. Пожалуйста помоги :).
Найденный!
http://pieter.wigleven.com/it/archives/3
Там могут быть и другие решения, но это золото за то, что я искал.
P.S. Я написал a .NET DLL, который обрабатывает это за кадром. Это довольно ужасный код, но он выполняет свою работу.
Интересно.
Ссылка, которую вы указываете на утилиту командной строки.
Если вы действительно хотите сделать это программно, вас может заинтересовать версия DLL, найденная мной по адресу Rarewares. Не уверен, что если описание API с ним приходит ... :-)
Это просто, если вы знаете правильные инструменты:
ffmpeg -i infile.m4a tmp.wav
lame tmp.wav outfile.mp3
Здесь пакетный вариант (только извините Linux/Mac):
#!/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
из How to convert media file to WMA file
string fileName = @"e:\Down\test.wmv";
DsConvert.ToWma(fileName, fileName + ".wma", DsConvert.WmaProfile.Stereo128);
Для 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
}