音视频基础

2023-05-16

音视频基础

  • 写在前面
  • 基础概念
    • 音视频直播推流和拉流
      • 什么是推流
      • 什么是拉流
      • 推流和拉流的区别
    • 协议层、封装格式层、编解码层、像素层
    • RTP/RTCP/RTMP/RTSP区别
      • RTP(Real-time Transport Protocol)实时传输协议
      • RTP的协议层次
      • RTCP(Real-time Transport Control Protocol)实时传输控制协议
      • RTSP(Real Time Streaming Protocol)实时流传输协议
      • RTSP与RTP的区别
      • RTMP(Real Time Message Protocol)实时消息传输协议
      • RTSP、RTMP和HTTP
        • 共同点
        • 区别
    • 基于TS的传输协议栈
    • TS流与RTSP流的区别
    • HLS(HTTP Live Streaming)基于HTTP的流媒体网络传输协议
    • 拓展:编码、封装
    • FFmpeg
      • 简介
      • FFmpeg基本组成

写在前面

学习音视频基础的过程中了解到雷神,得知雷神陨落的消息有点莫名心酸,不禁叹息。13年的时候,我还是个初中生,前人已去,精神永存。这种对于技术的钻研和奉献精神将会一直激励着后来者,纪念雷神。雷霄骅
在这里插入图片描述

基础概念

音视频直播推流和拉流

为什么直播现场的信息,用户通过手机或者网站就能很快的看到呢?为什么有时候网络不稳定,直播效果会有延迟呢?现场的视频信号又是如何传到网络呢?这些所有问题的产生,都离不开视频直播中常说的两个词:推流和拉流。
在这里插入图片描述

什么是推流

推流,指的是把采集阶段封包好的内容传输到服务器的过程。其实就是将现场的视频信号传到网络的过程。“推流”对网络要求比较高,如果网络不稳定,直播效果就会很差,观众观看直播时就会发生卡顿等现象,观看体验很是糟糕。

要想用于推流还必须把音视频数据使用传输协议进行封装,变成流数据。常用的流传输协议有RTSP、RTMP、HLS等,使用RTMP传输的延时通常在1–3秒,对于手机直播这种实时性要求非常高的场景,RTMP也成为手机直播中最常用的流传输协议。最后通过一定的Qos算法将音视频流数据推送到网络断,通过CDN进行分发。

在直播场景中,网络不稳定是非常常见的,这时就需要Qos来保证网络不稳情况下的用户观看直播的体验,通常是通过主播端和播放端设置缓存,让码率均匀。另外,针对实时变化的网络状况,动态码率和帧率也是最常用的策略。

直播中使用广泛的“推流协议”一般是RTMP(Real Time Messaging Protocol——实时消息传输协议)。该协议是一个基于TCP的协议族,是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。支持该协议的软件包括Adobe Media Server/Ultrant Media Server/red5等。

什么是拉流

拉流是指服务器已有直播内容,根据协议类型(如RTMP、RTP、RTSP、HTTP等),与服务器建立连接并接收数据,进行拉取的过程。拉流端的核心处理在播放器端的解码和渲染,在互动直播中还需集成聊天室、点赞和礼物系统等功能。

拉流端现在支持RTMP、HLS、HDL(HTTP-FLV)三种协议,其中,在网络稳定的情况下,对于HDL协议的延时控制可达1s,完全满足互动直播的业务需求。RTMP是Adobe的专利协议,开源软件和开源库都支持的比较好,延时一般在1-3秒。HLS是苹果提出的基于HTTP的流媒体传输协议,优先是跨平台性比较好,HTML5可以直接打开播放,移动端兼容性良好,但是缺点是延迟比较高。
在这里插入图片描述

推流和拉流的区别

用户最终看到一条直播视频,可能会通过两种方式达成,一种是主动把内容传输到服务器,缓存在边缘节点,终端用户随时可以调取观看,这是推流;一种是当终端用户想要看某个内容时,将内容从源站调取,并缓存到边缘节点,这是拉流。

协议层、封装格式层、编解码层、像素层

在这里插入图片描述
rtmp:协议栈
H264:你可以这么理解,YUV或者RGB原始数据,编码后的数据
I420:原始的YUV数据
mp4、avi:容器,所谓容器,里面既有音频 也有视频。

RTP/RTCP/RTMP/RTSP区别

RTP(Real-time Transport Protocol)实时传输协议

用于Internet上针对多媒体数据流的一种传输层协议.RTP 协议和 RTP 控制协议 RTCP 一起使用,而且它是建立在 UDP 协议上的。RTP 不像http和ftp可完整的下载整个影视文件,它是以固定的数据率在网络上发送数据,客户端也是按照这种速度观看影视文件,当影视画面播放过后,就不可以再重复播放,除非重新向服务器端要求数据。

RTP一般不作为单独应用层协议处理,RTP传输音频/视频数据,如果是PLAY,Server发送到Client端,如果是RECORD,可以由Client发送到Server。整个RTP协议由两个密切相关的部分组成:RTP数据协议和RTP控制协议(即RTCP)

RTP的协议层次

RTP(实时传输协议),顾名思义它是用来提供实时传输的,因而可以看成是传输层的一个子层。下图给出了流媒体应用中的一个典型的协议体系结构。
在这里插入图片描述
从图中可以看出,RTP被划分在传输层,它建立在UDP上。同UDP协议一样,为了实现其实时传输功能,RTP也有固定的封装形式。RTP用来为端到端的实时传输提供时间信息和流同步,但并不保证服务质量。服务质量由RTCP来提供。

不少人也把RTP归为应用层的一部分,这是从应用开发者的角度来说的。操作系统中的TCP/IP等协议栈所提供的是我们最常用的服务,而RTP的实现还是要靠开发者自己。因此从开发的角度来说,RTP的实现和应用层协议的实现没不同,所以可将RTP看成应用层协议。

RTP实现者在发送RTP数据时,需先将数据封装成RTP包,而在接收到RTP数据包,需要将数据从RTP包中提取出来。

RTCP(Real-time Transport Control Protocol)实时传输控制协议

RTCP是实时传输协议(RTP)的一个姐妹协议。RTP 协议和 RTP控制协议(RTCP) 一起使用,而且它是建立在UDP协议上的(一般用于视频会议)。RTCP包括Sender Report和Receiver Report,用来进行音频/视频的同步以及其他用途,是一种控制协议

RTSP(Real Time Streaming Protocol)实时流传输协议

RTSP是 TCP/IP 协议体系中的一个应用层协议,是用来控制声音或影像的多媒体串流协议。该协议定义了一对多应用程序如何有效地通过 IP 网络传送多媒体数据。

RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输。基于TCP的RTSP负责信令控制。总结起来为:RTSP传输一般使用UDP,信令交互采用TCP,协议基于TCP。

  • 走UDP协议:UDP负责传输单播中的MP2T/UDP、MP2T/RTP/UDP和组播流;
  • 走TCP协议:RTSP(TCP)负责传输MP2T/TCP、MP2T/RTP/TCP单播流;

HTTP与RTSP相比,HTTP传送HTML,而RTSP传送的是多媒体数据。HTTP请求由客户机发出,服务器作出响应;使用RTSP时,客户机和服务器都可以发出请求,即RTSP可以是双向的。
在这里插入图片描述

RTSP与RTP的区别

  • RTSP是一种双向实时数据传输协议,它允许客户端向服务器端发送请求,如回放、快进、倒退等操作。当然,RTSP 可基于 RTP 来传送数据,还可以选择TCP、UDP、组播UDP等通道来发送数据,具有很好的扩展性。它时一种类似与HTTP协议的网络应用层协议。
  • RTP是实时传输协议,一般不作为单独应用层协议处理;RTSP是实时流传输协议,它是与HTTP等级的应用层网络协议,它是由realmedia开发,用来传输流媒体影像文件。
  • RTSP发起/终结流媒体、RTP传输流媒体数据 、RTCP对RTP进行控制、同步
  • RTSP可基于RTP之上,比如常见的视频流传输过程:视频压缩文件->RTP打包->基于UDP的RTSP网络传输;也可以不做成RTP包,直接基于UDP传送,如视频压缩文件->基于UDP的RTSP网络传输。

媒体数据使用RTP、RTCP协议一般使用UDP作为传输层。适合IPTV场景。数据源包括现场数据与存储在剪辑中的数据。该协议目的在于控制多个数据发送连接,为选择发送通道,如UDP、多播UDP与TCP提供途径,并为选择基于RTP上发送机制提供方法传输时所用的网络通讯协定并不在其定义的范围内,服务器端可以自行选择使用TCP或UDP来传送串流内容,比较能容忍网络延迟。

RTMP(Real Time Message Protocol)实时消息传输协议

RTMP是Macromedia 开发的一套视频直播协议,现在属于 Adobe。和HLS一样都可以应用于视频直播,基于TCP不会丢失,默认使用端口1935。RTMP是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。

RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信,用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题,优势在于低延迟,稳定性高,支持所有摄像头格式,浏览器加载 flash插件就可以直接播放

RTMP基于flash无法在 iOS的浏览器里播放,但是实时性比 HLS 要好。是Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输开发的开放协议。iOS 代码里面一般常用的是使用 RTMP 推流,可以使用第三方库 librtmp-iOS 进行推流,librtmp 封装了一些核心的 API 供使用者调用。

RTSP、RTMP和HTTP

  • HTTP:即超文本传送协议(FTP即文件传输协议)
  • RTSP:(Real Time Streaming Protocol)实时流传输协议
  • RTMP:(Real Time Message Protocol)实时消息传输协议

共同点

  • RTSP RTMP HTTP都是在应用应用层。
  • 理论上RTSP 、RTMP、 HTTP都可以做直播和点播,但一般做直播用RTSP RTMP,做点播用HTTP。做视频会议的时候原来用SIP协议,现在基本上被RTMP协议取代了。

区别

  • HTTP将所有的数据作为文件做处理。HTTP协议不是流媒体协议。RTMP和RTSP协议是流媒体协议。
  • RTMP协议是Adobe的私有协议,未完全公开。RTSP协议和HTTP协议是共有协议,并有专门机构做维护。
  • 流格式不同。RTMP协议一般传输的是flv,f4v格式流。RTSP协议一般传输的是ts,mp4格式的流。RTSP传输一般需要2-3个通道,命令和数据通道分离,HTTP和RTMP一般在TCP一个通道上传输命令和数据。
  • 对网络要求不同。RTSP+RTP主要用于IPTV或低延迟场景,比如监控摄像头,传输数据使用的是UDP或TCP,在网络环境比较稳定的情况下,传输效率是比较高的;RTMP主要用于互联网音视频传输,它使用的是TCP传输,因为互联网环境相对较差,采用RTMP保证了视频的传输质量,但是其传输延迟相对较高,传输效率相对较低。
  • RTSP虽然实时性最好,但是实现复杂,适合视频聊天和视频监控;RTMP强在浏览器支持好,加载flash插件后就能直接播放,所以非常火,相反在浏览器里播放rtsp就很困难了。

基于TS的传输协议栈

在这里插入图片描述

TS流与RTSP流的区别

  • 首先RTSP是实时流传输协议,是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学、网景和RealNetworks公司提交的IETF RFC标准。该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或RTP完成数据传输。
  • TS流:这个是MPEG国际组织规定的音视频封装的标准,机顶盒接收的都是这种格式的数据。DVB-T、DVB-S、DVB-C(地面机顶盒、卫星机顶盒、有线机顶盒)解析的都是TS流数据

HLS(HTTP Live Streaming)基于HTTP的流媒体网络传输协议

HLS是苹果公司提出的动态码率自适应技术。主要用于PC和Apple终端的音视频服务。

HLS协议是苹果推出的解决方案,将视频分成5-10秒的视频小分片,然后用m3u8索引表进行管理,由于客户端下载到的视频都是5-10秒的完整数据,故视频的流畅性很好,但也同样引入了很大的延迟(HLS的一般延迟在10-30s左右)。

HLS协议客户端支持简单, 只需要支持 HTTP 请求即可, HTTP 协议无状态, 只需要按顺序下载媒体片段即可,而且网络兼容性好, HTTP 数据包也可以方便地通过防火墙或者代理服务器。

HLS主要是延时比较大,RTMP主要优势在于延时低。HLS可以用在IOS系统的APP上,微信公众号、小程序等也只能使用HLS。直播应用中,RTMP和HLS基本上可以覆盖所有客户端观看。

拓展:编码、封装

编码格式:
支持H.265、H.264、MPEG4、MJPEG等多种编码格式;

封装格式:
支持PS、RTP、TS、ES等主流的封装格式;

物理景象被IPC(编码设备)转换为数字信息,例如

  • 编码
    IPC(编码设备)先拍照,再将图片按照“H.265、H.264、MPEG4、MJPEG等多种编码格式”中其中一种格式的标准转换为机器数据
  • 封装
    IPC(编码设备)将一串编码数据(可能是一张图片,也可能是多张图片)按照“PS、RTP、TS、ES等主流的封装格式”中一个格式的标准,加上封装头,再进行传输
    封装头的好处:便于解码器解码,例如告诉解码器这段数据的编码标准、分辨率等等信息

FFmpeg

简介

FFmpeg即是一款音视频编解码工具,同时也是一组音视频编码开发套件,作为编码开发套件,它为开发者提供了丰富的音视频处理的调用接口。

FFmpeg提供了多种媒体格式的封装和解封装,包括多种音视频编码、多种协议的流媒体、多种多彩格式转换、多种采样率转换、多种码率转换等;FFmpeg框架提供了多种丰富的插件模块,包含封装与解封装的插件、编码与解码的插件等。

FFmpeg基本组成

FFmpeg框架的基本组成包含AVFormat、AVCodec、AVFilter、AVDevice、AVUtil等模块库,结构图如下:
在这里插入图片描述

AVFormat–FFmpeg的封装模块
AVFormat中实现了目前多媒体领域中的绝大多数媒体封装格式,包括封装和解封装,如MP4、FLV、KV、TS等文件封装格式,RTMP、RTSP、MMS、HLS等网络协议封装格式。FFmpeg是否支持某种媒体封装格式,取决于编译时是否包含了该格式的封装库。根据实际需求,可进行媒体封装格式的扩展,增加自己定制的封装格式,即在AVFormat中增加自己的封装处理模块。

AVCodec–FFmpeg的编解码模块
AVCodec中实现了目前多媒体领域绝大多数常用的编解码格式,即支持编码,也支持解码。AVCodec除了支持MPEG4、AAC、MJPEG等自带的媒体编解码格式之外,还支持第三方的编解码器,如H.264(AVC)编码,需要使用x264编码器;H.265(HEVC)编码,需要使用x264编码器;MP3(mp3lame)编码,需要使用libmp3lame编码器。如果希望增加自己的编码格式,或者硬件编解码,则需要在AVCodec中增加相应的编解码模块。

AVFilter–FFmpeg的滤镜模块
AVFilter库提供了一个通用的音频、视频、字幕等滤镜处理框架。在AVFilter中,滤镜框架可以有多个输入和多个输出。

swresample–FFmpeg的音频转换计算模块
swresample模块提供了高级别的音频重采样API。例如允许操作音频采样、音频通道布局转换与布局调整。

swscale–FFmpeg的视频图像转换计算模块
swscale模块提供了高级别的图像转换API,例如它允许进行图像缩放和像素格式转换,常见于将图像从1080p转换成720p或者480p等的缩放,或者将图像数据从YUV420p转换成YUYV,或者YUV转RGB等图像格式转换。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

音视频基础 的相关文章

  • MATLAB数学建模 统计

    统计 叙述统计学数值统计图形统计 推论统计学练习 叙述统计学 数值统计 主要介绍一些函数 M 61 mean A 返回 A 沿大小不等于 1 的第一个数组维度的元素的均值 如果 A 是向量 xff0c 则 mean A 返回元素均值 xff
  • MATLAB数学建模 回归与内插

    以下内容为个人笔记 xff0c 部分图片来源于郭老师课件或课程截图 笔记汇总 xff1a MATLAB基础教程 课程视频 xff1a MATLAB基础教程 台大郭彦甫 xff08 14课全 高清 含课件 xff09 回归与内插 多项式曲线拟
  • [Java] [eclipse] Syntax error on token “;“, , expected 错误

    错误提示 eclipse中遇到如下错误 xff1a 错误代码如下 xff1a 错误原因 类体的内容由两部分构成 xff1a 一部分是变量的声明 xff1b 另一部分是方法的定义 注意在方法外 xff0c 只能有变量的声明 xff0c 不能包
  • MacOS 下基于 Docker 安装 SQL Server

    文章目录 MacOS Docker 安装使用 Homebrew 安装手动下载安装修改镜像加速 安装 SQL Server1 拉取并运行容器镜像2 连接 SQL Server2 2 使用 Navicat 连接 SQL Server 解决 SQ
  • 监督学习-线性回归(数学建模)

    这是在学习吴恩达的机器学习课程时 xff0c 一些随笔 课程地址在 coursera ML 文章目录 监督学习 VS 无监督学习Cost function梯度下降学习率 alpha 多元梯度下降特征缩
  • 吴恩达机器学习 - Coursera Machine Learning(数学建模向)

    这里作为一个目录吧 xff0c 正在学习中 学习过程中做的笔记 xff0c 主要对在数模中比较实用的一些东西做了补充 xff0c 另外就是附上了编程练习的个人解答 希望自己能坚持下去 xff01 监督学习 线性回归 课程原地址在 xff1a
  • win11 安装 WSL2 在非 C 盘及配置(图形界面+代理)

    WSL 安装及配置 直接安装 WSL2 在非 C 盘启用 WSL 功能前提条件设置默认安装 WSL2安装在非 C 盘 图形界面先决条件更新 WSL 以支持 GUI 配置 WSL2 使用 Windows 网络代理 直接安装 WSL2 在非 C
  • ranger 命令_如何使用Ranger从命令行浏览文件

    ranger 命令 Ranger是一种非常方便的基于终端的文件导航器 xff0c 它使用Python编写 xff0c 可用于Linux和Mac Ranger允许您使用键盘上的箭头键浏览文件系统 xff1a 上 下可在当前目录 xff08 中
  • java程序将ftp内文件转为http预览及下载流

    首先引入ftp连接需要的jar包 lt dependency gt lt groupId gt commons net lt groupId gt lt artifactId gt commons net lt artifactId gt
  • 解决 grant all privileges on *.* to ‘root‘@‘%‘ identified by ‘PASSWORD‘ with grant option; 错误

    从MySQL 8开始 xff0c 您不再可以 隐式地 使用GRANT命令创建用户 用CREATE USER代替 xff0c 后面跟着GRANT语句 CREATE USER 39 root 39 64 39 39 IDENTIFIED BY
  • 约瑟夫环问题(菜鸟自己的总结)

    约瑟夫问题 首先约瑟夫问题 据说著名犹太历史学家 Josephus有过以下的故事 xff1a 在罗马人占领乔塔帕特后 xff0c 39 个犹太人与Josephus及他的朋友躲到一个洞中 xff0c 39个犹太人决定宁愿死也不要被敌人抓到 x
  • 模拟电路 电学英语单词大赏

    AC Alternating current 交流电 DC direct current 直流电 op amp operation amplifier 运算放大器 paritical 粒子 electrical potential ener
  • Windows下Seata配置启动

    此为个人笔记 xff0c 看了网上其他人的配置 xff0c 仅仅用于记录 1 首先需要下载安装包与源码 xff0c 俩者版本需一致 https github com seata seata releases 2 创建一个seata 数据库
  • Html技术

    软件架构 xff1a 架构访问端服务端C SClientServerB SBrowserServer Html xff1a Hyper Text Markup Language xff08 超文本标记语言 xff09 简写 xff1a HT

随机推荐

  • Python库的安装问题

    Python库的安装问题 所遇问题与解决方式安装版本 1 Pycharm安装gdal库失败1 1 错误一 xff1a 缺少VC 43 43 14环境1 2 错误二 xff1a 安装VC 43 43 14 0后 xff0c 再在pycharm
  • 转JSON时去除指定属性、JSONArray和JSONObject的顺序变化问题

    一 转JSON时去除指定属性 span class token comment 方法一 xff1a 遍历循环 xff0c 使用remove去除JSON属性 span JSONArray jsonList span class token o
  • java书城登录注册查询 原生servlet实现

    java书城登录注册查询 原生servlet实现 前言一 项目功能二 项目实现方法1 项目结构 总结图片展示结语另外 文章目录 前言一 项目功能二 项目实现方法1 项目结构 总结图片展示结语另外 前言 本人是一位破烂专科的大二学生 xff0
  • shell 美化工具(oh my posh)

    Chat 最近放寒假了 xff0c 这几天在学习小程序与go xff0c 然后经常逛github xff0c 看一些go的项目 xff0c 然后发现一个由go写的项目 xff0c 非常的不错 xff0c 它叫oh my posh xff0c
  • linux twm_回到TWM Linux桌面基础知识

    linux twm TWM是最不起眼的窗口管理器 xff0c 类似于您购买相框时获得的那些样本照片 Xorg随X11 Windows系统一起提供的基本的 xff0c 几乎是最低限度的概念证明 xff0c 可以证明确实可以为图形用户界面 xf
  • sequelize 爬坑【2】 Op 相关操作合集【转】

    const Op span class token operator 61 span Sequelize span class token punctuation span Op span class token punctuation s
  • Spring框架入门

    文章目录 Spring第1章 简介 61 61 1 1 Spring概述 61 61 Spring的下载地址1 3 Spring模块 61 61 Spring框架分为五大模块 xff1a 61 61 1 4 HelloWorld 61 61
  • 小米笔试真题一

    小米笔试真题一 第一题第二题第三题第四题第五题第六题第七题第八题第九题第十题第十一题第十二题第十三题总结 第一题 下述算法的时间复杂度为 xff08 xff09 A O log2n B O n C O nlog2n D O n 2 span
  • C语言数组专题训练

    C语言数组专题训练 第一题第二题第三题第四题第五题第六题第七题第八题第九题第十题第十一题 第一题 若有语句char s1 10 s2 10 61 books xff1b 则能将字符串 books 存放到数组 s1 的正确语句是 A strc
  • 逻辑结构与物理结构

    逻辑结构与物理结构 逻辑结构集合结构线性结构树形结构图形结构 物理结构 逻辑结构 简单的来说 xff0c 逻辑结构就是数据之间的关系 逻辑结构常见有四种类型 xff1a 集合结构 xff0c 线性结构 xff0c 树形结构 xff0c 图形
  • 乐鑫面试流程

    乐鑫面试流程 面试岗位笔试技术面试HR面电话聊天发offer 面试岗位 嵌入式软件实习生 笔试 题目分为选择题和编程题 xff0c 选择题二十题 xff0c 编程题两题 xff1b 选择题基本是一些计算机相关基础知识 xff0c 比较简单
  • 全局变量和静态变量的初始化

    全局变量和静态变量的初始化 全局变量 static变量初始化时间静态局部变量全局变量 不要写出和编译顺序相关的程序总结 全局变量 static变量初始化时间 静态局部变量 首先 xff0c 静态局部变量和全局变量一样 xff0c 数据都存放
  • 不同操作系统及CPU字长、寻址能力、指针宽度的理解

    不同操作系统及CPU字长 寻址能力 指针宽度的理解 字长CPU位宽CPU的寻址能力操作系统32bit 64bit指针大小 字长 64位CPU和32位CPU中64和32的含义 xff1a 64和32指的是CPU中的寄存器 通用 的字长 xff
  • new和malloc的区别

    new和malloc的区别 1 new从自由存储区上分配内存 xff0c malloc从堆上分配内存 自由存储区是C 43 43 基于new操作符的一个抽象概念 xff0c 凡是通过new操作符进行内存申请 xff0c 该内存即为自由存储区
  • 程序中的负数存储及类型转换

    程序中的负数存储及类型转换 负数在计算机中怎样存储什么是原码 反码 补码为什么要设置反码 xff0c 补码剖析本质 C语言数据类型转换 xff08 自动类型转换 43 强制类型转换 xff09 自动类型转换强制类型转换类型转换只是临时性的自
  • Java Collections singleton()方法与示例

    集合类singleton 方法 Collections Class singleton method singleton method is available in java util package singleton 方法在java
  • 找素数问题

    span class token macro property span class token directive hash span span class token directive keyword include span spa
  • 嵌入式面试题

    面试题 字符串能直接比较大小吗typedef定义数组类型用法 字符串能直接比较大小吗 C 43 43 中字符串分两种 xff0c 一种是C语言的字符串 xff0c 一种是string字符串 C语言字符串是不可以直接比较大小的 xff0c s
  • 解决Endnote插入参考文献时导致word闪退问题

    问题描述 xff1a 通过endnote插入参考文献时 xff0c 会使得word闪退 原因分析 有像域代码之类的交互 xff0c 与endnote冲突 解决方法把word文档clean下 xff0c 即将域代码删除 解决方法 Ctrl 4
  • 音视频基础

    音视频基础 写在前面基础概念音视频直播推流和拉流什么是推流什么是拉流推流和拉流的区别 协议层 封装格式层 编解码层 像素层RTP RTCP RTMP RTSP区别RTP Real time Transport Protocol 实时传输协议