解析h.264的char*数据
Parsing char* data of h.264
我有一个二进制数据的char*数组。
它是用h.264编码的二进制媒体流。
它有下一个结构:。。。
stream_header是64字节结构。
我已经做了interpret_cast(charArray),其中charArray表示流的前64个字节。我已成功获取所有标头数据。在这个头中有一个nLength变量,它告诉我们下一个stream_data中有多少字节的媒体数据。
例如1024字节。
我在char*数据数组中读取了接下来的1024个字节,我的问题从这里开始:我如何从这个视频帧的数据集中获取(在结构中,我有关于这些帧的分辨率的信息),并将其保存在*.jpg文件中,如(1.jpg 2.jpg 3.jpg…)
也许有人已经做了类似的事情???帮助我plz…
您需要一个H264解码器库,最好的选择是ffmpeg
但即便如此,使用库也有点复杂——尽管解码更简单,因为你需要担心的选项更少。
你真的需要在程序中这样做吗?使用"ffmpeg"可执行文件将视频保存为jpegs 非常简单
如果您只想从视频文件中获得一系列JPEG,GStreamer可以做到这一点。
如果你想从头开始编写代码,将H.264视频转换为JPEG,我要提醒你,你有数百页的规范文档和一些非常严肃的数学知识需要理解和实现。对于一个相当熟练的程序员和数学家来说,这将是数月的工作。理解MP4格式是容易的部分,视频压缩会让你大吃一惊。
相关文章:
- 使用 char* 存储数据和产生的错误
- 将传入的网络"char*"数据转换为"uint8_t"并返回的安全方法是什么?
- 有效地将数据加载到 std::vector 中<char>
- 从 std::string 到 std::array<char,size> 的 memcopy 额外数据是否是一种未定义的行为?
- 如何正确使用 fstream 并在 char 数组中传递数据?
- 从带有 std::ifstream::read() 的文件中读取 int 遍历 char * 二进制数据
- Arduino 无法匹配 Char 数据
- 访问时 Char* 数据会发生变化
- 如何将OpenCV垫子转换为JPEG CHAR数据
- 将JPEG CHAR数据转换为OpenCV垫子
- 如何将char数据附加到std :: vector而不会导致副本
- 如何在忽略 null 的同时将数据从 char [] 复制到常量字符 *
- 缓冲区用不需要的数据填充 char 数组中的最后一个空格
- 从循环返回char函数数据
- 预安装库中的常见数据类型(Int、Char 等)大写
- 将数据从 vector<unsigned char> 传输到无符号 char[]
- 将包含位字段和动态数据的结构复制到 Char 数组缓冲区中
- 如何使用boost.asio读取整个Char类型的数据
- 数据结构对齐:为什么Char和STD :: String的数组不同
- Python如何通过SWIG从c++获取二进制数据(char*)