У меня проблема с генерацией потока FLV. Я разработал систему DVR, и она должна иметь возможность передавать потоковое видео в формате FLV (для воспроизведения на Actionscript NetStream ). Я получаю видео от кодировщика в необработанных единицах NAL H264 (0x00 0x00 0x00 0x01 ), также я могу распознать закодированный кадр IDR или не -IDR.
Мое решение для создания потока FLV (на основе спецификации Adobe :Спецификация формата видеофайла версии 10 )было :
Стрим выглядит хорошо, и его можно воспроизводить с помощью ffplay, mplayer, vlc и т. д. Но не воспроизводится плеером на основе Actionscript NetStream.
Итак, я получил необработанные данные h264 и преобразовал их в FLV с помощью ffmpeg :
. ffmpeg -f h264 -i d1.h264 -копия vcodec -f flv d1.flv
и попытайтесь сравнить как flv, так и ffmpeg.
Прежде всего, я вижу, что ffmpeg добавляет заголовок последовательности AVC сразу после заголовка FLV. Я начал делать то же самое, но NetStream по-прежнему не поддерживает мой поток, а также другие плееры перестали его воспроизводить.
Хорошо, тогда я продолжу сравнивать flv. Теперь я вижу, что заголовки блоков NAL в закодированном ffmpeg FLV немного изменились, но я не могу понять, в чем смысл изменений. Я прочитал много спецификаций, но ничего полезного. Кто-нибудь может прояснить мне это?
Например, мои блоки NAL выглядят так :00 00 00 01 XX XX... -для всех блоков
FFmpeg NAL :00 00 [14 ВА] 61 9А...-не IDR (двухбайтовая переменная )00 00 [7A 02] 65 88... -IDR (двухбайтовая переменная )00 00 00 40 06 05... -СЭИ
Там добавлен какой-то счетчик или что-то еще?
Буду рад любым идеям, ссылкам и т.д.