Во-первых, я полагаю, вам нужно знать, какой формат (закодированный как / содержащийся в нем) вы собираетесь транслировать как.
Я думаю, h264.С Windows 7 Media Foundation создать вспомогательные функции H264.Вам необходимо создать топологию.Источник читает файл, а приемник превращает декодированный и закодированный формат в h264.Все, что вам нужно, это источник и раковина.Вам на самом деле не нужен декодер и кодер.Строитель топологии определяет, что нужно подключить между ними.
Существует функция CreateTranscodeTopology, но она вам не поможет, поскольку она записывает закодированные данные в файл.Вот почему вам нужно создать свою собственную топологию.
Единственное, что вам нужно написать, - это класс, который реализует IMFByteStream.
Ваш приемник должен принять вашу реализацию этого байтового потока.Ваша реализация "Write" функция собирается записать в сокет, в который вы хотите отправить данные.Поэтому, возможно, вы можете передать свой сокет конструктору вашей реализации IMFByteStream или функции обратного вызова.
Я бы также предложил вам поместить некоторые операторы печати в другую функцию, которую вам нужно реализовать в IMFByteStream, потому что SinkWriter вызывает определенныетакие вещи, какGetCapabilities, поэтому вы должны хотя бы вернуться.
HRESULT STDMETHODCALLTYPE NetworkOutputStream::GetCapabilities(__RPC__out DWORD *pdwCapabilities){HRESULT hr=S_OK;
printf("GetCapabilities\n");
*pdwCapabilities= (MFBYTESTREAM_IS_READABLE|MFBYTESTREAM_IS_WRITABLE|MFBYTESTREAM_IS_SEEKABLE);
return hr;
}
Сказав это, если у вас есть проигрыватель на клиенте ("Браузер HTML5"), я бы предложил вам использовать пример "MFCopy".
Создание топологии в основном для воспроизведения и прочегоТаким образом, он декодирует и кодирует его со скоростью, которую должно воспроизводить движение. Но все, что вам нужно, это кодировать файл и отправлять его по проводам. Поэтому взгляните на MFCopy и реализуйте свой собственный IMFByteStream. Вместо создания приемника, который пишет влокальная файловая система передает ваш IMFByteStream в приемник.