需要从硬压卡上获取的NALU封装成RTMP协议格式发送给RED5/FMS进行实时发布.
RTMP中传送 H.264使用的视频封装格式既是 FLV规范 中的 VideoTag
Frame Type UB [4]
Type of video frame. The following values are defined:
1 = key frame (for AVC, a seekable frame)
2 = inter frame (for AVC, a non-seekable frame)
3 = disposable inter frame (H.263 only)
4 = generated key frame (reserved for server use only)
5 = video info/command frame
CodecID UB [4]
Codec Identifier. The following values are defined:
2 = Sorenson H.263
3 = Screen video
4 = On2 VP6
5 = On2 VP6 with alpha channel
6 = Screen video version 2
7 = AVC
AVCPacketType F UI8
The following values are defined:
0 = AVC sequence header
1 = AVC NALU
2 = AVC end of sequence (lower level NALU sequence ender is
not required or supported)
CompositionTime SI24
IF AVCPacketType == 1
Composition time offset
ELSE
0
See ISO 14496-12, 8.15.3 for an explanation of composition
times. The offset in an FLV file is always in milliseconds.
在第一个RTMP Message的数据包中,需要发送 AVC sequence header, 也就是AVCDecoderConfigurationRecord
其中就包含有Profile / Level / SPS / PPS 等解码需要的信息
然后就开始发送NALU了。
NALU在一个RTMP Message可以发送1个或者多个。
根据 NALU的 reference idc 可以得出 帧类型
- typedef enum {
- NALU_PRIORITY_HIGHEST = 3,
- NALU_PRIORITY_HIGH = 2,
- NALU_PRIORITY_LOW = 1,
- NALU_PRIORITY_DISPOSABLE = 0
- } NaluRefIdc;
如果这个 VideoTag中含有 NALU_PRIORITY_HIGHEST 的NALU, 那么它的VideoTag的 Frame Type 应该是 FrameType_KeyFrame
- enum FrameType
- {
- FrameType_KeyFrame = 1,
- FrameType_InterFrame = 2,
- FrameType_DisposableInterFrame = 3,
- FrameType_GeneratedKeyFrame = 4,
- FrameType_VideoInfo = 5,
- };
分享到:
相关推荐
H264Visa是一个与视频编码相关的主题,特别是与H.264视频编码标准有关。H.264,也称为AVC(Advanced Video Coding),是目前广泛应用的视频压缩标准之一,广泛用于高清电视、网络流媒体、视频会议、手机视频等多种...
1. **帧类型识别**:H264支持I帧(关键帧)、P帧(前向预测帧)和B帧(双向预测帧)。分析器可以清晰地标识出每个帧的类型,这对于理解和优化视频压缩流程至关重要。 2. **宏块分析**:H264将视频帧划分为多个宏块...
《基于VC++实现的H264视频播放器解析与实现》 在现代数字媒体领域,H264编码技术因其高效的数据压缩能力和卓越的画质表现,被广泛应用于视频编码标准之中。本文将深入探讨如何利用VC++编程语言开发一个能够解码并...
在数字视频编码领域,H264(也称为AVC,Advanced Video Coding)是一种广泛应用的高效视频压缩标准。它能够以较低的比特率提供高质量的视频流,因此在互联网视频、电视广播、移动通信等领域占据主导地位。为了确保H...
在数字媒体领域,H264,也称为AVC(Advanced Video Coding),是一种高效能的视频编码标准,广泛应用于高清视频、在线流媒体、视频会议、监控系统等多个场景。了解如何判断一个文件是否为H264编码以及解析其属性对于...
在IT领域,尤其是在多媒体处理和视频编码中,H264是一种广泛应用的高效视频编码标准。C++作为一种强大的编程语言,被广泛用于开发复杂的软件系统,包括视频处理和解析。本篇将深入探讨如何使用C++解析H264文件。 ...
H264是一种高效视频编码标准,而MP4则是广泛使用的容器格式,可以包含多种类型的音视频流。在这个场景中,我们有一个名为`h264ToMP4.jar`的Java应用程序,它很可能是一个预编译的可执行JAR文件,用于将H264编码的...
通过H264Visa,我们可以查看每个NAL单元的类型、起始码、长度,以及解码后的宏块信息,这对于调试和优化编码参数至关重要。 H264Visa的使用方法通常包括以下步骤: 1. **导入H264码流**:首先,你需要将包含H264...
1. **解析H264流**:首先,我们需要读取H264的原始数据,识别NAL单元并解析其头信息,如NAL类型、序列参数集(SPS)、图像参数集(PPS)等。 2. **创建MP4结构**:根据H264的SPS和PPS信息,生成MP4的AVC配置记录...
此外,h264_parse还能够分析出视频帧的类型,包括I帧(Intra Coded Frame)、P帧(Predicted Frame)和B帧(Bi-directionally predicted Frame)。I帧是独立编码的帧,而P帧和B帧依赖于前后的I帧或P帧进行预测编码,...
《H264Visa 1.16:强大的H264实时分析工具详解》 在现代多媒体技术中,H264编码标准扮演着至关重要的角色,它以其高效的数据压缩能力,广泛应用于视频编码、传输和播放。为了帮助开发者和学习者深入理解和优化H264...
《H264帧分析工具Elecard:深入解析与应用》 H264帧分析工具Elecard是一款专业且高效的应用程序,专为视频编码和解码领域的专家以及技术爱好者设计,它提供了一种直观的方式来分析和理解H264视频流的结构。H264,...
在提取H264码流时,确保所有类型的NAL单元都被正确处理非常重要。 6. **解码与播放** 获取到H264裸码流后,可以使用FFmpeg等工具将其解码并保存为视频文件,或者直接推送到解码器进行播放。解码过程中需要注意NAL...
"H264裸流帧解码器"就是这样的工具,它能够将H264编码的裸流帧转化为可以被处理的图像格式,例如OpenCV库中的Iplimage类型。 OpenCV是一个广泛使用的开源计算机视觉库,支持图像处理和机器学习等功能。Iplimage是...
本项目提供了一个Android H264解码库,该库特别之处在于支持三种不同的数据类型输出,使得开发者可以根据具体需求灵活选择。 1. **H264解码库概述** H264解码库是用于将H264编码的比特流转换为原始图像数据的关键...
在IT行业中,视频编码技术是不可或缺的一部分,尤其是H264和H265编码标准,它们在视频压缩和传输领域扮演着重要角色。本文将详细介绍三款码流分析工具——Elecard HEVC Analyzer,Elecard StreamEye Tools以及H264...
《深入解析Elecard H264分析工具》 在音视频处理领域,H.264编码技术因其高效能和高画质而被广泛应用。为了更深入地理解并优化H.264码流,开发者通常需要借助专业的分析工具。Elecard H264.zip就是一款针对H.264码...
2. **帧类型识别**:H264编码的帧有I帧、P帧和B帧三种类型。I帧是无依赖性的,可以直接解码显示;P帧依赖于前面的I或P帧;B帧则依赖于前后两帧。播放器需要正确识别这些帧类型,以便于解码流程。 3. **宏块解码**:...
本项目“ps提取h264源码”提供了一个Java实现的工具,可以将包含H264编码的PS流解析并提取出原始的H264 NAL单元(Network Abstraction Layer Unit),这些NAL单元是H264编码的核心组成部分。NAL单元包含了视频帧的...