Извлечь файл wav из видео файла

Я разрабатываю приложение, в котором мне нужно извлечь звук из видео. Аудио нужно извлекать в формате .wav, но у меня нет проблем с форматом видео. Подойдет любой формат, если я могу извлечь звук в файл wav.

В настоящее время я использую COM-элемент управления проигрывателем Windows Media в форме Windows для воспроизведения видео, но подойдет и любой другой встроенный проигрыватель.

Есть предложения, как это сделать? Спасибо


person Nikos Steiakakis    schedule 18.06.2009    source источник


Ответы (3)


Вот ссылку на извлечение звука с помощью GraphEdit, GraphEdit - это интерфейсный интерфейс для DirectShow API, чтобы все, что он мог делать, можно было делать с API.
Вы можете использовать DirectShow.NET, которая является оболочкой DirectShow API для управляемого мира.

person Shay Erlichmen    schedule 18.06.2009
comment
В этом случае следует ли предоставлять пользователям библиотеки DirectX также в установщике? - person Nikos Steiakakis; 19.06.2009
comment
DirectShow встроен в XP и выше. - person Shay Erlichmen; 19.06.2009

Наверное, проще всего использовать ffmpeg для таких вещей ...

person Chris    schedule 18.06.2009
comment
Спасибо! Я думал о чем-то другом в форме .dll, но исполняемый файл сработает, если я не найду ничего более подходящего. - person Nikos Steiakakis; 19.06.2009
comment
Нет ничего постыдного в том, чтобы раскошелиться на exe! ;) Да, я знаю, откуда вы. Зависит от того, насколько профессионально вы этого хотите. - person Chris; 19.06.2009

Если вы хотите сделать это с помощью C #, ознакомьтесь с библиотекой NAudio. Он может анализировать аудиоформат (например, FFMpeg), а также предоставлять аудиопоток. Вот один пример.

Фрагмент из образца:

using NAudio.Wave;
using System.IO;

...

// contentAsByteArray consists of video bytes
MemoryStream contentAsMemoryStream = new MemoryStream(contentAsByteArray);

using (WaveStream pcmStream =
    WaveFormatConversionStream.CreatePcmStream(
        new StreamMediaFoundationReader(contentAsMemoryStream)))
{
    WaveStream blockAlignReductionStream = new BlockAlignReductionStream(pcmStream);

    // Do something with the wave stream
}
person Tomi Paananen    schedule 30.03.2018
comment
Хотя эта ссылка может дать ответ на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если ссылка на страницу изменится. - Из отзыва - person Mark Rotteveel; 30.03.2018
comment
@MarkRotteveel Вы абсолютно правы. Я постараюсь сделать то, что вы посоветовали, в будущем. Здесь ответ будет довольно длинным, учитывая довольно широкую тему, и, честно говоря, я не знаю, с чего начать. Библиотека NAudio необходима для моего решения. - person Tomi Paananen; 31.03.2018
comment
Добавлен фрагмент - person Tomi Paananen; 31.03.2018
comment
Привет спасибо! Я задал этот вопрос 9 лет назад и, как мне кажется, использовал решение, представленное в принятом ответе. Ваше решение тоже кажется неплохим, к сожалению, я больше не могу его тестировать. :) - person Nikos Steiakakis; 31.03.2018
comment
@NikosSteiakakis Я должен был решить эту проблему на прошлой неделе, и вот как я нашел ваш вопрос. Поскольку тема по-прежнему актуальна и не имеет удовлетворительного ответа (для моего варианта использования), я решил предоставить свой :) - person Tomi Paananen; 31.03.2018