2008-09-27 14 views

Respuesta

0

Interesante.
El enlace que das apunta a una utilidad de línea de comandos.
Si realmente quiere hacerlo mediante programación, puede que le interese la versión DLL que encontré en Rarewares. No estoy seguro si Descripción API viene con él ... :-)

1

Esto es simple si conoce las herramientas adecuadas:

ffmpeg -i infile.m4a tmp.wav 
lame tmp.wav outfile.mp3 

Aquí una versión por lotes (lo siento Linux/Mac solamente):

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

Para 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 
} 
Cuestiones relacionadas