Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.74/23: Рейтинг темы: голосов - 23, средняя оценка - 4.74
DimanRu
683 / 676 / 167
Регистрация: 15.06.2011
Сообщений: 1,701
1

Конвертер аудио-файлов (*.OGG)

09.06.2012, 17:58. Просмотров 4284. Ответов 14
Метки нет (Все метки)

Здравствуйте! Понадобился простенький конвертер. MP3 -> OGG. На форуме примеров не нашел, причем не только с моими форматами, а с любыми(поиск продолжаю). В поисковике наткнулся на библеотеку Alvas.Audio - в
описании
способный добавлять эффекты и конвертировать аудио файлы в популярные форматы WAV, MP2, MP3, VOX, WMA, RAW, OGG, AIFF, AU и др.
сказано, что с форматом OGG работать может, решил попробовать. Скачал, нашел на youtube'e видео, где показанно как сделать конвертер WAV -> MP3 с помощью данной библеотеки. Сделал все как там показанно, но ошибка: "It is not succeeded to format conversion". Перепроверял, все правильно, но не работает.

Вот такой код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
FileStream oFile1 = File.OpenRead("e:\\File.wav");
WaveReader oWaveReader1 = new WaveReader(oFile1);
IntPtr originalAudioFormat = oWaveReader1.ReadFormat();
byte[] waveReaderData = oWaveReader1.ReadData();
oWaveReader1.Close();
 
IntPtr mp3Format = AudioCompressionManager.GetCompatibleFormat(originalAudioFormat, AudioCompressionManager.MpegLayer3FormatTag); //Тут ошибка
 
byte[] data = AudioCompressionManager.Convert(originalAudioFormat, mp3Format, waveReaderData, false);
 
BinaryWriter FileWrite = new BinaryWriter(File.Create("e:\\File_Convert.mp3"));
 
FileWrite.Write(data, 0, data.Length);
FileWrite.Close();
Видео:

P.S. DLL-ку прилагаю. Если знаете другие способы конвертировать в OGG - напишите пожалуйста.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2012, 17:58
Ответы с готовыми решениями:

Контроль прослушиваемых аудио файлов
Всем доброго времени суток. Меня интересует такая задача: необходимо написать...

Как воспроизвести ogg
Для моей игры необходима музыка в ogg формате, так как wav просто невероятный...

Воспроизведение OGG через OpenTK (OpenTK.OpenAL) из ресурсов
Добрый вечер всем! Собственно, мой первый пост :) Имеется проблема с...

Конвертер на C#
Всем добра! Возник такой вопрос.Возможно ли сделать конвертер на С#? Например...

Конвертер
Добрый день!!! Возникла необходимость перенести данные с одной справочно...

14
raxp
10186 / 6569 / 492
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
09.06.2012, 18:23 2
Код
ffmpeg -i 1.mp3 1.ogg
1
DimanRu
683 / 676 / 167
Регистрация: 15.06.2011
Сообщений: 1,701
09.06.2012, 18:29  [ТС] 3
Это инструкция командной строки?
0
raxp
10186 / 6569 / 492
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
09.06.2012, 19:35 4
......да.
1
DimanRu
683 / 676 / 167
Регистрация: 15.06.2011
Сообщений: 1,701
09.06.2012, 19:39  [ТС] 5
Ошибка
"ffmpeg" не является внутренней или внешней командой, исполняемой программой или пакетным файлом
. Я бы все же хотел сделать конвертирование по средствам C#. Есть ли аналоги Alvas.Audio, хоят я не понимаю, почему мой код не работает...
0
raxp
10186 / 6569 / 492
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
09.06.2012, 20:30 6
С# не имеет нативных средств для такой конвертации, только через библиотеки. Технология DirectShow имеет, через кодеки . FFMPEG (все в одном) тоже хорошо работает.

Ошибка
...а то, сам FFMPEG должен лежать по пути, указанному в командной строке.

FFMPEG, знакомтесь http://ffmpeg.org
1
DimanRu
683 / 676 / 167
Регистрация: 15.06.2011
Сообщений: 1,701
09.06.2012, 20:37  [ТС] 7
Не могли бы вы поподробнее рассказать про DirectShow?
0
raxp
10186 / 6569 / 492
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
09.06.2012, 22:09 8
...прям в теме? Книжки не хватит.

http://directshow.wonderu.com
http://directshow.wonderu.com/статьи
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
1
DimanRu
683 / 676 / 167
Регистрация: 15.06.2011
Сообщений: 1,701
09.06.2012, 22:32  [ТС] 9
Почитал, не понял)) Почитал ещё про FFMPEG - скачал EXE-шник, получилось конвертировать. Теперь думаю, как бы все это дело скрыть под обложкой моей программы. Process.Start не помогает. DLL - ку FFMPEG я не нашел(((

P.S. Посидел, получилось почти скрыть. Единственное - вылезает консоль, но это ладно. Осталось организовать копирование к проге и от неё((( Туплю)) Нужно просто путь полный указать))))

Спасибо за помощь! Последний вопрос - можно ли зашить конвертер и обложку мою в один exe ? И если "да" - то как?
0
raxp
10186 / 6569 / 492
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
09.06.2012, 22:51 10
...да, можно ...достаточно зашить в ресурсы, далее получить указатель на ресурс, далее CreateProcess(), ZwUnmapViewOfSection(), WriteProcessMemory(), VirtualProtectEx() и освободить ресурс.

p.s.: однако авири такое очень недолюбливают, имхо для массового потребителя лучше положить в каталоге с проектом FFMPEG ...тем паче он совершенствуется, видеоизменяется.
1
DimanRu
683 / 676 / 167
Регистрация: 15.06.2011
Сообщений: 1,701
09.06.2012, 23:15  [ТС] 11
Спасибо! Учту!

Добавлено через 23 минуты
Хм... Написал программу. Вроде все должно работать. Но если выбрать даже 1 файл - консоль выскакивает на секунду и гаснет. Ничего не конвертируется!

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
using System;
using System.Windows.Forms;
using System.Diagnostics;
using System.IO;
 
namespace Converter
{
    public partial class Form1 : Form
    {
        string pathTo = "С:\\Converted\\";
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e) //Конвертируем
        {
            for (int i = 0; i < listBox1.Items.Count; i++ )
            {
                Process.Start("ffmpeg.exe", string.Format(" -i {0} {1}", listBox1.Items[i], listBox2.Items[i])).WaitForExit();
            }
 
            MessageBox.Show("Конвертирование завершено!");
        }
 
        private void button2_Click(object sender, EventArgs e) //Открываем файлы
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                foreach (string str in openFileDialog1.FileNames) //Заполняем 1ый listBox исходными путями
                    listBox1.Items.Add(str);
 
                foreach (string str in listBox1.Items) //Заполняем 2ой listBox финальными путями
                    listBox2.Items.Add(pathTo + Path.GetFileNameWithoutExtension(str) + ".ogg");
            }
        }
    }
}
0
raxp
10186 / 6569 / 492
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
10.06.2012, 07:12 12
...проверяйте пути.
0
DimanRu
683 / 676 / 167
Регистрация: 15.06.2011
Сообщений: 1,701
10.06.2012, 12:30  [ТС] 13
Проверил. Пути то правильные. Только вот... что EXE-File что BAT-File работают только с короткими путями!
Например:
1) -i 1.mp3 1.ogg --- Работает
2) -i C:\1.mp3 d:\1.ogg --- Работает
3) -i 1.mp3 d:\Program Files\1.ogg --- Не работает
4) -i C:\Converted\1.mp3 d:\1.ogg --- Не работает
0
raxp
10186 / 6569 / 492
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
10.06.2012, 16:43 14
3) -i 1.mp3 d:\Program Files\1.ogg --- Не работает
4) -i C:\Converted\1.mp3 d:\1.ogg --- Не работает
а вас ничего не смущает?
0
DimanRu
683 / 676 / 167
Регистрация: 15.06.2011
Сообщений: 1,701
10.06.2012, 16:52  [ТС] 15
Цитата Сообщение от raxp Посмотреть сообщение
а вас ничего не смущает?
Да нет... а что, что-то нетак?
0
10.06.2012, 16:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2012, 16:52

Конвертер
using System; using System.Collections.Generic; using System.ComponentModel;...

C# и CorelDRAW - конвертер
Доброго времени суток уважаемые гуру. Задача в следующем. Написать консольное...

создать конвертер
создать конвертер c .mp3 в .wav и обратно. в С# пожалуйста


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru