自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(220)
  • 资源 (6)
  • 收藏
  • 关注

转载 综合---音视频相关的书籍,多媒体技术,语音识别

对播放器架构演进、流媒体存储传输、视频编解码标准及图像声音信号处理,既对数学要求较高又与当时全民IT热相结合的专业——(计算机)信息安全,精妙绝伦的数论及密码学。既能应用密码学的知识技能又能和声色并茂的多媒体场景结合起来的信息隐藏和数字水印,音视频技术是互联网品质生活的连接器。连接器”的另一头则连接且聚合着信息论、最优化理论、图形图像学、声学、人类视觉系统等一众根基深厚、源远流长的学派。– 语音识别,语音信号深度学习:核心技术、工具与案例解析; 解析深度学习:语音识别实践;影印版)-语音识别基本原理;解

2020-10-10 10:35:19 481

原创 流媒体协议---feng(c语言版本的RTSP服务器)

Feng是C语言的Rtspserver。Feng supports the following encoding standards:* Audio o MPEG Audio (MPEG-1/2 Layer I/II/III) (rfc2250) o Vorbis (draft) o AAC (MPEG-4 Part 3) (rfc3640) * Video o MPEG Video (MPEG-1/2) (rfc2250) o

2020-09-05 17:53:49 627

原创 流媒体协议---live555实现rtsp---live555的主函数和回调函数

int main(int argc, char** argv) { TaskScheduler* scheduler = BasicTaskScheduler::createNew();//初始化scheduler UsageEnvironment* env = BasicUsageEnvironment::createNew(*scheduler);//初始化env //创建一个server实例(优先使用rtsp的554端口,备选8554),并设置客户端请求到达时的回调函数 RTSPServ

2020-09-05 13:53:14 417

原创 流媒体协议---live555实现rtsp---处理客户端点播的基本流程

处理连接请求的基本流程:Step 1:与客户端建立RTSP连接 incomingConnectionHandler(根据socket找到并执行,两者相互关联,以回调函数的信使存在) 创建ClientSession并将fClientSocket与请求函数句柄 incomingRequestHandlerStep 2:接收客户端请求GenericMediaServer::ClientConnection::incomingRequestHandler handleRequestByte

2020-09-05 13:52:15 369

原创 海思项目---视频处理子系统VPSS(Video Process Sub-System)

功能VPSS(Video Process Sub-System)支持对一幅输入图像进行统一预处理,如去噪、去隔行等,然后再对各通道分别进行缩放、锐化等处理,最后输出多种不同分辨率的图像。假如我们只接了一个AD芯片,有4路摄像头输入,可以按不同的功能将VPSS的GROUP进行分组。VPSS独有概念:组group—通道channel多个GROUP 分时复用 VPSS 硬件。每个 VPSS GROUP 包含多个通道,channel: 1、物理通道:VPSS 硬件提供多个物理通道,每个通道具有缩放、裁

2020-08-31 15:41:17 2931

原创 海思项目---视频输入VI

0、VI的功能框图(VI在软件上分为4个部分)VI内部单元工作流程:摄像机通过镜头(lens)聚焦光线,将光信号投射到 sensor 的感光区域,sensor经过光电转换,将 Bayer 格式的原始图像送给 ISP(Image Signal Processing 图像信号处理) 经过算法处理,输出 RGB 空间域的图像给后端的视频采集单元。在这个过程中,ISP 通过运行在其上的 firmware 对 lens 和 sensor 进行相应控制,进而完成自动光圈、自动曝光、自动白平衡等功能。其中,firmw

2020-08-31 12:02:46 1517

原创 c语言/C++---基本数据类型、指针 及其所占内存大小

注意:求数组大小时,如果数组作为参数传递时,退化为指针,所以sizeof(arr)大小为该系统下指针的大小对于C字符串,需要牢记C/C++中一个汉字占两个字节(Linux下3个字节)。求struct 或者 class 的大小时候,除了基本的数据类型大小,特别要考虑的是字节对齐问题,如果是C++的还涉及虚函数的虚表问题,需要加上虚表指针的大小,关于内存对齐的问题在别的博客会详细写。关于数组,数组指针,指针数组稍微提一下:sizeof(数组名)????返回数组大小sizeof(数组指针)????

2020-08-29 10:47:28 741 1

原创 linux---中断处理机制---上半部和下半部

http://www.cnblogs.com/wang_yb/archive/2013/04/23/3037268.htmlhttp://blog.csdn.net/codectq/article/details/7479143http://blog.chinaunix.net/uid-24020646-id-2149974.html对于适时要求高的,必须放在上半部下半部的实现主要是通过软中断 ,tasklet,和工作队列来实现的.中断的概念一个“中断”仅仅是一个信号,当硬件需要获得处理器对它的

2020-08-27 22:22:58 292 1

原创 海康威视嵌入式软件开发工程师(BSP)笔试题链接

【笔试题】2019海康威视嵌入式软件开发工程师(BSP)笔试题

2020-08-27 20:27:31 798

原创 linux---内核模块管理命令---insmod、rmmod、lsmod、modinfo、modprobe

Linux命令大全 总网站Linux内核模块管理命令:insmod、rmmod、lsmod、modinfo、modprobeinsmod(选项)(模块名) 将给定的模块(通常是设备驱动程序)加载到内核中去rmmod(选项)(模块名) 从当前运行的内核中移除指定的内核模块lsmod 显示已经加载到内核中的模块的状态信息,运行lsmod命令后会列出所有已经载入系统的模块。modinfo(选项)(模块名) 显示指定模块的详细信息modprobe(选项)(模块名) 向内核中加载or移除

2020-08-27 20:25:31 488

原创 数据结构和排序---9种常规排序

冒泡排序【O(N2)】:依次比较相邻两元素,若前一元素大于后一元素则交换之,直至最后一个元素即为最大插入排序【O(N2)】:最初x个数字作为数组 数组后面的第一个数字进行插入→得到x+1的有序数组 迭代→整体变成有序数组选择排序【O(N2)】:每次找到余下全体最小值的索引值,替换到第i个位置 每次确定更新一个位置快排【O(NlogN)】 : 从两侧分别找一个较大、较小的数字并对调 ...

2020-08-27 20:08:36 398

原创 H264---码率控制---CBR、VBR、ABR、CVBR四种编码方式

1、CBR编码(固定比特率)在流式播放方案中使用CBR编码最为有效。使用CBR编码时,比特率在流的进行过程中基本保持恒定并且接近目标比特率,始终处于由缓冲区大小确定的时间窗内。CBR编码的缺点在于编码内容的质量不稳定。因为内容的某些片段要比其他片段更难压缩,所以CBR流的某些部分质量就比其他部分差。此外,CBR编码会导致相邻流的质量不同。通常在较低比特率下,质量的变化会更加明显。采用CBR编码方式时节目合成时间会短一些,但文件的长度会大一些(即相同时长的节目会占用更多的空间或者相同的空间只能容纳更短的节目

2020-08-23 17:11:17 2523

原创 H264---码率控制---率失真优化(Rate Distortion Optimation,RDO)

  在 H.264 视频编码标准中仅仅规定了编码后比特流的句法结构和解码器的结构,而对于编码器的结构和实现模式没有具体的规定。然而无论编码器的结构如何,相应的视频编码的控制都是编码器实现的核心问题。在对数字视频信号进行压缩编码时,编码器通过相应的编码控制算法以确定各种编码模式,如宏块的划分类型、运动矢量以及量化参数等,已选定的各种编码模式进一步确定了编码器输出比特流的比特率和失真度。  H.264 编码器采用了基于 **Lagrangian** 优化算法的编码控制模型,其编码性能相较于以往的所有

2020-08-23 16:57:00 2047

转载 H.264开源解码器评测

H.264开源解码器评测Peter Lee 2006.05.07 videosky.9126.com  2003年5月,当H.264编码标准草案发布时,很多人都觉得H.264太复杂,不宜实用。眨眼间3年过去了,以往的论断、疑惑被如今的现实冲洗的干干净净。随着硬件性能的提高和视频编码工作者对H.264的不断优化,如今的H.264已完全实用,最新的达芬奇芯片上能实现D1分辨率(720*480)视频的实时编码,而对于解码,普通的PC机就能实现x264编码的DVDrip电影的流畅播放。纵观过去的三年

2020-08-23 15:55:58 255

原创 H264---熵编码---CAVLC(上下文自适应的变长编码Context-based Adaptive Variable Length Coding)

https://blog.csdn.net/shaqoneal/article/details/54701241

2020-08-23 15:34:51 366

原创 h264---熵编码---CABAC

H.264採用两种方法进行熵编码:CAVLC编码和CABAC编码算法。CABAC????熵编码模式标识entropy_coding_mode=1採用基于上下文的自适应二进制算术编码算法(CABAC),可以充分利用上下文信息和算术编码的长处,使得编码后的平均码长更逼近图像的信息熵,达到最佳的编码效率。採用CABAC算法进行编码,可以提高大约10%的编码率详细编码步骤:1二值化:CABAC使用二进制算术编码,所以要将数据先转换为二进制数据,这些原始数据包含变换系数和运动矢量等。转换后二进制数据为可变长编

2020-08-23 15:33:01 594

原创 网络协议---RTP---NALU打包成RTP

nal_unit_type: 1~23----NALU包类型 24~31----RTP打包类型RTP包头RPT包头结构体:typedef struct { /**//* 1byte (0) */ unsigned char csrc_len:4;/* expect 0, csrc计数器,没啥用*/ unsigned char extension:1;/* e...

2020-08-23 15:21:31 274

原创 H264(代码)---序列参数集(SPS)---解析并获取帧率

H.264(H264)解码SPS获取分辨率和帧率 实例代码H264ParseSPS.h// H264ParseSPS.h#ifndef H264ParseSPS_h#define H264ParseSPS_h#include <stdio.h> typedef struct{ unsigned int profile_idc; unsigned int level_idc; unsigned int width; unsign

2020-08-23 15:08:44 2191

原创 H264---CPB(CodedBlockPattern)模式的识别 https://www.cnblogs.com/oldmanlv/p/6019025.html

在I_16x16宏块中,CPB通过mb_type确定而在其他宏块中,需要专门支出(传输)coded_block_pattern 表示六个bit亮度和色度 8x8 块可能含有非零的变换系数幅值。对预测模式不等于Intra_16x16 的 宏 块 , 比 特 流 中 存 在 coded_block_pattern 且 变 量 CodedBlockPatternLuma 和CodedBlockPatternChroma :2bit 色度CPB:CodedBlockPatternLuma = coded

2020-08-18 16:03:42 779

原创 H264---去块滤波deblocking

块效应(blocking artifact)在运动剧烈的场景常能观察到图像出现小方块,小方块在边界处呈现不连续的效果原因1、h.264在编码过程中对像素残差进行了DCT变换,变换后得到的DCT系数是与每个像素都相关的,这些系数代表了被变换数据的基础色调与细节。h.264在DCT变换后对DCT系数进行了量化,量化能有效去除相邻像素间的空间冗余,也就是说会抹去元素数据的部分细节。比较理想的情况是量化抹去人眼无法识别的细节部分,但是在低码率的情况下就会导致原始数据的细节丢失过多。而且,DCT变换时基于块的,

2020-08-17 15:07:32 1141

原创 H264---帧间编码---宏块的帧间预测解码

链接地址:H.264/AVC视频编解码技术详解GitHub代码地址一、帧间预测宏块类型在讨论帧内预测的章节中我们已经讨论过部分宏块类型的分类。我们知道,对于帧间编码的宏块,其划分方式可以分为两步,其一为宏块级划分,其二为子宏块级划分。下面分别讨论这两个步骤。1.1 帧间预测宏块划分我们知道,对于P宏块,其宏块级划分有4种方式:16×16、16×8、8×16和8×8。此外还存在两种模式即P_8x8ref0和P_Skip模式。其定义如下表所示:其中,P_8x8ref0表示虽然宏块是按照8×8划分,

2020-08-15 15:59:02 1394

原创 H264---参考列表----初始化、重排序、已解码图像的标记

一、参考帧列表在上一篇博文中我们已知,对于每一个P帧和B帧的解码都需要从解码图像缓存DPB中选择某个参考帧。DPB中的参考帧可分为短期参考帧和长期参考帧两种,分别按照PicNum和LongTermFrameIdx索引。通过这两个索引值可以在参考帧列表中获取对应的参考帧图像。解码不同的帧类型时,参考帧列表不同。当解码一个P或SP帧时,使用一个参考帧列表RefPicList0;当解码一个B帧时,使用两个参考帧列表RefPicList0和RefPicList1。执行过程如下:对参考帧列表进行初始化;若r

2020-08-15 14:13:01 1811

原创 H264---帧间编码---帧间预测编码(2):解码、显示顺序与图像管理

H.264/AVC视频编解码技术详解GitHub代码地一、基本概念nalu按照解码顺序frame_num送入解码器解码解码后的图像按照播放顺序POC(picture_order_count)进行存储和播放(由于B帧的存在,解码顺序和显示顺序会有差异)frame_num和POC通过slice_header传输:某一帧图像在解码完成后,可能会被保存于解码图像缓存中,用于后续图像帧间预测的参考帧。在解码图像缓存中,用于P帧或B帧帧间编码的参考帧图像保存为一个或两个参考帧列表,列表中参考帧的顺序可

2020-08-15 13:57:47 1416

原创 H264---H.264/AVC 三种配置Profiles(base、main、extended)和帧内/帧间预测 RDO外的模式选择方法

Profiles:Base Main Extended三种配置对应不同的应用场合:1、基本配置: 这种配置看名称也可以猜到,它具有基本的编解码性能和抗错能力,主要应用在低延时的电视会议,和可视电话中。这里的抗错能力是指,解码器在传输过程中,对出现的错误数据位流的一种应对能力。这种能力通常为:错误检测、重新传输、错误校正和其他错误处理措施。2、主流配置: 可以看到它在I像片帧内预测和P像片...

2020-08-12 16:58:21 1100

原创 H264---skip宏块(无像素残差,无MVd)与dierct预测模式(无MVd)

B_Skip类型宏块(200503版标准,表7-14最后一行): 解码时,通过Direct预测模式(时间或空间)计算出前、后向MV后,直接利用前、后向MV得到像素预测值。像素重构值=像素预测值B_Direct_16*16 类型宏块(200503版标准,表7-14第一行):有像素残差,无运动矢量残差(MVD)。解码时,通过Direct预测模式(时间或空间)计算出前、 后向MV后,利用前、后向MV得到像素预测值。然后,像素重构值=像素预测值 像素残差解码值B_Direct_16*16,它很特殊,它的名字里

2020-08-12 16:35:41 696

原创 网络协议---UDP/RTP协议----接受一个UDP包并解析

本文中的程序是一个UDP/RTP协议流媒体数据解析器。该程序可以分析UDP协议中的RTP 包头中的内容,以及RTP负载中MPEG-TS封装格式的信息。通过修改该程序可以实现不同的UDP/RTP协议数据处理功能。原理MPEG-TS封装格式数据打包为RTP/UDP协议然后发送出去的流程如下图所示。图中首先每7个MPEG-TS Packet打包为一个RTP,然后每个RTP再打包为一个UDP。其中打包...

2020-08-04 15:04:33 502

原创 网络协议---TCP---Nagle算法&&延迟ACK

链接:https://www.nowcoder.com/questionTerminal/787f0b432012420cb2918b7e1ca37ab2来源:牛客网当有一个TCP数据段不足MSS,比如要发送700Byte数据,MSS为1460Byte的情况。nagle算***延迟这个数据段的发送,等待,直到有足够的数据填充成一个完整数据段。也许有人会问,这有什么影响呢?没有太大的影响,总体上来说,这种措施能节省不必要的资源消耗。但是要发送的总体数据很小时,这种措施就是拖后腿了。比如,用户请求一个网页,

2020-08-04 14:57:48 210

原创 网络协议---IP头和TCP头

IP头①版本号:指IP协议的版本。通信双方使用的IP协议版本必须一致,对于IPv4来说,就是4。②头长度:可表示的最大十进制数是15(?个int长度),注意首部长度字段所表示数的单位是32位字(也就是4字节),所以IP头部最大长度是60字节(最小20字节)。③Tos服务字段:该字段用8位表示。该字段一般情况下不使用。④IP报文总长度: IP数据报(首部+数据)整体占多少字节。该字段为16...

2020-08-04 14:21:42 423

原创 网络协议---UDP---实现可靠数据传输

UDP没有Delievery Garuantee,也没有顺序保证,所以如果你要求你的数据发送与接受既要高效,又要保证有序,收包确认等,你就需要在UDP协议上构建自己的协议。比如RTCP,RTP协议就是在UPD协议之上专门为H.323协议簇上的IP电话设计的一种介于传输层和应用层之间的协议。下面分别介绍三种使用UDP进行可靠数据传输的协议RUDP(Reliable User Datagra...

2020-08-04 13:51:54 504

原创 ffplay---命令(选项)及使用

ffplay命令格式:ffplay [选项] [‘输入文件’]选项:'-x width' 强制以 "width" 宽度显示'-y height' 强制以 "height" 高度显示'-an' 禁止音频'-vn' 禁止视频'-ss pos' 跳转到指定的位置(秒)'-t duration' 播放 "duration" 秒音/视频'-bytes' 按字节跳转'-nodisp

2020-08-03 16:37:36 932

原创 H264---参考图像序列标记 (marking)操作的语义

重排序(reordering)操作是对参考帧队列重新排序,而标记(marking)操作负责将参考图像移入或移出参考帧队列。dec_ref_pic_marking( ) { if( nal_unit_type = = 5 ) { // no_output_of_prior_pics_flag 仅在当前图像是 IDR 图像时出现这个句法元素,指明是否要将前面已解码的图像全部输出。 no_output_of_prior_pic

2020-07-30 22:59:53 485

原创 H264---MV---MV(预测矢量)=MVP(预测运动矢量)+MVD(运动矢量残差)

MVP是根据帧内相领块A,B,C的MV预测得到的,然后把当前点o加上MVP,获得新的匹配点x,在新点x的基础上进行搜索,获得mcost最小的点y,y与x的差为MVD,那么o 与y之间的向量为MV=MVP+MVD(相邻块的运动矢量通常有很高的相关性,因而每个运动矢量可以用其相邻的预先编码的矢量进行预测。一个预测矢量MVp建立于先前运动矢量的计算,并且一般只有MVD(当前运动矢量与MVp的差值)被编码和传输。这种方法建立基于运动预测矢量与运动补偿分割和附近矢量的可用性的相关性上。帧间预测简要说明首先根据当

2020-07-27 13:43:07 1837

原创 ffplay---源码解析---even_loop

/* handle an event sent by the GUI */static void event_loop(VideoState *cur_stream){ SDL_Event event; double incr, pos, frac; for (;;) { double x; refresh_loop_wait_event(cur_stream, &event); switch (event.type) {

2020-07-25 17:18:47 211

原创 ffmplay---seek实现播放进度控制

FFmpeg音视频播放器系列(第三篇:seek实现播放进度控制)如何实现播放进度控制想实现播放进度控制,就意味着需要随机的访问流媒体文件,那么就需要使用av_seek_frame或者avformat_seek_file函数。seek操作要点seek操作基准:即seek操作当前时间点,因此在进行播放时需要实时记录音视频流的DTS或者PTSseek时间单位:进行seek操作时,根据流索引,确定其时间单位time_base,seek时间大小:即向前或者向后seek的时间大小,根据此时间大小和当前时间点

2020-07-25 14:41:19 1113 1

原创 ffmpeg---自定义IO中断 AVFormatContext::interrupt_callback

情景(原因)avformat_open_input默认是阻塞操作,如果不加控制,等待时间可能会达到30s以上av_read_frame的过程中相机断开连接导致读取码流一直死等解决方法:打开流媒体之前注册FFmpeg回调函数avformat_open_input的长时间默认阻塞问题1、设置成非阻塞(通常是不推荐的)  ic->flags |= AVFMT_FLAG_NONBLOCK;2、设置超时时间  rtsp支持;而rtmp不支持,配置参数会报错(ffmpeg bug)3、设置int

2020-07-25 12:14:26 2015 2

原创 H264---播放顺序POC(pic_order_cnt)---pic_order_cnt_type=0、1、2 + POC和framenum比较

一、基本概念1、编码顺序H.264的码流输出顺序便是编码顺序,所以在编码B帧的时候,由于B是双向预测,需要先编码后面编码帧P/I,这时候先输出I/P,后面才有B帧,我们在解码段拿到相应的I/P帧后,不能马上丢到buffer list里面,还需要等待后面的B帧,解码B帧后再reorder。2、frame_num每个参考帧都有一个依次连续的frame_num 作为它们的标识,这指明了各图像的解码顺序。在非参考帧的slice header中也会出现frame_num,不过该语法元素只有在参考帧才有意义。H

2020-07-23 14:15:37 3610 1

原创 H264---帧/场编码模式选择---PAFF MBAFF frame_mbs_only_flag mb_adaptive_frame_field_flag field_pic_flag

1、片头的field_pic_flag ,指定当前图像是帧编码(0)还是场编码(1)。这个元素在同一图像的所有片中应具有相同值。2、sps中的frame_mbs_only_flag 和mb_adaptive_frame_field_flag再加上本句法元素共同决定图像的编码模式。1、frame_mbs_only_flag (位于sps) = 0 表示编码视频序列的编码图像可能是编码场或编码帧。 = 1 表示编码视频序列的每个编码图像都是一个仅包含帧宏块的编码帧2、mb_a

2020-07-23 00:48:22 1725

原创 linux---同步和互斥的区别

一、同步与互斥的区别1. 同步同步,又称直接制约关系,是指多个线程(或进程)为了合作完成任务,必须严格按照规定的 某种先后次序来运行。例如,线程 T2 中的语句 y 要使用线程 T1 中的语句 x 的运行结果,所以只有当语句 x 执行完成之后语句 y 才可以执行。我们可以使用信号量进行同步:semaphore S=0; // 初始化信号量T1() { ... x; // 语句x V(S); // 告诉线程T2,语句x已经完成

2020-07-22 20:43:32 421

原创 c语言--取整: 强制类型转换(?)、floor、round、ceil、fix

C语言有以下几种取整方法:1强制类型转换成int。如: int i = 2.5; 或 i = (int) 2.5; 这种方法采用的是舍去小数部分。2、C/C++中的整数除法运算符"/"本身就有取整功能(int / int),而下面介绍的取整函数返回值是double。整数除法对正数的取整是舍去小数部分,但是整数除法对负数的取整结果和使用的C编译器有关。3、floor函数:向下取整4、ceil:向上取整 5、round(x):四舍五入取整(相同时取最大值)...

2020-07-22 20:38:37 2288

原创 c语言---宏

宏1、仅仅替换2、不能定义宏参类型3、不会检查宏参有没有定义定义带参数的宏“#define JH(a,b,t)t=a; a=b; b=t”,对两个参数a、b的值进行交换,下列表述中正确的是( )。

2020-07-22 20:20:22 405

rtsp-3518e-ov9712---.rar

101259341rtsp-3518e-ov9712 实现rtsp服务器支持 实现rtsp服务器支持 实现rtsp服务器支持 实现rtsp服务器支持

2020-09-10

feng-0.1.99.1.rar

feng-0.1.99.1(C代码实现rtsp协议)比较老的版本,但是比之前找到的较新的版本不会少太多东西,基本上都有,但是相关的博客太少

2020-09-07

hisi3518示例venc添加rtsp支持后的venc示例代码).rar

hisi3518示例venc添加rtsp支持后的venc示例代码)

2020-06-20

H264Analysis-master.zip

H.264码流解析器H264Analysis from github 【https://github.com/Gosivn/H264Analysis】

2020-04-18

h264bitstream-master.zip

h264bitstream ----copy from github【https://github.com/aizvorski/h264bitstream】

2020-04-18

v4l2编码并转化为h264文件.rar

v4l2提取出yuyv并编码称为h264文件 个人备份用

2020-02-25

空空如也

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

TA关注的人

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