На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
! Правила раздела "Программирование звука"
0) Данный раздел предназначен для обсуждения проблем, возникающих при программировании задач, связанных с записью, обработкой, воспроизведением звука. Перед созданием темы подумайте, не будет ли она уместнее в разделах Разработка и тестирование программ, Наши исходники, а особенно Разовые заказы и подработки
1) На Раздел распространяются все Правила форума.Огромная просьба с ними внимательно ознакомиться.
2) Запрещается давать бессмысленные ответы вроде: "Снеси Мастдай", "ХП рулит", "Поставь Линукс" и т.д.
3) Запрещается создавать темы, в которых Вы намереваетесь получить ссылку на кряки, серийники и т.п. Также запрещено любое обсуждение p2p (peer-to-peer) сетей (BitTorrent, eDonkey и т.д.).
4) Реклама всякого рода пресекается беспощадно.
5) Используйте тэг [CODE] для выделения кода программы (непременно с указанием языка программирования - выбрать из списка. В противном случае бессмысленно!). Уважайте тех, кто будет читать ваш код!
6) Если решение вашей проблемы найдено, то не забываем помечать тему специальной функцией "Вопрос решён". Вам всего лишь требуется при написании последнего ответа поставить одну единственную галочку прямо над формой ответа.
7) Если вы хотите получить совет для конкретной платформы/языка программирования, обязательно укажите их в вопросе

8) Если не прикрепляются/не скачиваются файлы, читаем Не прикрепляется / не скачивается файл. Любые обсуждения в данном разделе проблем с приложением файлов считаются оффтопиком! Со всеми вытекающими.

9) NEW! Уважаемые новички! Мы приветствуем Ваше желание научить всех посетителей раздела правильному программированию. Но огромная просьба, перед тем, как писать поучения в старых (последний ответ - "старее" месяца, а особенно, если вопрошавший не появляется на форуме уже не первый месяц, в чем можно убедиться в его профиле) темах, хорошо подумать, будет ли кому-нибудь, кроме Вас cамих, это интересно. Попытки накрутки количества тематических сообщений за счёт поднятия древних неактуальных тем ("некрофилия") будут наказываться по велению левой пятки модераторского состава (см. пп.12, 13 Правил)



Нарушение Правил может повлечь наказание со стороны модераторов.



user posted imageFAQ Раздела user posted imageПоиск в Разделе user posted imageMSDN Library Online | Ваше мнение о модераторах: user posted imageBarazuk user posted imageRikkie
Модераторы: barazuk
  
> Как получить данные с directshow аудио фильтра?
    Как получить данные с directshow аудио фильтра, потом передаю по сети и как подать эти данные с буфер фильтра источника аудио?

    Вот программа захвата звука:
    ExpandedWrap disabled
      void CCapture_Audio_MFCDlg::init_capture()
      {
          HWND parameter_hwnd = m_hWnd;
       
       
       
          HRESULT hr;
       
          {
              //Создание графа-фильтров - Create the Capture Graph Builder
              hr = CoCreateInstance(CLSID_CaptureGraphBuilder2, NULL, CLSCTX_INPROC_SERVER, IID_ICaptureGraphBuilder2, (void**)&pBuild );
              if (SUCCEEDED(hr))
              {
                  //Создание менеджера графа фильтров - Create the Filter Graph Manager
                  hr = CoCreateInstance(CLSID_FilterGraph, 0, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void**)&pGraph);
                  if (SUCCEEDED(hr))
                  {
                      //Initialize the Capture Graph Builder
                      pBuild->SetFiltergraph(pGraph);
       
                      // Find system device enumerator to find a video capture device.
                      hr = CoCreateInstance(CLSID_SystemDeviceEnum, 0, CLSCTX_INPROC_SERVER, IID_ICreateDevEnum, (LPVOID*)&pDevEnum);
       
                      if(SUCCEEDED(hr))
                      {
       
                          //создает счетчик для определенной категории устройств
                          hr = pDevEnum->CreateClassEnumerator(CLSID_AudioInputDeviceCategory, &pEnum, 0);
       
                          if(SUCCEEDED(hr))
                          {
                              if( pEnum->Next(1, &pMoniker,0) == S_OK )
                              {
                                  hr = pMoniker->BindToObject(0, 0, IID_IBaseFilter, (void **)&pCapture);
       
                                  //hr = pGraph->AddFilter(pCapture, L"CaptureFilter");
                                  //pGraph->RenderFile(L"c:\\temp\\Wildlife.wmv", NULL); //чтение файла - работает
       
                                  if(SUCCEEDED(hr))
                                  {
                                      pGraph->AddFilter(pCapture, L"Capture Filter");
       
       
                                      hr = CoCreateInstance(CLSID_AudioRender, 0, CLSCTX_INPROC_SERVER, IID_IBaseFilter, (void**)&pAudioRenderer);
                                      if (SUCCEEDED(hr))
                                      {
                                          pGraph->AddFilter(pAudioRenderer, L"Audio Renderer Filter");
       
                                          hr = pBuild->RenderStream(/*&PIN_CATEGORY_PREVIEW*/NULL, NULL/*&MEDIATYPE_Video*/, pCapture, NULL, pAudioRenderer);  //3,4,5 Параметры - фильтры, которые объединены в граф
       
       
       
       
       
       
                                          
       
                                          // Set the owner window to receive event notices.
                                          pGraph->QueryInterface(IID_IMediaEventEx, (void **)&pEvent);
                                          pEvent->SetNotifyWindow((OAHWND)hWnd, 0, 0);
       
                                          // Run the graph.
                                          pGraph->QueryInterface(IID_IMediaControl, (void **)&pMediaControl);
                                          pMediaControl->Run();
       
                                          SaveGraphFile(pGraph, L"c:\\temp\\audio_capture.grf");
       
                                      }
                                  }
                              }
                          }
                      }
                  }
              }
          }
      }
      Цитата Kozlov_Sergey @
      Как получить данные с directshow аудио фильтра, потом передаю по сети и как подать эти данные с буфер фильтра источника аудио?

      Вопрос не понятен. Напишите весь абзац по русски.
      Правильный обед должен состоять из 5 блюд приготовленных из 33 ингредиентов.
        Мне нужно получить порцию аудио данных с какого-либо фильтра в аудио графе directshow, желательно с фильтра захвата аудио от микрофона, передать по сети и воспроизвести в программе на удалённом компьютере.

        На обоих компьютерах моя программа.

        Имеем:
        1. Передача по сети типа данных IStream готова.
        2. В коде в первом сообщении темы строится аудио граф directshow для захвата аудио от микрофона и вывода на звуковую карту (на одном компьютере).
        Найти:
        1. Получить порцию аудио данных от фильтра захвата аудио от микрофона.
        2. Подать эту порцию аудио данных в фильтр аудио источник (будет работать на удалённом компьютере).
        Требования:
        1. Использовать directshow.

        Писать directshow фильтры получения порции данных и источников не хочется, потому долго и хочется использовать готовое решение.
        Но можно было бы написать 4 фильтра:
        1. источник видео (сюда подаём порцию видео).
        2. источник аудио (сюда подаём порцию аудио).
        3. нуль рендерер видео (отсюда получаем порцию данных видео).
        4 нуль рендерер аудио (отсюда получаем порцию данных аудио).
          Я не хочу и не буду всё делать сам!!!

          Меня никто этому не заставит!

          Нужно использовать готовое!!!

          Добавлено
          Куплю исходники (C++, Visual Studio MFC project) данных фильтров или (предпочтительнее) куплю исходники решающие данную задачу (C++, Visual Studio MFC project).

          Для задачи данное темы:
          Примерно 100 (максимум) строк кода по 50 символов плюс к моему коду из первого сообщения.

          Итого максимум 10000 байт исходного кода на C++ в кодировке Unicode-16.

          Цена договорная.
          Оплата: PayPal, WebMoney, EasyPay.BY.

          Сразу предупреждаю, что денег мало, поэтому и 100 долларов заплатить может не смогу.

          Добавлено
          Примечание:
          1. Рассчитываю на решение в 1000 байт (500 символов) за максимум 10 долларов.
          2. Работы тут для знающего человека максимум на 1 час.

          Условия:
          1. Предоставляется проект Capture_Audio_MFC.
          2. Архив с проектом Capture_Audio_MFC находится по адресу ftp://ftp.stl-galaxy.by/Capture_Audio_MFC_paid.rar
          Требования:
          1. Отредактировать проект и прислать по email мне.
          2. email в личном сообщении или на главной в контактах странице сайта http://www.stl-galaxy.by/.
          Сообщение отредактировано: Kozlov_Sergey -
            Цитата Kozlov_Sergey @
            2. email в личном сообщении или на главной в контактах странице сайта http://www.stl-galaxy.by/.
            СТЛ-Галактика? WTF? :) Попытка построить свой собственный интернет с блэкджеком и шлюхами?
            Сообщение отредактировано: applegame -
            error: 'long long long' is too long for GCC
            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script Execution time: 0,1037 ]   [ 17 queries used ]   [ Generated: 22.09.17, 13:31 GMT ]