Цель: записать видео (без звука) с веб-камеры как есть, т.е. нет транскодирования.
Текущая реализация заключается в использовании простой топологии, подобной следующей (номера узлов в скобках для справки при чтении журнала трассировки):
[Source (0)] -> [Tee (1)] -> (auto-added Decoder (2)) -> [EVR (3)]
\-> [Sink Writer (4)]
С использованием IMFMediaSession
обрабатывать разрешение топологии (после того, как связал EVR вывод путем разрешения активация объект, как описано в MSDN — привязка выходов)
Если я не добавлю Раковина Писатель вообще — сеанс работает просто отлично, производя вывод (предварительный просмотр видео) в указанном окне. Работает независимо от того, есть ли тройник узел присутствует или нет (как и ожидалось).
Проблема возникает, когда я пытаюсь включить Раковина Писатель в Топология.
Раковина ПисательИнициализация довольно минималистична. В основном только MFCreateSinkWriterFromURL()
предоставляя имя выходного файла и IMFAttributes
указав нет конвертеров с без аппаратных преобразований плюс низкая задержка а также без дросселирования. тип контейнера перекодировки указан как MPEG4
но результат не изменится, если этот параметр будет выведен из расширения имени файла (.mp4).
Однажды Раковина Писатель создается новый поток добавляется к нему через AddStream()
и веб-камера тип носителя непосредственно используется для указания выходных данных тип носителя а также в SetInputMediaType()
вызов.
BeginWriting()
призван закончить Раковина Писательинициализация, после которой он добавляется в узел с вызовом SetObject()
,
тройник затем подключает его вторичный выход в Раковина ПисательУзел и топология решены (успешно) и, вероятно, готовы к работе.
Как только топология ставится в очередь во вновь созданный сеанс с MFSESSION_SETTOPOLOGY_NORESOLUTION
флаг (вместе с MFSESSION_SETTOPOLOGY_IMMEDIATE
) воспроизведение и запись должны начаться — это мое текущее понимание того, как оно должно работать.
Однако вот где я получаю Медиа Сессия Событие с помощью Invoke()
для типа события MESessionTopologySet
с кодом ошибки 0x80004002!
Играть с Раковина ПисательАтрибуты (с указанием пустых / заданных по умолчанию) не дали положительных результатов. Перемещение разрешения топологии до того, как я добавлю писателя, ничего не изменило. Указание первичный выходной поток для тройник узел, как собирается EVR тоже не помогло.
Отключение MS Красный камень особенность с EnableFrameServerMode
установлен в 0
не помогло
Сборка и запуск с Windows SDK 10.0.10586 на Windows 10 Pro рабочий стол.
Ниже журнал от mftrace для справки (пришлось немного подрезать, чтобы вписаться в предел 30К):
PID, время TID (UTC) TraceMessage --------- -------------- ------------ ...... убрано начало для экономии места 8000,2ED0 21: 51: 35.64241 CMFPlatExportDetours :: MFStartup @ Version = 0x00020070, dwFlags = 0x00000001 ...... перечисление оборудования и настройка клиентских фабрик 8000,2ED0 21: 51: 35.65757 CMFPlatExportDetours :: MFStartup @ Version = 0x00020070, dwFlags = 0x00000000 ...... CoCreateInstance звонки 8000,2ED0 21: 51: 35.66117 CMFActivateDetours :: ActivateObject @ 000001B0B3BE3390 Новый MFT @ 000001B0B3BE3590 8000,2ED0 21: 51: 35.66119 CMFActivateDetours :: ActivateObject @ 000001B0B3BE3390 Новый источник @ 000001B0B3BEFB80 8000,2ED0 21: 51: 35,66123 CMFMediaSourceDetours :: TracePD @ 000001B0B3BEFB80 поток 0 (ID 0): выбрано 1, MT: MF_MT_FRAME_SIZE = 1374389534960 (320,240); MF_MT_AVG_BITRATE = 36864000; MF_MT_YUV_MATRIX = 2; MF_MT_MAJOR_TYPE = MEDIATYPE_Video; MF_MT_VIDEO_LIGHTING = 3; MF_MT_DEFAULT_STRIDE = 640; MF_MT_VIDEO_CHROMA_SITING = 6; MF_MT_AM_FORMAT_TYPE = FORMAT_VIDEOINFO2; MF_MT_FIXED_SIZE_SAMPLES = 1; MF_MT_VIDEO_NOMINAL_RANGE = 2; MF_MT_FRAME_RATE = 128849018881 (30,1); MF_MT_PIXEL_ASPECT_RATIO = 4294967297 (1,1); MF_MT_ALL_SAMPLES_INDEPENDENT = 1; MF_MT_FRAME_RATE_RANGE_MIN = 128849018881 (30,1); MF_MT_SAMPLE_SIZE = 153600; MF_MT_VIDEO_PRIMARIES = 2; MF_MT_INTERLACE_MODE = 2; MF_MT_FRAME_RATE_RANGE_MAX = 128849018881 (30,1); MF_MT_SUBTYPE = MFVIDEO 8000,2ED0 21: 51: 35.66150 CMFActivateDetours :: ActivateObject @ 000001B0B3BE3390 Новый MFT @ 000001B0B3BE3590 8000,2ED0 21: 51: 35.66150 CMFActivateDetours :: ActivateObject @ 000001B0B3BE3390 Новый источник @ 000001B0B3BEFB80 8000,2ED0 21: 51: 35,66153 CMFMediaSourceDetours :: TracePD @ 000001B0B3BEFB80 поток 0 (ID 0): выбрано 1, MT: MF_MT_FRAME_SIZE = 1374389534960 (320,240); MF_MT_AVG_BITRATE = 36864000; MF_MT_YUV_MATRIX = 2; MF_MT_MAJOR_TYPE = MEDIATYPE_Video; MF_MT_VIDEO_LIGHTING = 3; MF_MT_DEFAULT_STRIDE = 640; MF_MT_VIDEO_CHROMA_SITING = 6; MF_MT_AM_FORMAT_TYPE = FORMAT_VIDEOINFO2; MF_MT_FIXED_SIZE_SAMPLES = 1; MF_MT_VIDEO_NOMINAL_RANGE = 2; MF_MT_FRAME_RATE = 128849018881 (30,1); MF_MT_PIXEL_ASPECT_RATIO = 4294967297 (1,1); MF_MT_ALL_SAMPLES_INDEPENDENT = 1; MF_MT_FRAME_RATE_RANGE_MIN = 128849018881 (30,1); MF_MT_SAMPLE_SIZE = 153600; MF_MT_VIDEO_PRIMARIES = 2; MF_MT_INTERLACE_MODE = 2; MF_MT_FRAME_RATE_RANGE_MAX = 128849018881 (30,1); MF_MT_SUBTYPE = MFVIDEO 8000,2ED0 21: 51: 38.33229 CMFActivateDetours :: ActivateObject @ 000001B0B3BE3390 Новый MFT @ 000001B0B3BE3590 8000,2ED0 21: 51: 38.33229 CMFActivateDetours :: ActivateObject @ 000001B0B3BE3390 Новый источник @ 000001B0B3BEFB80 8000,2ED0 21: 51: 38,33233 CMFMediaSourceDetours :: TracePD @ 000001B0B3BEFB80 поток 0 (ID 0): выбрано 1, MT: MF_MT_FRAME_SIZE = 1374389534960 (320,240); MF_MT_AVG_BITRATE = 36864000; MF_MT_YUV_MATRIX = 2; MF_MT_MAJOR_TYPE = MEDIATYPE_Video; MF_MT_VIDEO_LIGHTING = 3; MF_MT_DEFAULT_STRIDE = 640; MF_MT_VIDEO_CHROMA_SITING = 6; MF_MT_AM_FORMAT_TYPE = FORMAT_VIDEOINFO2; MF_MT_FIXED_SIZE_SAMPLES = 1; MF_MT_VIDEO_NOMINAL_RANGE = 2; MF_MT_FRAME_RATE = 128849018881 (30,1); MF_MT_PIXEL_ASPECT_RATIO = 4294967297 (1,1); MF_MT_ALL_SAMPLES_INDEPENDENT = 1; MF_MT_FRAME_RATE_RANGE_MIN = 128849018881 (30,1); MF_MT_SAMPLE_SIZE = 153600; MF_MT_VIDEO_PRIMARIES = 2; MF_MT_INTERLACE_MODE = 2; MF_MT_FRAME_RATE_RANGE_MAX = 128849018881 (30,1); MF_MT_SUBTYPE = MFVIDEO 8000,2ED0 21: 51: 38,33272 CMFReadWriteExportDetours :: MFCreateSinkWriterFromURL @ URL: 'C: \ TMP \ RRY-raw.mp4', потоковый @ 0000000000000000, MF_SINK_WRITER_DISABLE_THROTTLING = 1; MF_TRANSCODE_CONTAINERTYPE = MFTranscodeContainerType_MPEG4; MF_READWRITE_DISABLE_CONVERTERS = 1; {9C27891A-ED7A-40E1 -88E8-B22727A024EE} = 1; MF_READWRITE_ENABLE_HARDWARE_TRANSFORMS = 0 8000,2ED0 21: 51: 38.33289 COle32ExportDetours :: CoCreateInstance @ Created {48E2ED0F-98C2-4A37-BED5-166312DDD83F} фабрика классов MFReadWrite (интерфейсы C: \ Windows \ System32 \ mfreadwrite.dll) @ 000001B0B2DEFF0: 0B034FEFF0 - Класс 0B234FEFF0 8000,2ED0 21: 51: 38,33290 CMFReadWriteClassFactoryDetours :: CreateInstanceFromURL @ 000001B0B234EFA0 URL: 'C: \ TMP \ RRY-raw.mp4', MF_SINK_WRITER_DISABLE_THROTTLING = 1; MF_TRANSCODE_CONTAINERTYPE = MFTranscodeContainerType_MPEG4; MF_READWRITE_DISABLE_CONVERTERS = 1; {9C27891A-ED7A-40E1-88E8- B22727A024EE} = 1; MF_READWRITE_ENABLE_HARDWARE_TRANSFORMS = 0 8000,2ED0 21: 51: 38.33292 CMFPlatExportDetours :: MFCreateFile @ URL: 'c: \ tmp \ rry-raw.mp4' 8000,2ED0 21: 51: 38.33315 CMFReadWriteClassFactoryDetours :: HandleObject @ Новый обработчик приемников @ 000001B0B3C01770 8000,2ED0 21: 51: 38,33322 CMFSinkWriterDetours :: AddStream @ 000001B0B3C01770 Index поток 0x0, MT: MF_MT_FRAME_SIZE = 1374389534960 (320240); MF_MT_AVG_BITRATE = 36864000; MF_MT_YUV_MATRIX = 2; MF_MT_MAJOR_TYPE = MEDIATYPE_Video; MF_MT_VIDEO_LIGHTING = 3; MF_MT_DEFAULT_STRIDE = 640; MF_MT_VIDEO_CHROMA_SITING = 6 ; MF_MT_AM_FORMAT_TYPE = FORMAT_VIDEOINFO2; MF_MT_FIXED_SIZE_SAMPLES = 1; MF_MT_VIDEO_NOMINAL_RANGE = 2; MF_MT_FRAME_RATE = 128849018881 (30,1); MF_MT_PIXEL_ASPECT_RATIO = 4294967297 (1,1); MF_MT_ALL_SAMPLES_INDEPENDENT = 1; MF_MT_FRAME_RATE_RANGE_MIN = 128849018881 (30,1); MF_MT_SAMPLE_SIZE = 153600; MF_MT_VIDEO_PRIMARIES = 2; MF_MT_INTERLACE_MODE = 2; MF_MT_FRAME_RATE_RANGE_MAX = 128849018881 (30,1); MF_MT_SUBTYPE = MFVideoFormat_YUY2 8000,2ED0 21: 51: 38,33326 CMFSinkWriterDetours :: SetInputMediaType @ 000001B0B3C01770 Index поток 0x0, MT: MF_MT_FRAME_SIZE = 1374389534960 (320240); MF_MT_AVG_BITRATE = 36864000; MF_MT_YUV_MATRIX = 2; MF_MT_MAJOR_TYPE = MEDIATYPE_Video; MF_MT_VIDEO_LIGHTING = 3; MF_MT_DEFAULT_STRIDE = 640; MF_MT_VIDEO_CHROMA_SITING = 6 ; MF_MT_AM_FORMAT_TYPE = FORMAT_VIDEOINFO2; MF_MT_FIXED_SIZE_SAMPLES = 1; MF_MT_VIDEO_NOMINAL_RANGE = 2; MF_MT_FRAME_RATE = 128849018881 (30,1); MF_MT_PIXEL_ASPECT_RATIO = 4294967297 (1,1); MF_MT_ALL_SAMPLES_INDEPENDENT = 1; MF_MT_FRAME_RATE_RANGE_MIN = 128849018881 (30,1); MF_MT_SAMPLE_SIZE = 153600; MF_MT_VIDEO_PRIMARIES = 2; MF_MT_INTERLACE_MODE = 2; MF_MT_FRAME_RATE_RANGE_MAX = 128849018881 (30,1); MF_MT_SUBTYPE = MFVideoFormat_YUY2 8000,2ED0 21: 51: 38.33379 COle32ExportDetours :: CoCreateInstance @ Created {A22C4FC7-6E91-4E1D-89E9-53B2667B72BA} Фабрика классов приемников MF MPEG4 (C: \ Windows \ System32 \ mfmp4srcsnk.dll) @ 000001B0B34 traced34 8000,2ED0 21: 51: 38.33423 CMFByteStreamDetours :: GetCapabilities @ 000001B0B3BE0520 Возможности 0x00000806 8000,2ED0 21: 51: 38.33434 CMFSinkWriterDetours :: BeginWriting @ 000001B0B3C01770 Начало записи 8000,2ED0 21: 51: 38.33538 COle32ExportDetours :: CoCreateInstance @ New MFT @ 000001B0B3C24730, VIDEO_ZOOM_RECT = 00 00 00 00 00 00 00 00 00 00 80 3f 00 00 80 3f 8000,2ED0 21: 51: 38.33539 COle32ExportDetours :: CoCreateInstance @ Created {E474E05A-AB65-4F6A-827C-218B1BAAF31F} MF-видеомикшер (C: \ Windows \ System32 \ evr.dll) @ 000001B0B3C24730 - отслеживаемые интерфейсы IMB: трассируемые 0000: TR 8000,2ED0 21: 51: 38.38105 COle32ExportDetours :: CoCreateInstance @ Created {A0A7A57B-59B2-4919-A694-ADD0A526C373} Безликий оконный презентатор (C: \ Windows \ System32 \ evr.dll) @ 000001B0B3C292E8 - traced 8000,2ED0 21: 51: 38.38107 COle32ExportDetours :: CoCreateInstance @ Created {98455561-5136-4D28-AB08-4CEE40EA2781} MF Video Presenter (C: \ Windows \ System32 \ evr.dll) @ 000001B0B3C27390 - отслеживаемые интерфейсы: 8000,2ED0 21: 51: 38.38111 CMFTransformDetours :: ProcessMessage @ 000001B0B3C24730 Тип сообщения = 0x00000002 MFT_MESSAGE_SET_D3D_MANAGER, параметр = B3C28090 8000,2ED0 21: 51: 38.39477 CMFActivateDetours :: ActivateObject @ 000001B0B3C00430 Новый приемник @ 000001B0B3C29950 8000,2ED0 21: 51: 38.39477 CMFMediaSinkDetours :: Attach @ 000001B0B3C29950 Состояние часов @ 000001B0B3C29970 8000,2ED0 21: 51: 38,40944 CMFTransformDetours :: SetInputType @ 000001B0B3C24730 Преуспето МТ: MF_MT_FRAME_SIZE = 1374389534960 (320240); MF_MT_AVG_BITRATE = 36864000; MF_MT_YUV_MATRIX = 2; MF_MT_MAJOR_TYPE = MEDIATYPE_Video; MF_MT_VIDEO_LIGHTING = 3; MF_MT_DEFAULT_STRIDE = 640; MF_MT_VIDEO_CHROMA_SITING = 6; MF_MT_AM_FORMAT_TYPE = FORMAT_VIDEOINFO2; MF_MT_FIXED_SIZE_SAMPLES = 1; MF_MT_VIDEO_NOMINAL_RANGE = 2; MF_MT_FRAME_RATE = 128849018881 (30,1); MF_MT_PIXEL_ASPECT_RATIO = 4294967297 (1,1); MF_MT_ALL_SAMPLES_INDEPENDENT = 1; MF_MT_FRAME_RATE_RANGE_MIN = 128849018881 (30,1); MF_MT_SAMPLE_SIZE = 153600; MF_MT_VIDEO_PRIMARIES = 2; MF_MT_INTERLACE_MODE = 2; MF_MT_FRAME_RATE_RANGE_MAX = 128849018881 (30,1); MF_MT_SUBTYPE = MFVideoFormat_YUY2 8000,2ED0 21: 51: 38,40952 CMFTransformDetours :: SetInputType @ 000001B0B3C2B0F0 Преуспето МТ: MF_MT_FRAME_SIZE = 1374389534960 (320240); MF_MT_AVG_BITRATE = 36864000; MF_MT_YUV_MATRIX = 2; MF_MT_MAJOR_TYPE = MEDIATYPE_Video; MF_MT_VIDEO_LIGHTING = 3; MF_MT_DEFAULT_STRIDE = 640; MF_MT_VIDEO_CHROMA_SITING = 6; MF_MT_AM_FORMAT_TYPE = FORMAT_VIDEOINFO2; MF_MT_FIXED_SIZE_SAMPLES = 1; MF_MT_VIDEO_NOMINAL_RANGE = 2; MF_MT_FRAME_RATE = 128849018881 (30,1); MF_MT_PIXEL_ASPECT_RATIO = 4294967297 (1,1); MF_MT_ALL_SAMPLES_INDEPENDENT = 1; MF_MT_FRAME_RATE_RANGE_MIN = 128849018881 (30,1); MF_MT_SAMPLE_SIZE = 153600; MF_MT_VIDEO_PRIMARIES = 2; MF_MT_INTERLACE_MODE = 2; MF_MT_FRAME_RATE_RANGE_MAX = 128849018881 (30,1); MF_MT_SUBTYPE = MFVideoFormat_YUY2 8000,2ED0 21: 51: 38,40986 CMFTransformDetours :: SetInputType @ 000001B0B3C24730 Преуспето МТ: MF_MT_FRAME_SIZE = 1374389534960 (320240); MF_MT_AVG_BITRATE = 36864000; MF_MT_YUV_MATRIX = 2; MF_MT_MAJOR_TYPE = MEDIATYPE_Video; MF_MT_VIDEO_LIGHTING = 3; MF_MT_DEFAULT_STRIDE = 640; MF_MT_VIDEO_CHROMA_SITING = 6; MF_MT_AM_FORMAT_TYPE = FORMAT_VIDEOINFO2; MF_MT_FIXED_SIZE_SAMPLES = 1; MF_MT_VIDEO_NOMINAL_RANGE = 2; MF_MT_FRAME_RATE = 128849018881 (30,1); MF_MT_PIXEL_ASPECT_RATIO = 4294967297 (1,1); MF_MT_ALL_SAMPLES_INDEPENDENT = 1; MF_MT_FRAME_RATE_RANGE_MIN = 128849018881 (30,1); MF_MT_SAMPLE_SIZE = 153600; MF_MT_VIDEO_PRIMARIES = 2; MF_MT_INTERLACE_MODE = 2; MF_MT_FRAME_RATE_RANGE_MAX = 128849018881 (30,1); MF_MT_SUBTYPE = MFVideoFormat_YUY2 8000,2ED0 21: 51: 38,40988 CMFTransformDetours :: SetOutputType @ 000001B0B3C2B0F0 Преуспето МТ: MF_MT_FRAME_SIZE = 1374389534960 (320240); MF_MT_AVG_BITRATE = 36864000; MF_MT_YUV_MATRIX = 2; MF_MT_MAJOR_TYPE = MEDIATYPE_Video; MF_MT_VIDEO_LIGHTING = 3; MF_MT_DEFAULT_STRIDE = 640; MF_MT_VIDEO_CHROMA_SITING = 6; MF_MT_AM_FORMAT_TYPE = FORMAT_VIDEOINFO2; MF_MT_FIXED_SIZE_SAMPLES = 1; MF_MT_VIDEO_NOMINAL_RANGE = 2; MF_MT_FRAME_RATE = 128849018881 (30,1); MF_MT_PIXEL_ASPECT_RATIO = 4294967297 (1,1); MF_MT_ALL_SAMPLES_INDEPENDENT = 1; MF_MT_FRAME_RATE_RANGE_MIN = 128849018881 (30,1); MF_MT_SAMPLE_SIZE = 153600; MF_MT_VIDEO_PRIMARIES = 2; MF_MT_INTERLACE_MODE = 2; MF_MT_FRAME_RATE_RANGE_MAX = 128849018881 (30,1); MF_MT_SUBTYPE = MFVideoFormat_YUY2 ...... прикрепить часы и контролировать скорость 8000,2ED0 21: 51: 38.41105 CTopologyHelpers :: Trace @ 000001B0B3C2A8E0 >>>>>>>>>>>>> Топология ввода 8000,2ED0 21: 51: 38,41106 CTopologyHelpers :: TraceNode @ Узел 0 @ 000001B0B3C00430 ID: 1F4000000001, 0 входы, выходы 1, тип 1, MF_TOPONODE_MARKIN_HERE = 1; MF_TOPONODE_MARKOUT_HERE = 1; MF_TOPONODE_MEDIASTART = 0 (0,0); MF_TOPONODE_SOURCE = @ 000001B0B3BEFB80; MF_TOPONODE_PRESENTATION_DESCRIPTOR = @ 000001B0B3BF45A0; MF_TOPONODE_STREAM_DESCRIPTOR = @ 000001B0B3BF4170 8000,2ED0 21: 51: 38.41107 CTopologyHelpers :: TraceObject @ Source @ 000001B0B3BEFB80 {00000000-0000-0000-0000-000000000000} (C: \ Windows \ SYSTEM32 \ MFCORE.DLL), MFMEDIASOURCE_CHARACTERISTICS = 0x00000005 8000,2ED0 21: 51: 38,41109 CTopologyHelpers :: TraceStream @ Выходной поток 0, подключенные к узлу @ 000001B0B3C2B030 потока 0, МТ: MF_MT_FRAME_SIZE = 1374389534960 (320240); MF_MT_AVG_BITRATE = 36864000; MF_MT_YUV_MATRIX = 2; MF_MT_MAJOR_TYPE = MEDIATYPE_Video; MF_MT_VIDEO_LIGHTING = 3; MF_MT_DEFAULT_STRIDE = 640; MF_MT_VIDEO_CHROMA_SITING = 6; MF_MT_AM_FORMAT_TYPE = FORMAT_VIDEOINFO2; MF_MT_FIXED_SIZE_SAMPLES = 1; MF_MT_VIDEO_NOMINAL_RANGE = 2; MF_MT_FRAME_RATE = 128849018881 (30,1); MF_MT_PIXEL_ASPECT_RATIO = 4294967297 (1,1); MF_MT_ALL_SAMPLES_INDEPENDENT = 1; MF_MT_FRAME_RATE_RANGE_MIN = 128849018881 (30,1) ; MF_MT_SAMPLE_SIZE = 153600; MF_MT_VIDEO_PRIMARIES = 2; MF_MT_INTERLACE_MODE = 2; MF_MT_FRAME_RATE_RANGE_MAX = 128849018881 (30,1); MF_MT_SUBTYPE = MФ 8000,2ED0 21: 51: 38.41109 CTopologyHelpers :: TraceNode @ Node 1 @ 000001B0B3C2B030 ID: 1F4000000003, 1 вход, 2 выхода, тип 3, MF_TOPONODE_PRIMARYOUTPUT = 0 8000,2ED0 21: 51: 38.41109 CTopologyHelpers :: TraceObject @ Tee @ 0000000000000000 {00000000-0000-0000-0000-000000000000} ((ноль)), (ноль) 8000,2ED0 21: 51: 38,41111 CTopologyHelpers :: TraceStream @ 0 входного потока, подключенный к узлу @ 000001B0B3C00430 потока 0, МТ: MF_MT_FRAME_SIZE = 1374389534960 (320240); MF_MT_AVG_BITRATE = 36864000; MF_MT_YUV_MATRIX = 2; MF_MT_MAJOR_TYPE = MEDIATYPE_Video; MF_MT_VIDEO_LIGHTING = 3; MF_MT_DEFAULT_STRIDE = 640; MF_MT_VIDEO_CHROMA_SITING = 6; MF_MT_AM_FORMAT_TYPE = FORMAT_VIDEOINFO2; MF_MT_FIXED_SIZE_SAMPLES = 1; MF_MT_VIDEO_NOMINAL_RANGE = 2; MF_MT_FRAME_RATE = 128849018881 (30,1); MF_MT_PIXEL_ASPECT_RATIO = 4294967297 (1,1); MF_MT_ALL_SAMPLES_INDEPENDENT = 1; MF_MT_FRAME_RATE_RANGE_MIN = 128849018881 (30,1) ; MF_MT_SAMPLE_SIZE = 153600; MF_MT_VIDEO_PRIMARIES = 2; MF_MT_INTERLACE_MODE = 2; MF_MT_FRAME_RATE_RANGE_MAX = 128849018881 (30,1); MF_MT_SUBTYPE = MФ 8000,2ED0 21: 51: 38,41112 CTopologyHelpers :: TraceStream @ Выходной поток 0, подключенные к узлу @ 000001B0B3C2ADB0 потока 0, МТ: MF_MT_FRAME_SIZE = 1374389534960 (320240); MF_MT_AVG_BITRATE = 36864000; MF_MT_YUV_MATRIX = 2; MF_MT_MAJOR_TYPE = MEDIATYPE_Video; MF_MT_VIDEO_LIGHTING = 3; MF_MT_DEFAULT_STRIDE = 640; MF_MT_VIDEO_CHROMA_SITING = 6; MF_MT_AM_FORMAT_TYPE = FORMAT_VIDEOINFO2; MF_MT_FIXED_SIZE_SAMPLES = 1; MF_MT_VIDEO_NOMINAL_RANGE = 2; MF_MT_FRAME_RATE = 128849018881 (30,1); MF_MT_PIXEL_ASPECT_RATIO = 4294967297 (1,1); MF_MT_ALL_SAMPLES_INDEPENDENT = 1; MF_MT_FRAME_RATE_RANGE_MIN = 128849018881 (30,1) ; MF_MT_SAMPLE_SIZE = 153600; MF_MT_VIDEO_PRIMARIES = 2; MF_MT_INTERLACE_MODE = 2; MF_MT_FRAME_RATE_RANGE_MAX = 128849018881 (30,1); MF_MT_SUBTYPE = MФ 8000,2ED0 21: 51: 38,41114 CTopologyHelpers :: TraceStream @ Выходной поток 1, соединенный с узлом @ 000001B0B3C29130 потока 0, МТ: MF_MT_FRAME_SIZE = 1374389534960 (320240); MF_MT_AVG_BITRATE = 36864000; MF_MT_YUV_MATRIX = 2; MF_MT_MAJOR_TYPE = MEDIATYPE_Video; MF_MT_VIDEO_LIGHTING = 3; MF_MT_DEFAULT_STRIDE = 640; MF_MT_VIDEO_CHROMA_SITING = 6; MF_MT_AM_FORMAT_TYPE = FORMAT_VIDEOINFO2; MF_MT_FIXED_SIZE_SAMPLES = 1; MF_MT_VIDEO_NOMINAL_RANGE = 2; MF_MT_FRAME_RATE = 128849018881 (30,1); MF_MT_PIXEL_ASPECT_RATIO = 4294967297 (1,1); MF_MT_ALL_SAMPLES_INDEPENDENT = 1; MF_MT_FRAME_RATE_RANGE_MIN = 128849018881 (30,1) ; MF_MT_SAMPLE_SIZE = 153600; MF_MT_VIDEO_PRIMARIES = 2; MF_MT_INTERLACE_MODE = 2; MF_MT_FRAME_RATE_RANGE_MAX = 128849018881 (30,1); MF_MT_SUBTYPE = MФ 8000,2ED0 21: 51: 38,41115 CTopologyHelpers :: TraceNode @ Узел 2 @ 000001B0B3C2ACF0 ID: 1F4000000002, 1 входы, выходы 0, тип 0, MF_TOPONODE_STREAMID = 0; MF_TOPONODE_NOSHUTDOWN_ON_REMOVE = 0; MF_TOPONODE_TRANSFORM_OBJECTID = {D23E6477-B104-4707-81CB-E1CA19A07016 }; {B8AA3129-DFC9-423A-8ACD-1D82850A3D1F} = @ 000001B0B3C27370 8000,2ED0 21: 51: 38.41115 CTopologyHelpers :: TraceObject @ Sink @ 000001B0B3C2A048 {D23E6477-B104-4707-81CB-E1CA19A07016} (C: \ Windows \ SYSTEM32 \ MF.dll), (ноль) 8000,2ED0 21: 51: 38.41115 CTopologyHelpers :: TraceStream @ Входной поток 0, подключенный к узлу @ 000001B0B3C2ADB0, поток 0, MT:> 8000,2ED0 21: 51: 38.41116 CTopologyHelpers :: TraceNode @ Node 3 @ 000001B0B3C2ADB0 ID: 1F4000000008, 1 вход, 1 выход, тип 2, MF_TOPONODE_TRANSFORM_OBJECTID = {CF862982-23B0-4E3D8FEFA8484 D8476D84C08484 8000,2ED0 21: 51: 38.41116 CTopologyHelpers :: TraceObject @ MFT @ 000001B0B3C2B0F0 {CF862982-23B0-4E3D-8C76-D03FEF084AF8} (C: \ Windows \ SYSTEM32 \ MFCORE.DLL), MFT_SUPPORT_FDATAN_DYNCH 8000,2ED0 21: 51: 38,41118 CTopologyHelpers :: TraceStream @ 0 входного потока, подключенный к узлу @ 000001B0B3C2B030 потока 0, МТ: MF_MT_FRAME_SIZE = 1374389534960 (320240); MF_MT_AVG_BITRATE = 36864000; MF_MT_YUV_MATRIX = 2; MF_MT_MAJOR_TYPE = MEDIATYPE_Video; MF_MT_VIDEO_LIGHTING = 3; MF_MT_DEFAULT_STRIDE = 640; MF_MT_VIDEO_CHROMA_SITING = 6; MF_MT_AM_FORMAT_TYPE = FORMAT_VIDEOINFO2; MF_MT_FIXED_SIZE_SAMPLES = 1; MF_MT_VIDEO_NOMINAL_RANGE = 2; MF_MT_FRAME_RATE = 128849018881 (30,1); MF_MT_PIXEL_ASPECT_RATIO = 4294967297 (1,1); MF_MT_ALL_SAMPLES_INDEPENDENT = 1; MF_MT_FRAME_RATE_RANGE_MIN = 128849018881 (30,1) ; MF_MT_SAMPLE_SIZE = 153600; MF_MT_VIDEO_PRIMARIES = 2; MF_MT_INTERLACE_MODE = 2; MF_MT_FRAME_RATE_RANGE_MAX = 128849018881 (30,1); MF_MT_SUBTYPE = MФ 8000,2ED0 21: 51: 38,41120 CTopologyHelpers :: TraceStream @ Выходной поток 0, подключенные к узлу @ 000001B0B3C2ACF0 потока 0, МТ: MF_MT_FRAME_SIZE = 1374389534960 (320240); MF_MT_AVG_BITRATE = 36864000; MF_MT_YUV_MATRIX = 2; MF_MT_MAJOR_TYPE = MEDIATYPE_Video; MF_MT_VIDEO_LIGHTING = 3; MF_MT_DEFAULT_STRIDE = 640; MF_MT_VIDEO_CHROMA_SITING = 6; MF_MT_AM_FORMAT_TYPE = FORMAT_VIDEOINFO2; MF_MT_FIXED_SIZE_SAMPLES = 1; MF_MT_VIDEO_NOMINAL_RANGE = 2; MF_MT_FRAME_RATE = 128849018881 (30,1); MF_MT_PIXEL_ASPECT_RATIO = 4294967297 (1,1); MF_MT_ALL_SAMPLES_INDEPENDENT = 1; MF_MT_FRAME_RATE_RANGE_MIN = 128849018881 (30,1) ; MF_MT_SAMPLE_SIZE = 153600; MF_MT_VIDEO_PRIMARIES = 2; MF_MT_INTERLACE_MODE = 2; MF_MT_FRAME_RATE_RANGE_MAX = 128849018881 (30,1); MF_MT_SUBTYPE = MФ 8000,2ED0 21: 51: 38.41120 CTopologyHelpers :: TraceNode @ Node 4 @ 000001B0B3C29130 ID: 1F4000000004, 1 вход, 0 выходов, тип 0, MF_TOPONODE_STREAMID = 0; MF_TOPONODE_NOSHUTDOWN_ON_REM 8000,2ED0 21: 51: 38.41120 CMFTopologyNodeDetours :: GetGUID @ 000001B0B3C29130 атрибут не найден guidKey = MF_TOPONODE_TRANSFORM_OBJECTID 8000,2ED0 21: 51: 38.41121 CTopologyHelpers :: TraceObject @ UnknownType @ 0000000000000000 {00000000-0000-0000-0000-000000000000} ((ноль)), (ноль) 8000,2ED0 21: 51: 38.41121 CTopologyHelpers :: TraceStream @ Входной поток 0, подключенный к узлу @ 000001B0B3C2B030 поток 1, MT:> 8000,2ED0 21: 51: 38.41121 CTopologyHelpers :: Trace @ 000001B0B3C2A8E0 MF_TOPOLOGY_RESOLUTION_STATUS = 0 8000,2ED0 21: 51: 38.41121 CTopologyHelpers :: Trace @ 000001B0B3C2A8E0 >>>>>>>>>>>> Топология с очередями 8000,229C 21: 51: 38.41144 CTopologyHelpers :: TraceNode @ Node 0 @ 000001B0B3C00430 ID: 1F4000000001, 0 входов, 1 выход, тип 1, MF_TOPONODE_MARKIN_HERE = 1; MF_TOPONODE_MARKOUT_HOE_F_TF = MOP = MOTO = MOP = MOTO = MOP = MOTO = MOP = MOTO = MOP = MOTO = MOP = MOTO = MOP = MOTO = MOP) = MOP = MOP = MOTO = MOP = MOTO = MOP = MOP = MOP = MOP = MOP = MOTO = MOP = MOTO = MOP = MOTO = MOP = MOP) = MOP = MOTO = MOP = MOTO = MOP = MOTO = MOP = MOTO = MOP = MOTO = MOP = MOTO = MOP = MOTO = MOP) = MOP; 000001B0B3BEFB80; MF_TOPONODE_PRESENTATION_DESCRIPTOR = @ 000001B0B3BF45A0; MF_TOPONODE_STREAM_DESCRIPTOR = @ 000001B0B3BF4170; {9C27891A-ED7A-40E1-88E8-B22727A024EE} = 1 8000,229C 21: 51: 38.41145 CTopologyHelpers :: TraceObject @ Source @ 000001B0B3BEFB80 {00000000-0000-0000-0000-000000000000} (C: \ Windows \ SYSTEM32 \ MFCORE.DLL), MFMEDIASOURCE_CHARACTERISTICS = 0x00000005 8000,229C 21: 51: 38.41147 CTopologyHelpers :: TraceStream @ Выходной поток 0, подключенные к узлу @ 000001B0B3C2B030 потока 0, МТ: MF_MT_FRAME_SIZE = 1374389534960 (320240); MF_MT_AVG_BITRATE = 36864000; MF_MT_YUV_MATRIX = 2; MF_MT_MAJOR_TYPE = MEDIATYPE_Video; MF_MT_VIDEO_LIGHTING = 3; MF_MT_DEFAULT_STRIDE = 640; MF_MT_VIDEO_CHROMA_SITING = 6; MF_MT_AM_FORMAT_TYPE = FORMAT_VIDEOINFO2; MF_MT_FIXED_SIZE_SAMPLES = 1; MF_MT_VIDEO_NOMINAL_RANGE = 2; MF_MT_FRAME_RATE = 128849018881 (30,1); MF_MT_PIXEL_ASPECT_RATIO = 4294967297 (1,1); MF_MT_ALL_SAMPLES_INDEPENDENT = 1; MF_MT_FRAME_RATE_RANGE_MIN = 128849018881 (30,1) ; MF_MT_SAMPLE_SIZE = 153600; MF_MT_VIDEO_PRIMARIES = 2; MF_MT_INTERLACE_MODE = 2; MF_MT_FRAME_RATE_RANGE_MAX = 128849018881 (30,1); MF_MT_SUBTYPE = MФ 8000,229C 21: 51: 38.41147 CTopologyHelpers :: TraceNode @ Node 1 @ 000001B0B3C2B030 ID: 1F4000000003, 1 вход, 2 выхода, тип 3, MF_TOPONODE_PRIMARYOUTPUT = 0; {9C27891A-ED7A-40242221 = 8E1E8 = 81E8 = 81E8 = 88 8000,229C 21: 51: 38.41148 CTopologyHelpers :: TraceObject @ Tee @ 0000000000000000 {00000000-0000-0000-0000-000000000000} ((ноль)), (ноль) 8000,229C 21: 51: 38.41149 CTopologyHelpers :: TraceStream @ 0 входного потока, подключенный к узлу @ 000001B0B3C00430 потока 0, МТ: MF_MT_FRAME_SIZE = 1374389534960 (320240); MF_MT_AVG_BITRATE = 36864000; MF_MT_YUV_MATRIX = 2; MF_MT_MAJOR_TYPE = MEDIATYPE_Video; MF_MT_VIDEO_LIGHTING = 3; MF_MT_DEFAULT_STRIDE = 640; MF_MT_VIDEO_CHROMA_SITING = 6; MF_MT_AM_FORMAT_TYPE = FORMAT_VIDEOINFO2; MF_MT_FIXED_SIZE_SAMPLES = 1; MF_MT_VIDEO_NOMINAL_RANGE = 2; MF_MT_FRAME_RATE = 128849018881 (30,1); MF_MT_PIXEL_ASPECT_RATIO = 4294967297 (1,1); MF_MT_ALL_SAMPLES_INDEPENDENT = 1; MF_MT_FRAME_RATE_RANGE_MIN = 128849018881 (30,1) ; MF_MT_SAMPLE_SIZE = 153600; MF_MT_VIDEO_PRIMARIES = 2; MF_MT_INTERLACE_MODE = 2; MF_MT_FRAME_RATE_RANGE_MAX = 128849018881 (30,1); MF_MT_SUBTYPE = MФ 8000,229C 21: 51: 38.41151 CTopologyHelpers :: TraceStream @ Выходной поток 0, подключенные к узлу @ 000001B0B3C2ADB0 потока 0, МТ: MF_MT_FRAME_SIZE = 1374389534960 (320240); MF_MT_AVG_BITRATE = 36864000; MF_MT_YUV_MATRIX = 2; MF_MT_MAJOR_TYPE = MEDIATYPE_Video; MF_MT_VIDEO_LIGHTING = 3; MF_MT_DEFAULT_STRIDE = 640; MF_MT_VIDEO_CHROMA_SITING = 6; MF_MT_AM_FORMAT_TYPE = FORMAT_VIDEOINFO2; MF_MT_FIXED_SIZE_SAMPLES = 1; MF_MT_VIDEO_NOMINAL_RANGE = 2; MF_MT_FRAME_RATE = 128849018881 (30,1); MF_MT_PIXEL_ASPECT_RATIO = 4294967297 (1,1); MF_MT_ALL_SAMPLES_INDEPENDENT = 1; MF_MT_FRAME_RATE_RANGE_MIN = 128849018881 (30,1) ; MF_MT_SAMPLE_SIZE = 153600; MF_MT_VIDEO_PRIMARIES = 2; MF_MT_INTERLACE_MODE = 2; MF_MT_FRAME_RATE_RANGE_MAX = 128849018881 (30,1); MF_MT_SUBTYPE = MФ 8000,229C 21: 51: 38.41152 CTopologyHelpers :: TraceStream @ Выходной поток 1, подключенный к узлу @ 000001B0B3C29130 потока 0, МТ: MF_MT_FRAME_SIZE = 1374389534960 (320240); MF_MT_AVG_BITRATE = 36864000; MF_MT_YUV_MATRIX = 2; MF_MT_MAJOR_TYPE = MEDIATYPE_Video; MF_MT_VIDEO_LIGHTING = 3; MF_MT_DEFAULT_STRIDE = 640; MF_MT_VIDEO_CHROMA_SITING = 6; MF_MT_AM_FORMAT_TYPE = FORMAT_VIDEOINFO2; MF_MT_FIXED_SIZE_SAMPLES = 1; MF_MT_VIDEO_NOMINAL_RANGE = 2; MF_MT_FRAME_RATE = 128849018881 (30,1); MF_MT_PIXEL_ASPECT_RATIO = 4294967297 (1,1); MF_MT_ALL_SAMPLES_INDEPENDENT = 1; MF_MT_FRAME_RATE_RANGE_MIN = 128849018881 (30,1) ; MF_MT_SAMPLE_SIZE = 153600; MF_MT_VIDEO_PRIMARIES = 2; MF_MT_INTERLACE_MODE = 2; MF_MT_FRAME_RATE_RANGE_MAX = 128849018881 (30,1); MF_MT_SUBTYPE = MФ 8000,229C 21: 51: 38.41153 CTopologyHelpers :: TraceNode @ Узел 2 @ 000001B0B3C2ACF0 ID: 1F4000000002, 1 входы, выходы 0, тип 0, MF_TOPONODE_STREAMID = 0; MF_TOPONODE_NOSHUTDOWN_ON_REMOVE = 0; MF_TOPONODE_TRANSFORM_OBJECTID = {D23E6477-B104-4707-81CB-E1CA19A07016 }; {9C27891A-ED7A-40E1-88E8-B22727A024EE} = 1; {B8AA3129-DFC9-423A-8ACD-1D82850A3D1F} = @ 000001B0B3C27370 8000,229C 21: 51: 38.41153 CTopologyHelpers :: TraceObject @ Sink @ 000001B0B3C2A048 {D23E6477-B104-4707-81CB-E1CA19A07016} (C: \ Windows \ SYSTEM32 \ MF.dll), (ноль) 8000,229C 21: 51: 38.41153 CTopologyHelpers :: TraceStream @ Входной поток 0, подключенный к узлу @ 000001B0B3C2ADB0 поток 0, MT:> 8000,229C 21: 51: 38.41154 CTopologyHelpers :: TraceNode @ Node 3 @ 000001B0B3C2ADB0 ID: 1F4000000008, 1 вход, 1 выход, тип 2, MF_TOPONODE_TRANSFORM_OBJECTID = {CF862982-23B0-4E3D8F0AF 86A8F-87F-87F-87F-87F-87F-87F-87F-87F-87F-87F-87F-87F-8-RU-86-RU-86-RU-86-RU-86-RU-86-RU-86-RU-8-RU-86-RU-8-RU-86-D8F-8-RU-8-D-8-D-86-D-87-D-8-D-87-D-87-D-87-D-87-D-86-D-86-D-8-D-86-D-8-C-86-D-8-C-86-D-8-C-86-D-8-D-86-D-8-C-86 все же -88E8-B22727A024EE} = 1 8000,229C 21: 51: 38.41155 CTopologyHelpers :: TraceObject @ MFT @ 000001B0B3C2B0F0 {CF862982-23B0-4E3D-8C76-D03FEF084AF8} (C: \ Windows \ system32 \ MFCORE.DLL), MFT_SUPPORT_DYNAMIC_FORMAT_CHANGE = 1; {9C27891A-ED7A-40E1 -88E8-B22727A024EE} = 1 8000,229C 21: 51: 38.41156 CTopologyHelpers :: TraceStream @ 0 входного потока, подключенный к узлу @ 000001B0B3C2B030 потока 0, МТ: MF_MT_FRAME_SIZE = 1374389534960 (320240); MF_MT_AVG_BITRATE = 36864000; MF_MT_YUV_MATRIX = 2; MF_MT_MAJOR_TYPE = MEDIATYPE_Video; MF_MT_VIDEO_LIGHTING = 3; MF_MT_DEFAULT_STRIDE = 640; MF_MT_VIDEO_CHROMA_SITING = 6; MF_MT_AM_FORMAT_TYPE = FORMAT_VIDEOINFO2; MF_MT_FIXED_SIZE_SAMPLES = 1; MF_MT_VIDEO_NOMINAL_RANGE = 2; MF_MT_FRAME_RATE = 128849018881 (30,1); MF_MT_PIXEL_ASPECT_RATIO = 4294967297 (1,1); MF_MT_ALL_SAMPLES_INDEPENDENT = 1; MF_MT_FRAME_RATE_RANGE_MIN = 128849018881 (30,1) ; MF_MT_SAMPLE_SIZE = 153600; MF_MT_VIDEO_PRIMARIES = 2; MF_MT_INTERLACE_MODE = 2; MF_MT_FRAME_RATE_RANGE_MAX = 128849018881 (30,1); MF_MT_SUBTYPE = MФ 8000,229C 21: 51: 38.41158 CTopologyHelpers :: TraceStream @ Выходной поток 0, подключенные к узлу @ 000001B0B3C2ACF0 потока 0, МТ: MF_MT_FRAME_SIZE = 1374389534960 (320240); MF_MT_AVG_BITRATE = 36864000; MF_MT_YUV_MATRIX = 2; MF_MT_MAJOR_TYPE = MEDIATYPE_Video; MF_MT_VIDEO_LIGHTING = 3; MF_MT_DEFAULT_STRIDE = 640; MF_MT_VIDEO_CHROMA_SITING = 6; MF_MT_AM_FORMAT_TYPE = FORMAT_VIDEOINFO2; MF_MT_FIXED_SIZE_SAMPLES = 1; MF_MT_VIDEO_NOMINAL_RANGE = 2; MF_MT_FRAME_RATE = 128849018881 (30,1); MF_MT_PIXEL_ASPECT_RATIO = 4294967297 (1,1); MF_MT_ALL_SAMPLES_INDEPENDENT = 1; MF_MT_FRAME_RATE_RANGE_MIN = 128849018881 (30,1) ; MF_MT_SAMPLE_SIZE = 153600; MF_MT_VIDEO_PRIMARIES = 2; MF_MT_INTERLACE_MODE = 2; MF_MT_FRAME_RATE_RANGE_MAX = 128849018881 (30,1); MF_MT_SUBTYPE = MФ 8000,229C 21: 51: 38.41159 CTopologyHelpers :: TraceNode @ Узел 4 @ 000001B0B3C29130 ID: 1F4000000004, 1 входы, выходы 0, тип 0, MF_TOPONODE_STREAMID = 0; MF_TOPONODE_NOSHUTDOWN_ON_REMOVE = 0; {9C27891A-ED7A-40E1-88E8-B22727A024EE} = 1 8000,229C 21: 51: 38.41159 Атрибут CMFTopologyNodeDetours :: GetGUID @ 000001B0B3C29130 не найден guidKey = MF_TOPONODE_TRANSFORM_OBJECTID 8000,229C 21: 51: 38.41159 CTopologyHelpers :: TraceObject @ UnknownType @ 0000000000000000 {00000000-0000-0000-0000-000000000000} ((ноль)), (ноль) 8000,229C 21: 51: 38.41159 CTopologyHelpers :: TraceStream @ Входной поток 0, подключенный к узлу @ 000001B0B3C2B030 поток 1, MT:> 8000,229C 21: 51: 38.41159 CTopologyHelpers :: Trace @ 000001B0B3C2A8E0 MF_TOPOLOGY_RESOLUTION_STATUS = 0 8000,229C 21: 51: 38.41159 CTopologyHelpers :: Trace @ 000001B0B3C2A8E0
Раковина Писатель не является допустимым объектом, который должен быть указан для Выходной узел. Единственными двумя действительными объектами для этого являются IMFStreamSink
а также IMFActivate
,
Однажды IMFStreamSink
был правильно создан и настроен, все остальное начало работать как шарм.
Шаги для создания IMFStreamSink
для использования в узле SetObject()
вызов:
IMFByteStream
(например, через MFCreateFile()
)IMFMediaSink
на основании этого IMFByteStream
и настроить его (описано в MSDN)GetStreamSinkById()
получить IMFStreamSink
объект — это тот, который используется в узле SetObject()
вызов!Других решений пока нет …