Форум программистов, компьютерный форум CyberForum.ru

DirectShow не открывает файл на воспроизведение - C++

Восстановить пароль Регистрация
 
Igor-84
 Аватар для Igor-84
11 / 11 / 3
Регистрация: 04.03.2010
Сообщений: 88
05.01.2014, 01:00     DirectShow не открывает файл на воспроизведение #1
Здравствуйте! В программе graphedt набросал такую схему для воспроизведения mp3 файла:
DirectShow не открывает файл на воспроизведение
Всё работает отлично - файл воспроизводится. В дальнейшем хочу реализовать это программно.
Теперь пытаюсь воспроизвести mp3-файл, который в данный момент пополняется данными (при этом файл открыт как для записи, так и для чтения). Пытаюсь применить вышеуказанную схему, но в результате получаю ошибку:
Filter failed to load file.
Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.
Подскажите, пожалуйста, можно ли это исправить? Или какой другой source-фильтр использовать?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
raxp
10146 / 6533 / 475
Регистрация: 28.12.2010
Сообщений: 21,167
Записей в блоге: 1
05.01.2014, 01:33     DirectShow не открывает файл на воспроизведение #2
IFileSourceFilter может работать либо с готовым файлом, либо с url. У вас это файл видимо пишется и параллельно вы хотите воспроизводить?

Тогда вам нужно:
1- либо ловить данные этим же фильтром непосредственно с тырнета, далее сплиттер и разделять на два потока - один пишет в файл, второй на воспроизведение
2- либо, если ловите чем то своим (на тех же сокетах), то данные писать как обычно в файл, но формировать буфер на воспроизведение самому через DirectSound8.CreateSoundBuffer или же просто через waveOutOpen() ...пример реализации последнего в третьем выпуске журнала "ПРОграммист", с.33.
Igor-84
 Аватар для Igor-84
11 / 11 / 3
Регистрация: 04.03.2010
Сообщений: 88
06.01.2014, 03:24  [ТС]     DirectShow не открывает файл на воспроизведение #3
Цитата Сообщение от raxp Посмотреть сообщение
У вас это файл видимо пишется и параллельно вы хотите воспроизводить?
Абсолютно верно.
Цитата Сообщение от raxp Посмотреть сообщение
если ловите чем то своим (на тех же сокетах)
Да, именно так и загружаю данные.
Цитата Сообщение от raxp Посмотреть сообщение
формировать буфер на воспроизведение самому через DirectSound8.CreateSoundBuffer
Но, DirectSound не поддерживает сжатые форматы, а в моём случае нужно mp3 и aac, но пока хотя бы с mp3 реализовать бы.
Цитата Сообщение от raxp Посмотреть сообщение
waveOutOpen()
Если я правильно понял, то здесь все вращается вокруг wav (pcm), а у меня данные в mp3.
Есть ли еще какие-то решения?
raxp
10146 / 6533 / 475
Регистрация: 28.12.2010
Сообщений: 21,167
Записей в блоге: 1
06.01.2014, 11:00     DirectShow не открывает файл на воспроизведение #4
Но, DirectSound не поддерживает сжатые форматы, а в моём случае нужно mp3 и aac, но пока хотя бы с mp3 реализовать бы.
ой, не прибедняйтесь, раскодировать поток вам никто не мешает. Вы собственно это и делаете в конце, только начало у вас неверное.
Igor-84
 Аватар для Igor-84
11 / 11 / 3
Регистрация: 04.03.2010
Сообщений: 88
06.01.2014, 16:28  [ТС]     DirectShow не открывает файл на воспроизведение #5
Цитата Сообщение от raxp Посмотреть сообщение
только начало у вас неверное
raxp, подскажите, пожалуйста, как правильно нужно сделать и что использовать?
raxp
10146 / 6533 / 475
Регистрация: 28.12.2010
Сообщений: 21,167
Записей в блоге: 1
06.01.2014, 17:00     DirectShow не открывает файл на воспроизведение #6
Секундочку, а до этого все посты впустую?
Igor-84
 Аватар для Igor-84
11 / 11 / 3
Регистрация: 04.03.2010
Сообщений: 88
06.01.2014, 18:00  [ТС]     DirectShow не открывает файл на воспроизведение #7
Цитата Сообщение от raxp Посмотреть сообщение
а до этого все посты впустую?
Просто нужна четкая схема, которой пока не "нарисовалась".
raxp, вы говорите, что нужно раскодировать поток сжатых данных, но как это сделать, если к файлу доступа нет? Source-фильтр не может подключиться к файлу. Как же иначе передать данные mp3 в MPEG-I Stream Splitter и MP3 Decoder DMO?
raxp
10146 / 6533 / 475
Регистрация: 28.12.2010
Сообщений: 21,167
Записей в блоге: 1
06.01.2014, 18:08     DirectShow не открывает файл на воспроизведение #8
...ну, а разве выше я не указал, что IFileSourceFilter в качестве источника берет не только файл, но и url? В граф-эдите это прекрасно видно.
Igor-84
 Аватар для Igor-84
11 / 11 / 3
Регистрация: 04.03.2010
Сообщений: 88
07.01.2014, 00:49  [ТС]     DirectShow не открывает файл на воспроизведение #9
raxp, в окне "Which filters do you want to insert?" программы GraphEdit я не нашел этого фильтра "IFileSourceFilter".
raxp
10146 / 6533 / 475
Регистрация: 28.12.2010
Сообщений: 21,167
Записей в блоге: 1
07.01.2014, 05:22     DirectShow не открывает файл на воспроизведение #10
А по вашему, через что вы читаете файл, когда строите граф?

DirectShow не открывает файл на воспроизведение
DirectShow не открывает файл на воспроизведение
DirectShow не открывает файл на воспроизведение
Igor-84
 Аватар для Igor-84
11 / 11 / 3
Регистрация: 04.03.2010
Сообщений: 88
07.01.2014, 06:52  [ТС]     DirectShow не открывает файл на воспроизведение #11
raxp, подождите, но что это даёт? Заполняемый данными файл так и не открывается. В Monogram GraphStudio при попытке загрузить файл (согласно вашей инструкции) получаю ошибку:
"Cannot load specified file"
Цитата Сообщение от raxp Посмотреть сообщение
IFileSourceFilter в качестве источника берет не только файл, но и url
Да это мне и так известно, но он не может открыть "занятый" записью файл. Проблема в этом.
Цитата Сообщение от raxp Посмотреть сообщение
Вы собственно это и делаете в конце, только начало у вас неверное.
Да, именно начало нужно сделать - что сделать, чтобы source-фильтр смог открывать загружаемый данными файл?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.01.2014, 07:02     DirectShow не открывает файл на воспроизведение
Еще ссылки по теме:

C++ DirectShow: захват видео с веб-камеры, воспроизведение
не открывает файл через cmd C++
не открывает файл на чтение по строчно C++
C++ Builder DirectShow, как зациклить воспроизведение аудио?
C++ Ios::out не открывает файл

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

Или воспользуйтесь поиском по форуму:
raxp
10146 / 6533 / 475
Регистрация: 28.12.2010
Сообщений: 21,167
Записей в блоге: 1
07.01.2014, 07:02     DirectShow не открывает файл на воспроизведение #12
Вы извиняйте, но в самом начале вам указал что интерфейс IFileSourceFilter работает с готовым файлом, либо URL-ом и что необходимо изменить подход: либо самому декодировать, либо натравить не на файл, а на URL. Вы же тупо долдоните одно и то же и снова к файлу лезете.

source-фильтр смог открывать загружаемый данными файл?
если все же такое желание, несмотря на все вышесказанное, осталось, что-ж, пишите свой фильтр.
Yandex
Объявления
07.01.2014, 07:02     DirectShow не открывает файл на воспроизведение
Ответ Создать тему
Опции темы

Текущее время: 04:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru