本人因为近期在读取h264文件的时候,遇到怎样读取完整一帧数据的问题.通过使用elecard stream analyzer工具,以及结合<新一代视频压缩编码标准--H264/AVC>(第二版)书.并在网上查找总结例如以下: 首先NAL句法,片头句法以及nal_unit_type语义必须知道: 以上两图截自<新一代视频压缩编码标准--H264/AVC>(第二版) 简单的区分帧的方法就是读取文件的时候与0x00 0x00 0x00 0x01比較.假设相等觉得是一个片.再读取一个字节就…
出自: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…
转自: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:…
本篇将使用上节http://www.cnblogs.com/wenjingu/p/3977015.html中编译好的库文件通过rtsp获取网络上的h264裸流并保存到mp4文件中. 1.VS2010建立VC++  win32控制台项目 2.在工程目录下建立lib目录和include目录,将已编译好的lib拷打lib下,include拷到include下,dll拷到Debug目录下 3.工程属性--配置属性--VC++目录--包含目录,添加ffmpeg头文件目录及其他第三方头文件目录 链接器--常…
1 写在开始之前 在前段时间有分享一个H264封装ps流到相关文章的,这次和大家分享下将H264封装成TS流到相关实现,其实也是工作工作需要.依照上篇一样,分段说明每个数据头的封装情况,当然,一样也会加上rtp头,方便以后的这方面到需求,如果开发不需要的话,可   以自行屏蔽掉,当然需要主要buffer指针的移动情况 2 封装的各个头到规则要点             整个封装过程也是和ps类似,但是最大到区别在于TS流到数据长度都是固定188大小来传输的,而PS流则是可变包结构,正因为两者在结…
H264码流打包分析 SODB 数据比特串-->最原始的编码数据 RBSP 原始字节序列载荷-->在SODB的后面填加了结尾比特(RBSP trailing bits 一个bit“1”)若干比特“0”,以便字节对齐. EBSP 扩展字节序列载荷-- >在RBSP基础上填加了仿校验字节(0X03)它的原因是: 在NALU加到Annexb上时,需要填加每组NALU之前的开始码 StartCodePrefix,如果该NALU对应的slice为一帧的开始则用4位字节表示,ox00000001,否…
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…
转载地址: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…
获取.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是个结构体,里面有两个成…
--------------------------------------------------------------------------------------------------------------------------- 说明:本文档是基于码流文件ducks.264.文档中只有括号里面的参数才会编入码流,如 nC=0: (coeff_token):ce(v)=1(0,0) 只有coeff_token在码流中有,nC只是为了读者方便.进制. Writed by Bnian…
实现输出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编码的音视频”,简单介绍过如何在自己的程序里使用…
IO流的分类:1.根据流的数据对象来分:高端流:所有的内存中的流都是高端流,比如:InputStreamReader  低端流:所有的外界设备中的流都是低端流,比如InputStream,OutputStream 如何区分:所有的流对象的后缀中包含Reader或者Writer的都是高端流,反之,则基本上为低端流,不过也有例外,比如PrintStream就是高端流 2.根据数据的流向来分:输出流:是用来写数据的,是由程序(内存)--->外界设备输入流:是用来读数据的,是由外界设备--->程序(内…
背景:合同(后台返回pdf流文件)展示.下载.打印,基于angular4 场景区分: 1.checkout页面 —— post接口,入参为offering.shippingInfo.invoice等(body),返回生成合同的pdf流文件: 2.orderList.orderDetail页面 —— get接口,入参contentId(生成合同在内容管理保存对应的id,url),返回对应合同的pdf流文件. 需求补充说明: 在一个弹出dialog,合同展示在中间部分,footer部分为 下载.打印…
转自:http://blog.csdn.net/caoshangpa/article/details/51166109 一.准备工作 1.下载并安装优酷客户端 2.下载ffmpeg可执行文件,解压可用,不需要下载源码自己编译. ffmpeg可执行文件下载链接:http://download.csdn.net/detail/caoshangpa/9492758 二.用优酷客户端下载视频并转码 用优酷客户端下载一个视频,然后转码成mp4格式,优酷客户端自带转码功能,如下图所示. 点击“转码”按钮,弹…
引言: 关于java IO流的操作是非常常见的,基本上每个项目都会用到,每次遇到都是去网上找一找就行了,屡试不爽.上次突然一个同事问了我java文件的读取,我一下子就懵了第一反应就是去网上找,虽然也能找到,但自己总感觉不是很踏实,所以今天就抽空看了看java IO流的一些操作,感觉还是很有收获的,顺便总结些资料,方便以后进一步的学习... IO流的分类:1.根据流的数据对象来分:高端流:所有的内存中的流都是高端流,比如:InputStreamReader  低端流:所有的外界设备中的流都是低端流…
既然已经可以通过 RTSP 获取h264 裸流了.那么通过 FFmpeg 将其保存到文件中怎么做呢? 一.首先RTSP获取 h264 裸流 我们上面两篇文章主要讲的是通过 rtsp://Your ip:554/stream_chn0.h265 播放H.265视频流. PS:我刚试了一下,我的 FFmpeg 程序暂时不支持 h265 ...   之前编译的时候,只提供了 x264没有x265 如果感兴趣参看下面两篇文章添加. 参看:使用VS2015添加对ffmpeg添加h265 支持. 参看:ff…
之前写过 <从H264码流中获取视频宽高 (SPS帧)> . 但发现很多局限性,而且有时解出来是错误的. 所以重新去研究了. 用了 官方提供的代码库来解析. 花了点时间,从代码库里单独把解析SPS的代码提取出来,写成函数. <最权威的从H264码流中,解析出最全的SPS信息. 包括宽高等> 欢迎大家下载,指导查看. 使用说明: 使用说明:1. 在使用的CPP中包含ProcessSPS.h2. 参考使用代码DataPartition *dp = AllocPartition(1);s…
本文档为iOS VideoToolbox硬编H.265(HEVC)H.264(AVC):1 概述续篇,主要描述: CMSampleBufferRef读取实际数据 序列参数集(Sequence Parameter Set, SPS) 图像序列参数(Picture Parameter Set, PPS) 等内容. 1.视频实际内容数据持久化 1.1.可攻可受的CMSampleBufferRef 文档1 概述中回调函数 static void compressionOutputCallback(  …
背景: 文件流通过在文件系统上存储blob数据文件将数据库引擎与ntfs文件集成在一起,使用t-sql和win32访问数据. 文件流使用windows系统来缓存数据,有助于在减少文件流数据对sql server 性能可能产生的任何影响, 文件流没有用sql server 的缓存池,因此不会减少查询进程的可用内存. --------------------------------------------------------------------------------------------…
简单介绍编辑 随着从HDTV录制的高清节目在网上的流传,烧友们对TS这个名词大概已经不陌生了.但随之而来就是怎样播放.怎样加入字幕等等的一系列问题.本文将重点介绍一下这方面的应用操作. 先来简要介绍一下什么是MPEG2-TS吧.MPEG2格式大家都通过对DVD的接触而多少了解了一些,DVD节目中的MPEG2格式,确切地说是MPEG2-PS.简单地打个比喻说,你将DVD上的VOB文件的前面一截cut掉(或者干脆就是数据损坏),那么就会导致整个文件无法解码了. 2概述编辑 DVD节目中的MPEG2格…
hisi出的H264码流结构: IDR帧结构如下: 开始码 + nalu + I帧    +    开始码 + nalu + SPS    +     开始码 + nalu + PPS    +   开始码 + nalu + SEI 开始码为:00000001 帧序列结构如下: IDR帧  +  P帧 + +  P帧 + ...... + IDR帧  +  P帧 + +  P帧 + ...... + IDR帧  +  P帧 + +  P帧 + ......…
1.接口返回的流和头部: 2.下载流文件的代码 方法一:是用了插件 https://github.com/kennethjiang/js-file-download 方法二:是用了 blob 不管哪种方法,记得设置  responseType  !!!!! 附上代码: // 导出订单 exportBill:function () { let url_post = Vue.prototype.api.apiList.EXPORT_BILL; let params_post = { orderSta…
xilinx Vivado的使用详细介绍(2):创建工程.添加文件.综合.实现.管脚约束.产生比特流文件.烧写程序.硬件验证 Author:zhangxianhe 新建工程 打开Vivado软件,直接在欢迎界面点击Create New Project,或在开始菜单中选择File - New Project即可新建工程. 点击Next: 输入工程名称和路径. 选择默认的RTL Project选项,勾选Do not specify......(这样可以跳过添加源文件的步骤,源文件可以后面再添加).…
php从数据库中取二进制流文件转换为图片,图片以二进制流存入数据库实现 function data_uri($contents, $mime) { $base64 = base64_encode($contents); return ('data:' . $mime . ';base64,' . $base64); } 调用 //获得头像路径 function getpicsrc() { $db=new db(); $sql="select * from pictable"; $res…
buffer_file_content=u"流文件内容" file_size = len(buffer_file_content)/ #kb…
一.FileResult 1.简介 表示一个用于将二进制文件内容发送到响应的基类.它有三个子类: FileContentResultFilePathResultFileStreamResult 推荐阅读:https://www.cnblogs.com/weiweixiang/p/5667355.html 2.FilePathResult 首先.创建一个mvc5项目.然后添加一个FileTest控制器,添加以下方法 public ActionResult Export() { // Respons…
源: RTP协议全解析(H264码流和PS流)…