2010-06-22 3 views
1

Кто-нибудь знает простой способ преобразования файла mp4 в файл ogg?Преобразование MP4 в Ogg с C#

Имейте это в виду, но у меня мало информации об этом, и все, что я могу найти, это программы, а не примеры или библиотеки.

Заранее спасибо

ответ

6

Я бы рекомендовал диспетчерское это FFMPEG - http://www.ffmpeg.org/ - используя Process и командные аргументы строки. Вы можете перенаправить ввод-вывод, если вам нужно (например, протоколирование). Просто сделайте что-нибудь вроде process.WaitForExit() после того, как вы его запустили. Вы можете сделать это на фоновом потоке (BackgroundWorker, ThreadPool и т. Д.), Если вам не нужно блокировать пользовательский интерфейс.

1
static void Mp4ToOgg(string fileName) 
{ 
    DsReader dr = new DsReader(fileName); 
    if (dr.HasAudio) 
    { 
     string waveFile = fileName + ".wav"; 
     WaveWriter ww = new WaveWriter(File.Create(waveFile), 
      AudioCompressionManager.FormatBytes(dr.ReadFormat())); 
     ww.WriteData(dr.ReadData()); 
     ww.Close(); 
     dr.Close(); 
     try 
     { 
      Sox.Convert(@"sox.exe", waveFile, waveFile + ".ogg", SoxAudioFileType.Ogg); 
     } 
     catch (SoxException ex) 
     { 
      throw; 
     } 

    } 
} 

из How to converts a mp4 file to an ogg file

4

Расширение ответ Чаду я использовал NReco.VideoConverter which is a helpful wrapper for FFMPEG. Мой код для преобразования MP4 в OGG выглядит следующим образом.

1. Сохраните файл во временном файле в локальном хранилище.

var path = Path.GetTempPath() + name; 
using (var file = File.Create(path)) 
{ 
stream.Seek(0, SeekOrigin.Begin); 
await stream.CopyToAsync(file); 
file.Close(); 
return path; 
} 

2.Но использовать видеоконвертер для конвертирования файла, просто!

var output = new MemoryStream(); 
var ffMpeg = new FFMpegConverter(); 
ffMpeg.ConvertMedia(filePath, output, Format.ogg); 
output.Seek(0, SeekOrigin.Begin); 
return output; 
Смежные вопросы