У меня есть поток H264 (IIS - плавная потоковая передача), который я хотел бы воспроизвести с помощью SilverLight. Судя по всему SilverLight может, но как?
Примечание: SilverLight может воспроизводить поток VC-1, а H264 - нет.
Кроме того, я могу предоставить поток и любую дополнительную информацию. Кодировщик H264 используется в Media Foundation (MFT). То же самое и с VC-1, который работает (хотя невозможно создать равные фрагменты для плавной потоковой передачи, потому что принудительная вставка ключевых кадров делает видео рывками.
EDIT: значения MPEG2VIDEOINFO для H264: b >
Как воспроизвести поток H264 с SilverLight?
Ответы (2)
Просто предположение. Основываясь на вашем вопросе 18009152. Я предполагаю, что вы кодируете h.264, используя формат битового потока Annexb. Согласно комментариям, вы не можете указать кодировщику использовать формат AVCC. Следовательно, вы должны выполнить это преобразование вручную (Приложение B НЕ БУДЕТ работать в контейнере ISO). Вы можете сделать это, ища стартовые коды в своем потоке AVC. Начальный код составляет 3 или 4 байта (0x000001, 0x00000001). Вы можете узнать длину NALU, указав следующий начальный код или конец потока. Удалите начальный код (выбросьте его) и вместо него напишите размер NALU в 32-битном целочисленном big endian. Затем запишите эти данные в контейнер. Для ясности: это выполняется с видеокадрами, которые выходят из кодировщика. Дополнительные данные - это отдельный шаг, который, кажется, вы в основном выяснили (за исключением NALUSizeLength). Поскольку мы используем 4-байтовое целое число для записи размеров NALU, вы ДОЛЖНЫ установить для NALUSizeLength значение 4.
Silverlight 3 может воспроизводить файлы H264. Используйте для этого MediaStreamSource
.
Вот описание интерфейса: http://msdn.microsoft.com/en-us/library/system.windows.media.mediastreamsource(v=vs.95).aspx
Кроме того, эта запись в блоге связана с игрой H264 в Silverlight 3: http://nonsenseinbasic.blogspot.ru/2011/05/silverlights-mediastreamsource-some.html Это поможет вам с другими проблемами, которые могут возникнуть.
MediaStreamSource
- person Sergey K.; 08.08.2013