Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.144.36.141] |
|
Сообщ.
#1
,
|
|
|
Здравствуйте! Есть код, который скачивает аудио-файл (Shoutcast радиостанции в том числе). Теперь необходимо в нужный момент запустить воспроизведение скачиваемого в данный момент файла.
Для воспроизведения файлов mp3 и aac советуют использовать DirectShow. Написал небольшой код из msdn: HRESULT hr = CoInitialize(NULL); if (FAILED(hr)) { // } IGraphBuilder *pGraph; hr = CoCreateInstance(CLSID_FilterGraph, NULL,CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void **)&pGraph); IMediaControl *pControl; IMediaEvent *pEvent; hr = pGraph->QueryInterface(IID_IMediaControl, (void **)&pControl); hr = pGraph->QueryInterface(IID_IMediaEvent, (void **)&pEvent); hr = pGraph->RenderFile(L"C:\\Test.mp3", NULL); hr = pControl->Run(); long evCode = 0; pEvent->WaitForCompletion(INFINITE, &evCode); pControl->Release(); pEvent->Release(); pGraph->Release(); CoUninitialize(); Но данный код воспроизводит только закрытый файл, а в моём случае файл продолжает записываться. Итак, задача - воспроизвести аудио-файла при условии, что он всё время записывается, пополняется новой информацией. Нужна реализация по примеру того, как в браузерах это работает: например, включили Mp3, файл еще не закачался полностью, а воспроизведение уже пошло. BASS.dll - не предлагать. Какие есть идеи? |