草庐IT

音视频数据处理-H265/HEVC视频码流分析

一、H265概述H265/HEVC(HightEfficiencyVideoCoding)是由ITU-T和ISO/IEC两大组织在H264/AVC的基础之上推出的新一代高效视频编码标准,主要为应对高清和超高清视频在网络传输和数据存储方面带来的挑战。上一篇文章对H264/AVC视频码流进行了详细的分析,本文继续从数据处理的角度对H265/HEVC视频码流进行详细分析。二、H265分层结构H265的分层结构与H264类似,分为视频编码层(VCL:VideoCodeLayer)和网络抽象层(NAL:NetworkAbstractLayer)。VCL层:对视频的原始数据进行压缩,包含原始的视频数据。N

JavaCV音视频开发宝典:使用JavaCV读取海康平台或海康网络摄像头sdk回调视频TS码流并解析预览图像

《JavaCV音视频开发宝典》专栏目录导航《JavaCV音视频开发宝典》专栏介绍和目录​前言两年前博主写了如何利用JavaCV解析各种h264裸流,《JavaCV音视频开发宝典:使用javacv读取GB28181、海康大华平台和网络摄像头sdk回调视频码流并解析预览图像》,但是随着时间变化,各个厂商sdk也有所迭代升级,比如现在海康sdk回调不再包含H264裸流,只有PS和TS流以及RTP(RTP中也可包含PS\TS\H264\H265裸流)PS流和TS流封装格式简述虽然各大厂商sdk手册文档有所介绍,但对于一些概念并没有进行阐述,下面我们具体讲讲这些流是什么,做什么用的。ps流和TS流是一对

JavaCV音视频开发宝典:使用javacv读取GB28181、海康大华平台和网络摄像头sdk回调视频码流并转码推流rtmp流媒体服务

《JavaCV音视频开发宝典》专栏目录导航《JavaCV音视频开发宝典》专栏介绍和目录前言本篇文章用于解决javacv接入h264/hevc裸流或者接入ps/ts流等字节流的非流媒体协议视频源接入并推流到rtmp流媒体服务。本篇文章适用于gb28181/海康大华网络摄像机设备sdk对接以及海康大华等视频平台的sdk方式对接和推流。可以用于录像回放对接和实时流对接。再次友情提醒:注意管道流的输入输出不能在同一个线程内,否则1000000%会阻塞。实现功能1、读取海康/大华sdk回调2、创建javacv解析处理线程3、使用javacv解析视频码流,并推流到rtmp代码实现这里演示如何正确读取大华s

音视频高手课07-视频流H264码流分析实战

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ahYhw27s-1649949572379)(img/70.png)]2.1H.264码流结构图[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m0RFjX5f-1649949572380)(img/71.png)]起始码:如果NALU对应的Slice为一帧的开始,则用4字节表示,即0x00000001;否则用3字节表示,0x000001。NALHeader:forbidden_bit,nal_reference_bit(优先级),nal_unit_type(类型)。脱壳操作:为了使N

音视频高手课07-视频流H264码流分析实战

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ahYhw27s-1649949572379)(img/70.png)]2.1H.264码流结构图[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m0RFjX5f-1649949572380)(img/71.png)]起始码:如果NALU对应的Slice为一帧的开始,则用4字节表示,即0x00000001;否则用3字节表示,0x000001。NALHeader:forbidden_bit,nal_reference_bit(优先级),nal_unit_type(类型)。脱壳操作:为了使N

H264码流插入自定义数据(SEI字段)

文章目录前言一、H264码流结构1.文字说明2.码流格式图解二、自定义数据封装以及H264码流插入1.将自定义数据封装成SEI字段通用格式即可插入H264码流中2.编程逻辑三、附上源码与注释四、总结前言本文主要记录,如何在已有的H264码流中插入自定义的数据,并且不破坏H264码流结构,改造后的H264码流可以通过解码器正常解析出来,插入的自定义数据对H264码流解析不造成任何影响。代码在文末附上,基于C/C++实现。一、H264码流结构1.文字说明(1)H264码流,是由一个个独立的数据块NALU组成,NALU数据块之间相互关联,NALU数据块的顺序不可以调换,但NALU数据块之间可以插入指

H264码流插入自定义数据(SEI字段)

文章目录前言一、H264码流结构1.文字说明2.码流格式图解二、自定义数据封装以及H264码流插入1.将自定义数据封装成SEI字段通用格式即可插入H264码流中2.编程逻辑三、附上源码与注释四、总结前言本文主要记录,如何在已有的H264码流中插入自定义的数据,并且不破坏H264码流结构,改造后的H264码流可以通过解码器正常解析出来,插入的自定义数据对H264码流解析不造成任何影响。代码在文末附上,基于C/C++实现。一、H264码流结构1.文字说明(1)H264码流,是由一个个独立的数据块NALU组成,NALU数据块之间相互关联,NALU数据块的顺序不可以调换,但NALU数据块之间可以插入指

JavaCV音视频开发宝典:使用JavaCV读取海康平台或海康网络摄像头sdk回调录像回放视频PS码流并解析预览图像

《JavaCV音视频开发宝典》专栏目录导航《JavaCV音视频开发宝典》专栏介绍和目录​前言上一章中《JavaCV音视频开发宝典:使用JavaCV读取海康平台或海康网络摄像头sdk回调视频TS流并解析预览图像》已经详细介绍了针对海康SDK实时视频流回调的TS流解析实现,并且也提到了PS流和PS流一般用于录像回放,那么本章就顺着上一章讲一下录像回放PS码流(当然也可以用作实时流回调)的具体实现。废话少谈,让我们立刻开始吧。PS流介绍PS码流上一章已经介绍过了,这里再次提一下,巩固增强一下记忆。TS流与PS流的区别在于TS流的包结构是固定长度的,而PS流的包结构是可变长度的。PS流与TS流在结构上

GB28181视频平台LiveGBS如何实现主码流子码流随意智能切换,多屏播放时自动播放子码流单屏时自动主码流

1、为什要智能码流监控摄像头的视频画面,在业务使用中,会同时观看多屏。然而,当视频码流很高的时候,浏览器无法支持过多的分屏视频的播放。这时候,我们可以想到的一种方式就是,降低视频直播的码流。那同样,又带来了另外的一个问题,当我们全屏观看的时候又不是很清晰。如何解决分屏流畅播放且全屏播放清晰呢?2、什么是智能码流智能码流模式下,LiveGBS的分屏小窗口会播放低码流视频,当播放器全屏后,会自动切换到高清视频播放。解决了分屏播放流畅和分屏窗口个数的问题。3、分屏播放智能码流勾选上智能码流,即可自动切换到智能码流播放模式3.1、十六分屏智能码流播放示例4、智能码流子码流配置(默认不用配置)4.1、配

【FFmpeg学习】H264 视频码流分析

1.H264编码分层NAL层:(NetworkAbstractionLayer,视频数据网络抽象层):它的作用是H264只要在网络上传输,在传输的过程每个包以太网是1500字节,而H264的帧往往会大于1500字节,所以要进行拆包,将一个帧拆成多个包进行传输,所有的拆包或者组包都是通过NAL层去处理的。VCL层:(VideoCodingLayer,视频数据编码层):对视频原始数据进行压缩 我们可以看到视频帧序列每一帧图像是由slice构成的,每一个slice是由多个宏块构成的,在实际传输的过程中,一般一帧图像就是一个slice,没有分那么细。NAL单元的结构组成 SODB:(StringofD