2012-04-29 5 views
2

У меня есть приложение, которое отправляет необработанные NALU h264, созданные с помощью кодирования «на лету», используя x264 x264_encoder_encode. Я получаю их через простой TCP, поэтому я не пропускаю никаких кадров. Мне нужно иметь возможность декодировать такой поток в клиенте с помощью Hardware Acceleration в Windows (DXVA2). Я изо всех сил пытаюсь найти способ заставить это работать с использованием FFMPEG. Возможно, может быть проще попробовать Media Foundation или DirectShow, но они не возьмут необработанный H264. мне нужно либо:Оберните поток необработанных H264 NALU в контейнер, например MP4

  1. Изменить код из серверного приложения, чтобы вернуть поток mp4. Я не так разбираюсь в x264. Я был в состоянии получить сырой H264 по телефону x264_encoder_encode, следуя ответ на этот вопрос: How does one encode a series of images into H264 using the x264 C API? Как я могу перейти от этого к чему-то, что завернутые в MP4, все еще будучи в состоянии транслировать его в режиме реального времени

  2. я мог бы в приемник обертывает его заголовками mp4 и передает его во что-то, что может воспроизводить его с помощью DXVA. Я бы не знал, как это сделать

  3. Я мог бы найти другой способ ускорить его, используя DXVA с FFMPEG или что-то еще, что берет его в необработанном формате.

Важным ограничением является то, что мне нужно иметь возможность предварительно обработать каждый декодированный кадр перед его отображением. Любое решение, которое декодирование и отображение на одном этапе не будет работать для меня

я бы хорошо ни с раствором

+1

Красота и скорость 'DXVA' в основном предполагают, что видео представлено пользователю и не считывается обратно в ОЗУ из видеопамяти. Будьте готовы к тому, что чтение из видеопамяти может показаться неожиданно медленным и убить всю идею быстрого аппаратного декодирования для целей, отличных от презентации. –

+0

Да ... Я думаю, что я хочу принять этот факт сейчас. Есть ли в любом случае предварительная обработка кадров на каком-то этапе с помощью DXVA. Возможно, вы пишете фильтр медиа-фондов или что-то в этом роде? – cloudraven

ответ

2

Я считаю, что вы должны быть в состоянии использовать пакеты H.264 с провода с Фондом Медиа. есть пример на стр. 298 этой книги http://www.docstoc.com/docs/109589628/Developing-Microsoft-Media-Foundation-Applications#, который использует поток HTTP с Media Foundation.

Я только сам изучаю Media Foundation и пытаюсь сделать с вами подобную вещь, в моем случае я хочу использовать H.264-полезную нагрузку из пакета RTP, и из моего понимания, что потребует пользовательский IMFSourceReader. Доступ к декодированным фреймам также должен быть возможен из того, что я читал, поскольку существует полная гибкость в объединении компонентов вместе в топологии.

+0

спасибо за ссылку. эта книга довольно хороша. Я уверен, что если я создам трансформацию медиа-фонда, я смогу сделать то, что хочу. Я еще не сделал, но кажется многообещающим – cloudraven