自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (5)
  • 收藏
  • 关注

原创 FFmpeg转码一帧(时间戳)

写在前面时间戳 时间基 帧 包 I B P SPS PPS 场 封装格式 编码格式 音频 视频如果上面的这些关键字有些不了解的需要先查资料弄懂ffmpeg转码一帧转码过程此文档中我会主要关注每一步的时间戳是如何处理的,这也是记录这篇文章的原因。读取一帧注册,打开输入,扫描输入信息(av_regigster_all(),avforamt_open_input(),avform...

2019-07-04 15:16:39 2456

转载 HEVC标准概览(一)引言

原文地址:http://www.tuicool.com/articles/6JrEN3HEVC(高效视频编码标准)是ITU-T VCEG(国际电联电信标准化部视频编码组)与ISO/IEC MPEG(国际标准化组织国际电工委员会视频标准化组)的合作组织JCT-VC最新项目。ITU-T和ISO/IEC计划在2013年1月共同发布第一个版本(译者按:ITU-T已经在2013-01-25 发布 ,标准可见

2016-07-14 17:51:48 466

转载 FFMPEG中最关键的结构体之间的关系

FFMPEG中结构体很多。最关键的结构体可以分成以下几类:a)        解协议(http,rtsp,rtmp,mms)AVIOContext,URLProtocol,URLContext主要存储视音频使用的协议的类型以及状态。URLProtocol存储输入视音频使用的封装格式。每种协议都对应一个URLProtocol结构。(注意:FFMPEG中文件也被当做一种协议“file”)b

2014-11-26 09:44:24 504

原创 二、webrtc-sfu - 推流篇 - STUN

接上,webrtc推流之前需要找到对端和自己的公网IP以及所处位置,这就需要用到STUN协议,本片文章主要记录STUN协议的内容。

2022-07-19 15:47:00 1137 1

原创 一、webrtc-sfu - 推流篇 - 概览

学习和总结下webrtc推流的过程,仅仅是数据协议层的流程,不包括信令协议(这个也没有统一的规范)。服务器使用的是janus-gateway推流篇一、抓包看总流程大概流程如下:通过STUN协议获取对方的公网IP和端口通过DTLS协议进行握手,设置加密信息等通过RTP和RTCP协议进行数据的传输和数据状态的上报和获取。二、简单了解协议2.1 STUN协议协议标准 - RFC5389参考文档-12.1.1 为什么需要STUN协议?首先需要了解下STUN协议能..

2022-05-31 12:15:09 2562

原创 RFC-6184 H264-RTP打包

详细的RFC见RFC-618简介RTP是流协议,所以传输的H264一定是Nal类型的H264数据,Nal的头中有三个字段,分辨是forbidden_zero, nal_ref, nal_unit_type,内涵不再详细说明。RTP头格式中与H264相关的字段如下:M (Mark), 表示当前包是H264 Nal的最后一个包。PT(Payload Type),对于H264该字段应该是通过SDP或则其他信令映射的标示。Sequence Number, 序列号,单调递增。Timestamp 时.

2021-08-24 10:58:17 926

原创 RFC-5285-RTP-Header-Extensions

简介在RTC3550中提供了一种可扩展RTP头的能力。定义如下图,现有的报头扩展方法允许每个RTP分组最多有一个扩展,由16位标识符和16位长度字段标识,该字段以32位指定报头扩展的长度。这种机制有两个弊端:第一在一个RTP包中只能提供一个扩展头,第二规范并没有给出如何分配16位头扩展标识符以避免冲突的指导。本规范通过定义一种向后兼容和可扩展的方法来在单个RTP分组中携带多个报头扩展元素,从而消除了第一个缺点。通过定义这些扩展元素来消除第二个缺点,这些扩展元素使用URLs命名,在IETF中定义一个

2021-08-23 13:38:39 943

原创 RTP控制协议-RTCP

RTCP包组成数据包格式时序规则参与者数据库包格式规范定义了统一的基本包格式,如下:V 版本号,默认为2P 填充,加密使用,类似于RTP的方式,最后一个字节为填充总数IC,item count条目数量,最多为31个,注意MTU的限制,如果超过31个条目,则需要对内容进行分包。PT,Packet Type,包类型,看下面的定义Length, 长度五种RTCP包类型接收方报告(RR)发送方报告(SR)源描述(SDES)成员管理(BYE)应用程序定义(APP)P

2021-08-03 09:58:52 199

原创 H264 - SPS PPS

H264SPS 序列参数集seq_parameter_set_data() //C Descriptor{ profile_idc; //0 u(8) constraint_set0_flag; //0 u(1) constraint_set1_flag; //0 u(1) constraint_set2_flag; //0 u(1) constraint_set3_flag; //0 u(1) constraint_set4_flag

2020-11-23 14:23:15 217

原创 FLV封装结构

文章目录FLV结构FLV headerFLV TagAudio Tag HeaderVideo Tag HeaderFLV File BodyFLV结构FLV结构video tag - avc video packet![在这里插入图片描述](https://img-blog.csdnimg.cn/20201123110215421.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM

2020-11-23 11:06:41 315

转载 Exp-Golomb 指数哥伦布编码

文章目录1. 熵编码(Entropy encoding)1.1 熵1.2 熵和熵编码1.3 熵编码分类2. 指数哥伦布编码(编码过程)2.1 0阶指数哥伦布编码2.2 K阶指数哥伦布编码3. 指数哥伦布编码(解码过程)3.1 ue(v)H264语法3.2 se(v)3.3 me(v)3.4 te(v)3.4.1 te(v)编码过程3.4.2 te(v)解码过程4. 总结因为指数哥伦布编码(Exponential-Golomb)属于熵编码(Entropy encoding),所以我们先大致介绍一下熵编码,然

2020-11-21 15:44:50 2213

原创 Annex-B和AVCC

格式Annex-BAVCC(H.264) 和 HVCCAnnex-BAnnex-B格式 也叫MPEG-2 transport stream format格式(ts格式), ElementaryStream格式。AVCC(H.264)AVCC格式 也叫AVC1格式,MPEG-4格式,字节对齐,因此也叫Byte-Stream Format。用于mp4/flv/mkv, VideoToolbox。结构结构主要有两点区别:SPS和PPS的组织格式数据分隔方式不同Annex-B -结构

2020-11-20 16:14:08 2065

原创 AAC 数据格式

AACAAC 数据格式1 ADIF格式1.1 序列语法1.1.1 adif_header2 ADTS格式2.1 adts_sequence2.1.1 adts_frame2.1.1.1 adts_fixed_headerAAC 数据格式AAC是常见的编码格式,编码后的数据封装格式分为两种:ADIF(Audio Data Interchange Format) 和 ADTS(Audio Data Transport Stream), 常见的主要是ADTS封装。1 ADIF格式1.1 序列语法ad

2020-11-19 11:39:37 1027 1

原创 3.1图像的空间域统计特性

3.1图像的空间域统计特性是什么?图像信号(亮度 色度)本身,或则对他们进行某种方式的处理之后的输出值的随机统计特性。如 一行的相邻像素,一列的相邻像素,相邻行对应的像素之间,视频帧间对应的位置往往具有很强的相关性;相关函数直方图如RGB直方图的,行坐标一般位0-255,因为颜色就这么大;纵轴位每个行坐标对应的像素的个数,直观,好看...

2020-06-04 23:48:24 517

原创 2.1 墒编码基本原理

目录墒编码信息量的概念举个例子墒编码概念墒编码信息量的概念信息量:表示该符号所需要的位数考虑用0和1组成的二进制数码为含有N个符号的某条消息进行编码假设符号 aj在整条消息中重复出现的概率为 Pj ,则该符号的信息量定义为:En = -log2(Pj)举个例子假如信源字符串:aabbaccbaaa,b,c,出现的概率分别为:0.5;0.3;0.2,他们的信息量分别为:Ea=-log2(0.5) = 1Eb=-log2(0.3) = 1.737Ec=-log2(0.2) = 2.

2020-05-15 08:55:58 361

原创 nginx学习

文章目录nginx热部署nginx热部署备份旧进程文件,替换成新进程文件;启动新版本kill -USR2 pid停止老版本kill -WINCH pid如果新版本有问题,reload可以直接回退到老版本./sbin/nginx -s reload...

2019-11-21 00:46:08 129

原创 ffmpeg - 优质博客

基础FFmpeg基础知识叶余-ffmpeg 专栏

2019-05-31 14:56:31 3497

翻译 数字视频简介

数字视频简介基本术语颜色编码方法深度(bit depth)分辨率宽高比帧率码率码率控制方法(VBR/CBR/ABR)隔行/逐行扫描隔行扫描逐行扫描查看视频信息基本术语颜色编码方法一张图片可以被想象成2D的矩阵。如果我们考虑颜色,我们可以顺着这个思路一张图片想象成3D矩阵,其中另外一个D用于存储颜色数据。如果我们使用原色(红,黄,蓝三色)代表这些颜色,我们可以定义三个平面:第一个代表红色,...

2019-01-21 09:03:42 1447

原创 ffmpeg 编译

windows编译编译环境准备登陆 http://msys2.github.io/ 或 https://github.com/msys2 下载 msys2安装程序 安装到C/D 盘的根目录下面安装一些必要的库和软件 pacman -S git pacman -S yasmpacman -S makepacman -S mingw-w64-x86_64-gcc 编译下载ffmpeg源

2017-10-25 08:53:34 249

原创 ffmpeg.c源码阅读

入口函数mainint main(int argc, char **argv){ int i, ret; int64_t ti; init_dynload(); register_exit(ffmpeg_cleanup); setvbuf(stderr,NULL,_IONBF,0); /* win32 runtime needs this */ av_log

2017-08-16 18:46:46 650

原创 ts码流结构语法学习总结

引言标准文档给自己的定义是:论述了将音频和视频的一个或多个基本流以及其他数据组合成为一个单独的流或多个流,以适于存储或传输。系统编码遵循本规范中提出的句法和语义规则,并且提供信息使得解码器缓冲区可以在各种检索或接收条件下进行同步解码。 节目流:它是由一个或多个具有共同时间基的PES 包的流组合成一个单独的流而形成的。 传输流:是将具有一个或多个独立时间基的一个或多个节目组合成为一个单独的流。

2016-12-16 15:37:57 783

原创 H264码流结构语法学习

h264封装结构学习

2016-12-16 00:15:25 571

原创 HEVC帧内预测

HEVC帧内预测hevc有35种预测模式,都是基于PU定义的,而具体帧内预测过程的实现是以TU为单位。标准规定PU可以以四叉树的形式划分TU,且一个PU 内的所有TU共享统一种预测模式。HEVC帧内预测的步骤判断当前TU相邻参考像素是否可用,病做相应的处理对参考像素进行滤波根据滤波后的参考像素计算当前TU的预测像素值

2016-08-04 14:38:24 625

转载 HEVC标准概览(五)Profile、Tier和Level

Profile、Tier和Level的概念这三个概念主要用于需要类似功能的不同实现之间的沟通。Profile指出码流中使用了哪些编码工作和算法。Level指出一些对解码端的负载和内存占用影响较大的关键参数约束。主要包括采样率、分辨率、码率的最大值,压缩率的最小值,DPB的容量,CPB(解码缓冲区)的大小。在HEVC的设计中,应用可以只依据最大的码率和CPB大小就可以区分。为了解决这个问题,有些Lev

2016-07-15 11:30:27 10313

转载 HEVC标准概览(三)高层语法

概述HEVC从H.264/AVC的NAL继承了大量的语法元素。NAL是负责把那些装载了视频的视频编码层的数据映射到RTP/IP、ISO MP4、H.222.0/MPEG-2等多种视频传输层上,同时提供处理丢包情况的框架。本章节不复述NAL单元、参数集、存取单元、码流格式、包格式等基本概念。NAL单元根据是否装载有视频编码数据分为VCL和non-VCL两类。为了支持任意点解码和解码初始化,HEVC标准

2016-07-15 10:45:50 1350

转载 HEVC标准概览(二)设计和技术要点

概述HEVC的设计兼顾提高编码效率、降低传输压力、增强丢包容忍性、优化并行处理在内的多个目标。 本章将简要描述HEVC实现这些目标的关键技术以及标准HEVC编码器的处理流程;解码流程和具体的语法会在之后的章节讨论。编解码层面HEVC的编码分层沿用了H.261以来的(混合模式帧间预测、帧内预测、2D转换)。下图表达了编码HEVC标准码流的基本过程。 HEVC标准编码过程大致如下:帧首先被切分成多个块状

2016-07-14 19:32:03 1660

原创 MP3文件格式学习

MP3文件格式学习概述 MP3 文件是由帧(frame)构成的,帧是 MP3 文件最小的组成单位。MP3 的全称应为MPEG1 Layer-3音频文件,MPEG(Moving Picture Experts Group)在汉语中译为活动图像专家组,特指活动影音压缩标准,MPEG音频文件是 MPEG1 标准中的声音部分,也叫 MPEG 音频层,它根据压缩质量和编码复杂程度划分为三层,即Layer-

2015-07-07 18:14:27 540

原创 RTMP协议学习

前段时间一直在看RTMP协议,但是只是对文档看!收获甚微;再群里聊天的时候看有人用Winreshark结合文档来分析,感觉效率不错,工作需要最近又开始捡起来直播服务器这一块,所以就决定再结合工具好好看一遍文档RTMP简介RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。该协议基于TCP,是一个协议簇,包括RTMP基本协议及RTMPT/RTM

2015-06-16 12:20:22 736

原创 SDL_Init()代码阅读

首先调用的是:intSDL_Init(Uint32 flags){ return SDL_InitSubSystem(flags);}所以就需要看看这个SDL_InitSubSystem(flasg)到底做了什么#define SDL_InitSubSystem SDL_InitSubSystem_REAL跳转到宏定义了,看来只能找SDL_InitSubSyste

2015-01-12 10:36:06 1627

原创 SDL的使用

关于视频SDL_Init();//初始化SDLSDL_CreateWindow();//创建一个窗口SDL_CreateRender();//创建一个渲染器,在创建的窗口的基础上SDL_CreateTexture();//给予以上创建一个纹理循环更新渲染器对视频进行更新SDL_UpdateTexture();//更新纹理SDL_Ren

2015-01-12 10:35:28 532

转载 ffmpeg键盘命令响应程序详解

一、对终端进行读写当一个程序在命令提示符中被调用时,shell负责将标准输入和标准输出流连接到你的程序,实现程序与用户间的交互。1. 标准模式和非标准模式在默认情况下,只有用户按下回车键后,程序才能读到终端的输入。在大多数情况下,这样做是有益的,因为它允许用户使用退格键和删除键来纠正输入中的错误,用户只在对自己在屏

2014-12-02 15:19:21 620

转载 ffmpeg 内存转码

文章的末尾有原文的地址, 这里只是记录源码方便自己时不时的看看代码FFmpeg读写内存的关键点有2个:1.       初始化自定义的AVIOContext,指定自定义的回调函数。2.       自己写回调函数。注意函数的参数和返回值(尤其是返回值)。 流程程序的流程图如下图所示。从图中可以看出,首先分别初始化了输入和输出的AVFormatContext。然后首先

2014-11-27 09:46:23 791

原创 ffmpeg数据结构-AVInputFormat

typedef struct AVInputFormat { /** * A comma separated list of short names for the format. New names * may be appended with a minor bump. * 一个逗号分隔的格式的短名称列表。新的名称可以附加一个轻微的碰撞。 */

2014-11-26 17:05:56 1585

转载 FFMPEG结构体分析:AVFrame

FFMPEG有几个最重要的结构体,包含了解协议,解封装,解码操作,此前已经进行过分析:FFMPEG中最关键的结构体之间的关系在此不再详述,其中AVFrame是包含码流参数较多的结构体。本文将会详细分析一下该结构体里主要变量的含义和作用。首先看一下结构体的定义(位于avcodec.h):/* *雷霄骅 *leixiaohua1020@126.com *中国传

2014-11-26 10:54:49 993

原创 ffmpeg数据结构-URLContext

typedef struct URLContext { const AVClass *av_class; /**< information for av_log(). Set by url_open(). */ struct URLProtocol *prot; void *priv_data; char *filename; /

2014-11-26 09:51:38 534

原创 ffmpeg 数据结构-AVPacket

//结构体有点多,所以就单个拿出来看//数据包结构体typedef struct AVPacket { /** * A reference to the reference-counted buffer where the packet data is stored. * 一个参考计数的缓冲区,数据存储  * May be NULL, then th

2014-11-25 19:17:33 467

原创 ffmpeg数据结构-AVFormatContext

/** * Format I/O context. * New fields can be added to the end with minor version bumps. * Removal, reordering and changes to existing fields require a major * version bump. * sizeof(AVFormatCont

2014-11-25 18:33:32 557

原创 ffmpeg结构体熟悉——AVIOContext

typedef struct AVIOContext { /** * A class for private options. * * If this AVIOContext is created by avio_open2(), av_class is set and * passes the options down to protocols.

2014-11-25 18:27:10 774

原创 microhttpd使用的代码,接受客户客户端post的数据,然后在响应

#include #include #include #include #include #include #include #define PORT 8888static intprint_out_key (void *cls, enum MHD_ValueKind kind, const char *key,               co

2014-07-08 15:07:59 4056 1

Source Insight4.0破 解 版

Source Insight4.0 破解版,亲测可用!Source Insight是程序员的必备神器之一,用来阅读和管理代码十分方便,可以大大提高我们的工作效率

2018-05-09

WebRTC零基础开发者教程

WebRTC零基础开发者教程,从代码编译到框架介绍,到协议介绍等,都是干活

2018-04-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除