1. nalu_unit_type = *((unsigned char *)pEmptyBuf->bufVirtAddr+4); nalu_unit_type = nalu_unit_type&0x1F; if(nalu_unit_type<= 5 && nalu_unit_type>=1) { slice_sum ++; printf("%s:nalu_unit_type = %d ,frame_size = %d, frame_id = %d,sl…
解码器在解码时,首先逐个字节读取NAL的数据,统计NAL的长度,然后再开始解码. nal_unit( NumBytesInNALunit ) {  /* NumBytesInNALunit为统计出来的数据长度 */       forbidden_zero_bit    // forbidden_zero_bit  等于 0表示网络传输没有出错     nal_ref_idc //   指示当前 NAL 的优先级.取值范围为 0-3,  值越高,表示当前 NAL 越重要,需要优先受到保护.H.2…
H264码流打包分析 SODB 数据比特串-->最原始的编码数据 RBSP 原始字节序列载荷-->在SODB的后面填加了结尾比特(RBSP trailing bits 一个bit“1”)若干比特“0”,以便字节对齐. EBSP 扩展字节序列载荷-- >在RBSP基础上填加了仿校验字节(0X03)它的原因是: 在NALU加到Annexb上时,需要填加每组NALU之前的开始码 StartCodePrefix,如果该NALU对应的slice为一帧的开始则用4位字节表示,ox00000001,否…
( School of Computer Science & Technology, Soochow University,SuZhou 215006:) Abstract: H.264 is the newest video coding standard, and it will be widely used. In this article, the problem of the structure of coding streaming in H.264 is discussed. Fi…
一.MP4格式基本概念 MP4格式对应标准MPEG-4标准(ISO/IEC14496) 二.MP4封装格式核心概念 1  MP4封装格式对应标准为 ISO/IEC 14496-12(信息技术 视听对象编码的第12部分: ISO 基本媒体文件格式/Information technology Coding of audio-visual objects Part 12: ISO base media file format) 附-- 标准免费下载: Freely Available Standar…
转自:http://www.360doc.com/content/13/0124/08/9008018_262076786.shtml   SODB 数据比特串-->最原始的编码数据 RBSP 原始字节序列载荷-->在SODB的后面填加了结尾比特(RBSP trailing bits 一个bit“1”)若干比特“0”,以便字节对齐. EBSP 扩展字节序列载荷-- >在RBSP基础上填加了仿校验字节(0X03)它的原因是: 在NALU加到Annexb上时,需要填加每组NALU之前的开始码…
从Slice_Header学习H.264 写在前面: $     H.264我是结合标准和毕厚杰的书一块学的.看句法语义时最是头疼,一大堆的元素,很需要耐心.标准中在介绍某个元素的语义时,经常会突然冒出与之相关的另一个变量,这个变量一般都在前文中讲过,但那么多变量怎么可能看一遍就记住?这时我只能去前面重新找这个变量再看一遍.没办法,H.264这个庞大的结构内部肯定是环环相扣的,各个部分联系紧密,所以刚开始看时要搞明白H.264的主要细节以及相互间的关系不是特别容易,尤其看到一大堆不认识的变量时,…
补充笔记: 关于VCL:VCL层是指视频编码层,VCL NAL 单元是指那些nal_unit_type 值等于 1 到 5(包括 1 和 5)的 NAL 单元,这些单元都包含了视频数据.所有其他的 NAL 单元都称作非 VCL NAL 单元,PPS和SPS都是非VCLNAL单元.关于字节流NAL单元的格式:(起始码中0的长度)除了流开头的字节流NAL单元,大多字节流NAL单元的开头没有leading_zero_8bits (一个字节的0); nal_unit_type等于7(SPS)或8(PPS…
图像.帧.片.NALU 是学习 H.264的人常常感到困惑的一些概念,我在这里对自己的理解做一些阐述,欢迎大家讨论: H.264 是一次概念的革新,它打破常规,完全没有 I 帧.P帧.B 帧的概念,也没有 IDR帧的概念.对于 H.264中出现的一些概念从大到小排序依次是:序列.图像.片组.片.NALU.宏块.亚宏块.块.像素.这里有几点值得说明:(1).在 H.264协议中图像是个集合概念,顶场.底场.帧都可以称为图像(本文图像概念时都是集合概念).因此我们可以知道,对于H.264 协议来说,…
H.264 视频 RTP 负载格式 1. 网络抽象层单元类型 (NALU) NALU 头由一个字节组成, 它的语法如下: +---------------+      |0|1|2|3|4|5|6|7|      +-+-+-+-+-+-+-+-+      |F|NRI|  Type   |      +---------------+ F: 1 个比特.  forbidden_zero_bit. 在 H.264 规范中规定了这一位必须为 0. NRI: 2 个比特.  nal_ref_idc…
(四)图像参数集语义 pic_parameter_set_rbsp( ) {       // pic_parameter_set_id 用以指定本参数集的序号,该序号在各片的片头被引用.    pic_parameter_set_id       // seq_parameter_set_id  指明本图像参数集所引用的序列参数集的序号.     seq_parameter_set_id      // entropy_coding_mode_flag  指明熵编码的选择,本句法元素为0时,表…
OPTIONS rtsp://192.168.1.154:8557/h264 RTSP/1.0 CSeq: 1 User-Agent: VLC media player (LIVE555 Streaming Media v2010.05.28)  RTSP/1.0 200 OK CSeq: 1 Date: Sat, Jan 01 2000 00:05:11 GMT Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE  DESCRIBE…
http://blog.csdn.net/newthinker_wei/article/details/8997440 http://blog.csdn.net/dengzikun/article/details/5807694 基于RTP的H264视频数据打包解包类…
http://blog.csdn.net/bluebirdssh/article/details/6533501 http://blog.csdn.net/d_l_u_f/article/details/7260772 http://blog.csdn.net/sunnylgz/article/details/7680262 http://blog.csdn.net/heanyu/article/details/6204414…
#include "stdio.h"#include "stdlib.h"#include "malloc.h"#include "string.h"#include "sys/timeb.h"#include "math.h"#include "inf.h"#define MIN(a,b) ((a)<(b))?(a):(b);#define MAX(a,b)…
(1)live555 (2)gstreamer http://code.openhub.net/search?s=rtsp%20server (3)srs (4)ffmpeg…
转载地址:https://zhuanlan.zhihu.com/p/27896239 1 SPS和PPS从何处而来? 2 SPS和PPS中的每个参数起什么作用? 3 如何解析SDP中包含的H.264的SPS和PPS串? 1 客户端抓包 在做客户端视频解码时,一般都会使用Wireshark抓包工具对接收的H264码流进行分析,如下所示: 在这里我们可以看到对解码视频起关键作用的SPS和PPS. 双击SPS内容如下: 双击PPS内容如下: 那么从上面的sps中我们知道图像的宽,高. 宽=(19+1…
首先树莓派连上网络,并和电脑在同一网段. 树莓派的IP是: 192.168.3.13 电脑的IP是: 192.168.3.6 1.在树莓派上采集 H264裸流,并用UDP发送到电脑. pi@Neil-PI ~ $ raspivid -t 999999 -hf -o -| socat – udp-datagram:192.168.3.6:8080 如果没有安装 socat  ,需要先安装 apt-get install socat 2. 在电脑上用VLC观看 H264裸流 Google了好久,才找…
ffmpeg 从mp4上提取H264的nalu http://blog.csdn.net/gavinr/article/details/7183499 639     /* bitstream filters */640     REGISTER_BSF(AAC_ADTSTOASC,         aac_adtstoasc);641     REGISTER_BSF(CHOMP,                 chomp);642     REGISTER_BSF(DUMP_EXTRADA…
转自:http://blog.csdn.net/chen495810242/article/details/39207305 写在前面:RTP的解析,网上找了很多资料,但是都不全,所以我力图整理出一个比较全面的解析, 其中借鉴了很多文章,我都列在了文章最后,在此表示感谢. 互联网的发展离不开大家的无私奉献,我决定从我做起,希望大家支持. 1.RTP Header解析  图1 1)        V:RTP协议的版本号,占2位,当前协议版本号为2 2)        P:填充标志,占1位,如果P=…
写在前面:RTP的解析,网上找了很多资料,但是都不全,所以我力图整理出一个比较全面的解析, 其中借鉴了很多文章,我都列在了文章最后,在此表示感谢. 互联网的发展离不开大家的无私奉献,我决定从我做起,希望大家支持. 原创不易,转载请附上链接,谢谢http://blog.csdn.net/chen495810242/article/details/39207305 1.RTP Header解析   图1 1)        V:RTP协议的版本号,占2位,当前协议版本号为2 2)        P:…
写在前面:RTP的解析,网上找了很多资料,但是都不全,所以我力图整理出一个比较全面的解析, 其中借鉴了很多文章,我都列在了文章最后,在此表示感谢. 互联网的发展离不开大家的无私奉献,我决定从我做起,希望大家支持. 原创不易,转载请附上链接,谢谢http://blog.csdn.net/chen495810242/article/details/39207305 1.RTP Header解析   图1 1)        V:RTP协议的版本号,占2位,当前协议版本号为2 2)        P:…
H264码流结构分析 http://blog.csdn.net/chenchong_219/article/details/37990541 1.码流总体结构: h264的功能分为两层,视频编码层(VCL)和网络提取层(NAL).H.264 的编码视频序列包括一系列的NAL 单元,每个NAL 单元包含一个RBSP.一个原始的H.264 NALU 单元常由 [StartCode] [NALU Header] [NALU Payload] 三部分组成,其中 Start Code 用于标示这是一个NA…
实现输出h264直播流的rtmp服务器 RTMP(Real Time Messaging Protocol)是常见的流媒体协议,用来传输音视频数据,结合flash,广泛用于直播.点播.聊天等应用,以及pc.移动.嵌入式等平台,是做流媒体开发经常会接触到的协议.我之前曾经写过一篇文章“RTMP协议发送H.264编码及AAC编码的音视频”,简单介绍过如何在自己的程序里使用rtmp协议,不过那篇文章讲的主要是如何实现一个rtmp直播的发布端,主要侧重在“采集-编码-rtmp发布”这样的流程.这篇文章的…
http://www.cnblogs.com/haibindev/archive/2012/04/16/2450989.html 实现输出h264直播流的rtmp服务器 RTMP(Real Time Messaging Protocol)是常见的流媒体协议,用来传输音视频数据,结合flash,广泛用于直播.点播.聊天等应用,以及pc.移动.嵌入式等平台,是做流媒体开发经常会接触到的协议.我之前曾经写过一篇文章“RTMP协议发送H.264编码及AAC编码的音视频”,简单介绍过如何在自己的程序里使用…
出自:http://www.mworkbox.com/wp/work/314.html 2013-05-04 MP4的视频H264封装有2种格式:h264和avc1,对于这个细节,很容易被忽略.笔者也是在改编LIVE555流媒体时,增加mp4文件类型支持时遇到了该问题. (一)首先,从原理上了解一下这2种格式的区别:AVC1 描述:H.264 bitstream without start codes.一般通过ffmpeg转码生成的视频,是不带起始码0×00000001的.H264 描述:H.2…
把MPEG4码流的分析和它的I,P,B Frame的判定方法在这里简要记录一下吧,供日后的翻看和大家的参考.   测试解码器测试了很久,由于需要将H264和MPEG4的码流进行分析和判断,并逐帧输入解码器进行测试,如何正确的分析码流,并将Video送给我们的解码器做Decode的呢?耐着性子找了很多资料,主要也因为我本身对MPEG4和H264的码流的格式并不懂,自己在视频编码方面的积累也实在是太少了,所以也确实挺头疼的.后来就直接在网上找是否有对码流的各个部分意义的解释,开始搜索码流中的的Sta…
javacpp-ffmpeg系列: javacpp-FFmpeg系列之1:视频拉流解码成YUVJ420P,并保存为jpg图片 javacpp-FFmpeg系列之2:通用拉流解码器,支持视频拉流解码并转换为YUV.BGR24或RGB24等图像像素数据 javacpp-FFmpeg系列之3: 图像数据转换(BGR与BufferdImage互转,RGB与BufferdImage互转) 前言: 第一篇中视频解码成YUVJ420P图像像素数据(以下简称YUV或YUV数据),只是YUV在流媒体协议中用的较多…
获取.h264视频宽高的方法 花了2个通宵终于搞定.(后面附上完整代码) http://write.blog.csdn.net/postedit/7852406 图像的高和宽在H264的SPS帧中.在H264码流中,都是以"0x00 0x00 0x01"或者"0x00 0x00 0x00 0x01"为开始码的,找到开始码之后,使用开始码之后的第一个字节的低5位判断是否为7(sps),等于7表示该帧就是SPS帧,从该帧就可以解析出高和宽,SPS是个结构体,里面有两个成…
TS 流解码过程: 1. 获取TS中的PAT 2. 获取TS中的PMT 3. 根据PMT可以知道当前网络中传输的视频(音频)类型(H264),相应的PID,PCR的PID等信息. 4. 设置demux 模块的视频Filter 为相应视频的PID和stream type等. 5. 从视频Demux Filter 后得到的TS数据包中的payload 数据就是 one piece of PES,在TS header中有一些关于此 payload属于哪个 PES的 第多少个数据包. 因此软件中应该将此…