![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
音视频
OH,CGWLMXUP
这个作者很懒,什么都没留下…
展开
-
WebRTC入门与实战 --- WebRTC网络传输基本知识---TURN
TURN介绍目的是解决对称NAT无法穿越的问题,遇到对称型等无法穿越时将数据传给TURN服务,由TURN服务中介转给其他接收者,或者其他接收者发送数据给TURN服务,转送给client端 建立在STUN之上,消息格式使用STUN格式消息,协议头和body基本一样,外壳形式一样内容有所不同 TRUN Client要去服务端分配一个公共IP和Port用于接收或发送数据 ...原创 2019-11-16 19:47:56 · 436 阅读 · 0 评论 -
WebRTC入门与实战 --- WebRTC网络传输基本知识---STUN
STUN介绍STUN存在的目的就是进行NAT穿越 STUN是典型的客户端/服务器模式。客户端发送请求,服务端进行响应RFC STUN规范RFC3489/STUN Simple Traversal of UDP Through NAT 通过UDP进行穿越 RFC5389/STUN Session Traversal Utilities for NAT 一系列穿越N...原创 2019-11-16 11:56:45 · 422 阅读 · 0 评论 -
WebRTC入门与实战 --- WebRTC网络传输基本知识---NAT
在介绍这些基本知识之前我们要清楚WebRTC的目的以及根本要解决的问题是什么。WebRTC首要要解决的问题是两个浏览器之间如何进行音视频的实时互动,对于底层来说就是两个端点之间如何进行高效的网络传输。 NAT(Network Address Translator) 网络上的主机要有一个公网的地址才能进行通讯,现实中我们大部分主机都是在网关之后的,实际是有一个映射,在网关上有一...原创 2019-11-16 11:33:40 · 737 阅读 · 0 评论 -
WebRTC入门与实战 --- WebRTC信令服务器原理
先来看下信令服务器的作用: 如果没有信令服务器webrtc之间是无法通信的,从图可以看出,发起端和接收端之间想要传递数据是必须要经过信令服务器的,这两个信息是什么呢,第一个就是媒体信息通过SDP协议描述,例如双方通信的编解码器、是否支持音视频等通过信令服务器中转传递。第二个需要传递的信息是网络信息 ,通过服务器传到对端,对端拿到信息后才能知道双方是否在同一个局域网,不在同一个网...原创 2019-11-10 22:37:44 · 1214 阅读 · 0 评论 -
WebRTC入门与实战 --- Socket.io发送消息
服务端消息发送 给本次链接自己发送消息 socket.emit() 给某个房间内所有人发消息 io.in(room).emit() 除本连接自己之外,给某个房间内所有人发消息 socket.to(room).emit() 除本连接外,给所有人发消息 socket.broadcast.emit() 客户端处理消息 发送action命令 S:so...原创 2019-11-10 22:16:39 · 567 阅读 · 0 评论 -
WebRTC入门与实战 --- WebRTC音视频录制
首先 介绍一个重要的额类,MediaRecoder:使用案例:开始录制:获取桌面:原创 2019-11-10 21:51:31 · 735 阅读 · 0 评论 -
WebRTC入门与实战 --- WebRTC音视频采集
我们来学习下WebRTC中对音视频数据的采集。音视频采集API这里我们可以看到MediaStreamConstratints的两个参数的类型有两种:当时用boolean时,标识是否对音频、视频进行采集,如果使用MediaTrackContraints就可以分别对音视频的具体参数进行设置,比如视频的分辨率、帧率等,同样的音频也可以设置延迟性、音量、声道等等,后边的学习会详细研述。如下图一...原创 2019-11-10 12:07:29 · 1162 阅读 · 0 评论 -
WebRTC入门与实战 --- WebRTC获取音视频设备
前边我们做了很多必要的准备工作,包括音视频相关基础内容、环境准备、JavaScript等,接下来正式开始学习WebRTC的内容,首先我们来学习下WebRTC如何来进行设备管理。获取所有音视频设备这里介绍一个API,enumerateDevices:音频同一个设备中包含了两种类型,一种是输入一种是输出。JavaScript中的Promise 首先,JavaScri...原创 2019-11-08 15:12:34 · 679 阅读 · 0 评论 -
WebRTC入门与实战 --- JavaScript基础知识回顾与代码调试
以前的JavaScript调试非常困难,我们一般都是通过打印信息弹窗进行提示,如今Chrome推出的JavaScript调试工具developtools,可以非常方便的调试JavaScript,下边简单介绍下调试相关:Elenents:页面中的元素Console:便于调试,比如修改代码变量值达到不同的目的等Source:重点,从服务端获取的JavaScript或者页面都...原创 2019-11-08 09:57:30 · 376 阅读 · 0 评论 -
WebRTC入门与实战 --- Web服务器
Web服务器选型Nodejs Nginx ApacheWeb服务工作原理Nodejs工作原理JavaScript解析Nodejs时间处理原创 2019-11-07 18:49:32 · 309 阅读 · 0 评论 -
WebRTC入门与实战 --- WebRTC运行机制
我们来学习写WebRTC的运行机制。首先来看两个基本概念,轨与流:轨与流:Track(轨):采取了轨道的概念,两条轨之间是不想交的,就像我们的一路音频和一路视频都是一路轨,两者是不想交的,两路音频也是不想交的两个轨。 MediaStream:就是媒体流,包含了很多轨。几个重要的类:MediaStream:媒体流RTCPeerConnection:WebRTC中最为重要的一个...原创 2019-11-07 17:05:02 · 897 阅读 · 0 评论 -
WebRTC入门与实战 --- 源码目录结构
介绍下WebRTC源码的目录结构,和各个模块的作用,方便我们应用中进行使用和一些个性化修改:下边看一下核心模块Modules:原创 2019-11-07 14:23:51 · 366 阅读 · 0 评论 -
WebRTC入门与实战 --- WebRTC原理与架构
上一篇我们对WebRTC进行了整体的介绍和学习,作为技术人员,我们学习过程中是要了解一个技术的原理的,接下来我们就来学习一下WebRTC的原理与架构,下边是官网的架构图: 架构图颜色标识说明:(1)应用层:紫色部分是Web开发者API层;(2)核心层:蓝色实线部分是面向浏览器厂商的API层(也就是红色框标内模块,也是本人专注研...原创 2019-11-07 10:36:39 · 2132 阅读 · 0 评论 -
WebRTC入门与实战 --- WebRTC概述
今天开始来系统完整地学习WebRTC相关技术,WebRTC的重要性和以后的趋势这里我就不说了,相信来看这个系列博客的伙伴可定是了解这个技术的地位和需求才会来看。这里主要知识来源于李超老师的课程以及网上一些优秀的技术博客等,在此留下详细的学习记录,方便后续学习和回顾,也欢迎感兴趣的伙伴参考。WebRTC概述WebRTC的相关介绍很多地方都有(详细可以参考:https://baike.baid...原创 2019-11-07 09:52:22 · 1085 阅读 · 0 评论 -
最全流媒体协议详细总结介绍(RTP/RTCP/RTSP/RTMP/MMS/HLS/HTTP/ HTTP-FLV(HDL) /SDP)
RTP:实时传输协议(Real-time Transport Protocol) RTP是一种基于包的传输协议,它用来传输实时数据。在网络上传输数据包的延迟和误差是不可避免的,对此RTP包头包含时间戳、丢失保护、载荷标识、源标识和安全性信息。这些信息用于在应用层实现数据包丢失恢复、拥塞控制等。 RTP通常运行于UDP的上层,以利用UDP的复用和求和校验功能。RTP...原创 2019-11-01 09:49:38 · 3858 阅读 · 0 评论 -
最全音视频基础知识学习详解(含多个干货链接)
这里将了解到的和一些博客网站讲到的音视频基础相关的内容总结整理到了一起,方便系统的学习和回顾记录。首先一个最简易的音视频图解,包括一下几个部分: 对于一个实时音视频应用共包括几个环节:采集、编码、前后处理、传输、解码、缓冲、渲染等很多环节。每一个细分环节,还有更细分的技术模块。比如,前后处理环节有美颜、滤镜、回...原创 2019-10-31 15:16:43 · 7780 阅读 · 1 评论 -
0基础学习音视频编程技术(三)Qt+ffmpeg开发环境搭建+简单QT项目调用ffmpeg
一、ffmpeg下载 ffmpeg源码可在其官网上下载,网址:https://ffmpeg.zeranoe.com/builds/ 在官网上从左到右选择版本和系统,然后点击右侧的static,shared和dev,分别下载到本地。 二、解压ffmpeg 将下载下来的三个包分别解压,并分别对应命名为static,shared,dev(重新命名是为了后面配置简化)。之后,将这三个文件夹复制到...原创 2018-09-20 16:34:47 · 749 阅读 · 0 评论 -
RTMPDUMP的使用(实例讲解)
译文地址:http://blog.csdn.net/fallenink/article/details/8128095 原文地址:http://pclosmag.com/html/Issues/201104/page19.html强烈建议习惯英文者,ctrl+按住上面链接,跳转。 RTMP Specification: http://www.adobe.com/devnet/r...转载 2018-10-09 14:48:54 · 552 阅读 · 0 评论 -
音视频学习笔记----1,音视频编码技术基础
声明:自我总结 + 优秀摘录。1,环境准备 到FFmpeg官网http://ffmpeg.org/download.html#build-windows下载相应的程序软件,主要包括:ffmpeg.exe,ffplay.exe,ffprobe.exe。 编译好的windows可用版本的下载地址(官网中可以连接到这个网站,和官方网站保持同步):http://ffm...原创 2019-03-11 17:04:14 · 9327 阅读 · 3 评论 -
音视频开发学习路线
音视频开发学习——转知乎答案著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。作者:姚冬链接:http://www.zhihu.com/question/31156766/answer/54645514来源:知乎我们先假设某人在音视频方面是零基础,也没学过任何数字信号处理相关知识,数学基础基本是高中水准,但是熟悉 C/C++ 开发,至少熟悉某一个平台下的编译调...转载 2019-03-11 10:35:46 · 3071 阅读 · 0 评论 -
音视频学习笔记----2,音视频编码基础学习之-H.264
上一篇我们已经安装并简单介绍了FFmpeg学习所需要的一些工具和基础内容以及音视频相关的一些基础知识,本节开始记录学习H.264的过程细节,以作备忘。同样采用自我总结 + 优秀摘录的方式记录。 H.264H.264作为新一代视频压缩编码标准具有如下特点:1...原创 2019-03-13 10:43:24 · 293 阅读 · 0 评论 -
2019年技术进阶路线
一、音视频方向学习路线:音视频基础知识 -> H.264原理(sps pps NAL)+应用 -> YUV(YUV原理 + 到RGB的转换) -> webrtc音频处理 -> SDL。短期目标:完成播放器开发。二、Java方向学习路线:Java基础知识 -> JavaScript -> 数据库sql -> 部分框架。短期目标:可以完成简单...原创 2019-03-13 18:19:09 · 241 阅读 · 0 评论 -
音视频学习笔记----3,音视频编码基础学习之-YUV与RGB
上一篇我们已经安装并简单学习了H.264的一些基础知识,本节开始记录学习YUV与RGB,以作备忘。同样采用自我总结 + 优秀摘录的方式记录。RGB介绍:RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色。YUV简介:YUV的原理是把亮度和色度分离,人眼对亮度的敏感度超过色度。YUV三个字母中,其中”...原创 2019-03-13 18:19:59 · 8768 阅读 · 0 评论 -
FFmpeg之av_samples_get_buffer_size
/* *获取给定音频参数所需的缓冲区大小。 * @param [out] linesize计算的lineize,可能为NULL * @param nb_channels频道数 * @param nb_samples单个通道中的样本数 * @param sample_fmt样本格式 * @param对齐缓冲区大小对齐(0 =默认,1 =无对齐) * @return需要缓冲区大小,或失败...原创 2018-09-30 15:21:09 · 2765 阅读 · 0 评论 -
FFmpeg之AVFrame
/**该结构描述了解码的(原始)音频或视频数据。 *必须使用av_frame_alloc()(旧接口:avcodec_alloc_frame(),新接口:av_frame_alloc())分配AVFrame。请注意,这只是 *分配AVFrame本身,必须通过其他方式(见下文)管理数据的缓冲区; *必须使用av_frame_free()释放AVFrame。 * * AVFrame通常分配一...原创 2018-09-30 14:45:55 · 617 阅读 · 0 评论 -
FFmpeg中的时间概念和时间转换等介绍
视频的显示和存放原理对于一个电影,帧是这样来显示的:I B B P。现在我们需要在显示B帧之前知道P帧中的信息。因此,帧可能会按照这样的方式来存储:IPBB。这就是为什么我们会有一个解码时间戳和一个显示时间戳的原因。解码时间戳告诉我们什么时候需要解码,显示时间戳告诉我们什么时候需要显示。所以,在这种情况下,我们的流可以是这样的:PTS: 1 4 2 3DTS: 1 2 3 4Stre...原创 2018-09-27 18:48:27 · 576 阅读 · 0 评论 -
音频采样数据--PCM格式介绍
• 音频采样数据作用▫ 保存了音频中每个采样点的值。• 特点▫ 音频采样数据体积很大,一般情况下一首4分钟的PCM格式的歌曲体积为:4*60*44100*2*2=42.3MBytePS:这里假定采样率为44100Hz,采样精度为16bit。• 音频采样数据查看工具:Adobe Audition ...原创 2018-09-26 14:27:38 · 2009 阅读 · 0 评论 -
视频像素数据---RGB、YUV格式介绍
•视频像素数据作用▫保存了屏幕上每个像素点的像素值。•格式▫常见的像素数据格式有RGB24, RGB32, YUV420P,YUV422P,YUV444P等。压缩编码中一般使用的是YUV格式的像素数据,最为常见的格式为YUV420P。•特点▫视频像素数据体积很大,一般情况下1小时高清视频的RGB24格式的数据体积为:3600*25*1920*1080*3=559.9GBytePS:这...原创 2018-09-26 14:26:16 · 2626 阅读 · 0 评论 -
视频播放器原理图解
原创 2018-09-26 14:22:32 · 987 阅读 · 0 评论 -
0基础学习音视频编程技术(四) 使用FFMPEG解码视频之保存成图片
原文地址:http://blog.yundiantech.com/?log=blog&id=8前面我们已经知道怎么使用FFMPEG了。现在,开始着手使用FFMPEG吧: 首先来个简单的例子,使用FFMPEG打开视频文件,并解码保存成一张张的图片。具体的步骤如下所示: 1.首先需要先初始化一下,使用如下函数: 1 av_regist...转载 2018-09-20 16:46:23 · 148 阅读 · 0 评论 -
根据文件大小和属性计算音频时长,详解
可以根据一个 wav 文件的大小、采样频率和采样大小估算出一个 wav 文件的播放长度。 譬如 "Windows XP 启动.wav" 的文件长度是 424,644 字节, 它是 "22050HZ / 16bit / 立体声" 格式(这可以从其 "属性->摘要" 里看到),那么它的每秒的传输速率(位速, 也叫比特率、取样率)是 22050*16*2 = 705600(bit/s)...原创 2018-09-20 15:08:38 · 11342 阅读 · 1 评论 -
0基础学习音视频编程技术(二) 音频格式讲解 PCM数据格式
原文地址:http://blog.yundiantech.com/?log=blog&id=51. 音频简介前面我们说过视频有一个每秒钟采集多少张的概念,这就叫做视频的帧率。和视频的帧率一样的道理,声音也有一个频率,叫做采样率。人对频率的识别范围是 20HZ - 20000HZ, 如果每秒钟能对声音做 20000 个采样, 回放时就足可以满足人耳的需...转载 2018-09-20 14:56:23 · 339 阅读 · 0 评论 -
FFmpeg之avformat_open_input解析
我们知道avformat_open_input()能打开视频容器,那么现在我比较关心视频文件的MetaData怎么查看, 刚好FFMpeg给我们提供了av_dump_format()函数会自动打印MetaData信息,打印有关输入或输出格式的详细信息,例如 *持续时间,比特率,流,容器,程序,元数据,边数据, *编解码器和时基。。函数说明 一般使用av_find_str...原创 2018-10-01 15:12:24 · 1427 阅读 · 0 评论 -
0基础学习音视频编程技术(一)---视频格式讲解
原文地址:http://blog.yundiantech.com/?log=blog&id=4 所谓视频,其实就是将一张一张的图片连续的放出来,就像放幻灯片一样,由于人眼的惰性,因此只要图片的数量足够多,就会觉得是连续的动作。 所以,只需要将一张一张的图片保存下来,这样就可以构成一个视频了。 但是,由于目前网络和存储空间的限制,直接存储图片显然不可行。举个例子:在视频聊天中...转载 2018-09-20 11:24:08 · 173 阅读 · 0 评论 -
音视频项目应用实现-音频采集实现
直播的模式火了之后很多软件都会集成音视频相关需求,下边我们先来讲一下音频采集:音频功能模块AudioCapture中启动音频接收。RtAudio提供了通用的API(应用程序编程接口)用于跨平台实时音频输入/输出。RtAudio 包含了audio streams和recording两个概念: audio streams表示output,也就是playback ,recording表示inpu...原创 2018-09-05 15:21:18 · 676 阅读 · 0 评论 -
ffmpeg.exe的使用---命令行
• 命令格式▫ 功能ffmpeg.exe用于视频的转码。▫ 最简单的命令ffmpeg -i input.avi -b:v 640k output.ts该命令将当前文件夹下的input.avi文件转换为output.ts文件,并将output.ts文件视频的码率设置为640kbps。▫ 命令格式ffmpeg -i {输入文件路径} -b:v {输出视频码率} {输出文件路径}所有的...原创 2018-09-26 14:34:21 · 4838 阅读 · 0 评论 -
ffplay.exe的使用---命令行
• 命令格式▫ 功能ffplay.exe用于视频的播放。▫ 最简单的命令ffplay input.avi该命令将播放当前文件夹下的input.avi文件。▫ 命令格式ffplay {输入文件路径}ffplay.exe的参数格式和ffmpeg.exe是类似的。所有的参数都是以键值对的形式指定的(由于不包含输出文件,所以只能指定输入参数)。注意位于最后面的输入文件路径前面不包含参数...原创 2018-09-26 14:35:26 · 3069 阅读 · 0 评论 -
FFmpeg解码详解(原理与函数使用说明)
视频解码知识•纯净的视频解码流程▫压缩编码数据->像素数据。▫例如解码H.264,就是“H.264码流->YUV”。•一般的视频解码流程▫视频码流一般存储在一定的封装格式(例如MP4、AVI等)中。封装格式中通常还包含音频码流等内容。▫对于封装格式中的视频,需要先从封装格式中提取中视频码流,然后再进行解码。▫例如解码MKV格式的视频文件,就是“MKV->H.264码...原创 2018-09-26 14:44:06 · 4141 阅读 · 0 评论 -
FFMPEG中的媒体打开函数avformat_open_input()、init_input()、avio_open()、av_probe_input_buffer()
本文分析了FFMPEG中的媒体打开函数avformat_open_input()//参数ps包含一切媒体相关的上下文结构,有它就有了一切,本函数如果打开媒体成功, //会返回一个AVFormatContext的实例. //参数filename是媒体文件名或URL. //参数fmt是要打开的媒体格式的操作结构,因为是读,所以是inputFormat.此处可以 //传入一个...转载 2018-09-27 18:40:32 · 945 阅读 · 0 评论 -
FFmpeg之sws_scale库的应用(sws_getContext、sws_scale、sws_freeContext)
FFmpeg里面的sws_scale库可以在一个函数里面同时实现:1.图像色彩空间转换;2.分辨率缩放;3.前后图像滤波处理。其核心函数主要有三个:// 初始化sws_scalestruct SwsContext *sws_getContext(int srcW, int srcH, enum AVPixelFormat srcFormat, ...转载 2018-09-27 17:45:22 · 1229 阅读 · 0 评论