Как программно преобразовать файл M4A в файл MP3 или WMA?[закрыто]

StackOverflow https://stackoverflow.com/questions/144466

  •  02-07-2019
  •  | 
  •  

Вопрос

Привет,

Я пытаюсь найти бесплатную библиотеку .NET или исполняемый файл командной строки, который позволит мне конвертировать файлы M4A в файлы MP3 или WMA.Пожалуйста помоги :).

Это было полезно?

Решение

Нашел!

http://pieter.wiggleven.com/it/archives/3

Могут быть и другие решения, но это золото для того, что я искал.

P.S.я написал .NET DLL который занимается этим за кулисами.Это довольно ужасный код, но он выполняет свою работу.

Другие советы

Это просто, если вы знаете правильные инструменты:

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

Интересный.
Ссылка, которую вы даете, указывает на утилиту командной строки.
Если вы действительно хотите сделать это программно, вас может заинтересовать версия DLL, которую я нашел по адресу Редкие программы.Не уверен, что описание API идет вместе с ним...:-)

от Как конвертировать медиафайл в файл WMA

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
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top