首页 > 解决方案 > 将未压缩视频写入 FLV 文件的可行性

问题描述

我很有可能会走上一条毫无意义的道路,所以如果这是浪费时间,我深表歉意。我一直在尝试将未压缩的视频写入 FLV 文件,但不确定是否可行。

根据维基百科,有效的视频编码选项为 0,表示“RGB”视频编码:https ://en.wikipedia.org/wiki/Flash_Video#Packets 。但是,我在 Adob​​e 的文档中没有看到任何提及此 Codec ID 选项的内容。既不是“视频文件格式规范第 10 版”也不是“Adobe Flash 视频文件格式规范第 10.1 版”。

我假设允许使用 0/RGB 编解码器 ID。我在 C 中硬编码了一个 unsigned char 数组,并使用 fwrite 将以下 Double/Number 元数据写入一个新的二进制 FLV 文件(诚然,我假设我写得正确):

然后我添加了 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 数组,但如果有人想查看它,我可以尝试添加它。任何意见是极大的赞赏。

谢谢,

米切尔一个

标签: cbinary-dataflvvideo-codecsflash-video

解决方案


根据 SirDarius,“维基百科页面中列出的视频编码类型并非来自官方来源。我不建议依赖这些。” 这是有道理的,因为 Adob​​e 本身的 FLV 格式文档没有提到视频编码的未压缩 RGB 选项。

我一直希望维基百科的编辑和其他人知道一些 FLV 格式的未记录的复活节彩蛋,但我现在确信情况并非如此。


推荐阅读