У меня есть приложение, которое отправляет необработанные NALU h264, созданные в результате кодирования на лету с использованием x264 x264_encoder_encode. Я получаю их через простой TCP, поэтому я не пропускаю ни одного кадра. Мне нужно иметь возможность декодировать такой поток в клиенте с помощью аппаратного ускорения в Windows (DXVA2). Я изо всех сил пытался найти способ заставить это работать с помощью FFMPEG. Возможно, будет проще попробовать Media Foundation или DirectShow, но сырой H264 они не возьмут. Мне либо нужно:
Измените код серверного приложения, чтобы вернуть поток mp4. У меня нет опыта работы с x264. Я смог получить необработанный H264, вызвав x264_encoder_encode, следуя ответу на этот вопрос: Как можно закодировать серию изображений в H264 с помощью x264 C API? Как я могу перейти от этого к чему-то, что завернуто в MP4 при этом все еще имея возможность транслировать его в режиме реального времени
Я мог бы в приемнике обернуть его заголовками mp4 и передать во что-то, что может воспроизвести его с помощью DXVA. Я бы не знал, как это сделать
Я мог бы найти другой способ ускорить его, используя DXVA с FFMPEG или что-то еще, что принимает его в необработанном формате.
Важным ограничением является то, что мне нужно иметь возможность предварительной обработки каждого декодированного кадра перед его отображением. Любое решение, которое выполняет декодирование и отображение за один шаг, не сработает для меня.
меня бы устроило любое решение
DXVA
в основном предполагают, что видео предоставляется пользователю, а не считывается обратно в оперативную память из видеопамяти. Будьте готовы к тому, что чтение из видеопамяти может оказаться неожиданно медленным и убить всю идею быстрого аппаратного декодирования для целей, отличных от презентации. - person Roman R.   schedule 01.05.2012