Есть очень большая вероятность, что я иду по этому бессмысленному пути, поэтому я прошу прощения, если это пустая трата времени. Я пытался записать несжатое видео в файл FLV, и я не уверен, возможно ли это.
Согласно Википедии допустимым параметром кодирования видео является 0, что указывает на кодирование видео «RGB»: https://en.wikipedia.org/wiki/Flash_Video#Packets. Однако я не вижу упоминания об этой опции Codec ID в документации Adobe; ни «Спецификация формата видеофайла версии 10», ни «Спецификация формата видеофайла Adobe Flash версии 10.1».
Я исходил из предположения, что идентификатор кодека 0/RGB разрешен. Я жестко закодировал массив беззнаковых символов в C и использовал fwrite для записи следующих метаданных Double/Number в новый двоичный FLV-файл (который, по общему признанию, я предполагаю, что написал правильно):
- продолжительность: 4 (секунды)
- ширина: 16 (пикселей)
- высота: 16 (пикселей)
- скорость передачи видео: 6 (Кбит/с)
- частота кадров: 1 (кадр/с)
- видеокодецид: 0
- Размер файла: 3323 (байт)
Затем я добавил 4 тега VIDEODATA, по 1 для каждого кадра RGB, который я надеялся записать. Их временные метки: 0, 1000, 2000 и 3000 (миллисекунд). Все четыре из них имеют 769-байтовую полезную нагрузку: первый байт, указывающий, что это ключевой кадр с идентификатором кодека 0, а остальные 768 должны представлять изображение 16x16x3 (RGB). Я написал 255/0xFF для всех значений в надежде увидеть маленький белый экран на 4 секунды.
Когда это не воспроизводилось правильно в VLC Media Player, как я и опасался, я попытался использовать цвета RGBA для каждого кадра. Я также изменил метаданные скорости видеоданных и размера файла на числовые значения 8 (кбит/с) и 4347 (байты) соответственно.
К сожалению, это также не воспроизводилось в VLC Media Player. Мне было интересно, знает ли кто-нибудь наверняка, возможно ли несжатое видео в файле FLV? Если да, то мне было любопытно, в каком формате должны быть видеоданные (RGB, RGBA, несколько тегов VIDEODATA, только один тег VIDEODATA и т. д.)?
Мой код C в основном состоит из одного гигантского массива беззнаковых символов, но если кто-то хочет его увидеть, я могу попробовать его добавить. Любые советы высоко ценится.
Спасибо,
Митчелл А