我很有可能会走上一条毫无意义的道路,所以如果这是浪费时间,我深表歉意。我一直在尝试将未压缩的视频写入 FLV 文件,但不确定是否可行。
根据维基百科,有效的视频编码选项为 0,表示“RGB”视频编码:https ://en.wikipedia.org/wiki/Flash_Video#Packets 。但是,我在 Adobe 的文档中没有看到任何提及此 Codec ID 选项的内容。既不是“视频文件格式规范第 10 版”也不是“Adobe Flash 视频文件格式规范第 10.1 版”。
我假设允许使用 0/RGB 编解码器 ID。我在 C 中硬编码了一个 unsigned char 数组,并使用 fwrite 将以下 Double/Number 元数据写入一个新的二进制 FLV 文件(诚然,我假设我写得正确):
- 持续时间:4(秒)
- 宽度:16(像素)
- 高度:16(像素)
- 视频数据速率:6 (Kbps)
- 帧率:1 (fps)
- 视频编解码器:0
- 文件大小:3323(字节)
然后我添加了 4 个 VIDEODATA 标签,每个我希望写入的 RGB 帧 1 个。它们的时间戳是 0、1000、2000 和 3000(毫秒)。它们都有一个 769 字节的有效载荷:第一个字节指定它是一个 Codec ID 为 0 的关键帧,其余的 768 个用于表示 16x16x3 (RGB) 图像。我为所有值写了 255/0xFF,希望看到一个小的白色屏幕出现 4 秒。
当我担心在 VLC 媒体播放器中无法正确播放时,我尝试为每一帧使用 RGBA 颜色。我还将 videodatarate 和 filesize 元数据分别更改为数值 8 (Kbps) 和 4347 (bytes)。
不幸的是,这也没有在 VLC 媒体播放器中播放。我想知道是否有人确定 FLV 文件中的未压缩视频是否可行?如果是这样,我很好奇视频数据应该是什么格式(RGB、RGBA、多个 VIDEODATA 标签、只有一个 VIDEODATA 标签等)?
我的 C 代码主要是一个巨大的 unsigned char 数组,但如果有人想查看它,我可以尝试添加它。任何意见是极大的赞赏。
谢谢,
米切尔一个