自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (9)
  • 收藏
  • 关注

原创 音视频入门系列-服务器篇(live555 的部署)

本篇文章,我们详细介绍下使用live555来部署一套流媒体服务器,并使用VLC来拉流。1.下载live555源码http://www.live555.com/liveMedia/public/2.解压$tar vxf live.2021.08.24.tar.gz#cd live3.make$./genMakefiles linux-64bit$make4.启动live555$cd mediaServer$sudo ./live555MediaServer5.

2021-12-13 11:59:13 2726

原创 音视频入门系列-服务器篇(SRS 的部署)

本篇文章,我们详细介绍下使用SRS来部署一套流媒体服务器,并用FFmpeg来推流,VLC来拉流。1.下载srs源码https://github.com/ossrs/srs/releases2.解压压缩包$tar xvf srs-3.0-r8.tar.gz3.创建build目录$cd srs-3.0-r8/trunk/$mkdir build4.config & make & make install$./configure --prefix=/hom

2021-12-13 11:59:06 1285

原创 音视频入门系列-服务器篇(nginx-rtmp 的部署)

本篇文章,我们详细介绍下使用nginx-rtmp来部署一套流媒体服务器,并用FFmpeg来推流,VLC来拉流。RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。支持该协议的软件包括Adobe Media Serv

2021-12-13 11:58:59 668

原创 音视频入门系列-服务器篇(介绍)

“音视频入门系列-服务器”系列,主要介绍下目前常用的流媒体服务器,并实际部署下部分服务器,和小伙伴们一起感受下流媒体服务器是如何工作的。市面上优秀的流媒体服务器解决方案有很多,比如SRS,Red5,EasyDarwin,nginx-rtmp,live555,mediasoup等等。这些服务器框架各有优缺点,但你需要明白的是,世上没有一款完美的流媒体服务器解决方案,在流媒体选型的时候,需要根据自己的业务选择适合的流媒体服务器。音视频入门系列文章已同步在微信公众号(可扫下方二维码关注):八小时码字员

2021-12-13 11:58:49 752

原创 音视频入门系列-协议篇(对比RTMP,HLS和HTTP-FLV)

在开始之前,我们先要明确一个问题,根据应用场景不同,流媒体协议分为:◆ 推流协议◆ 拉流播放协议RTMP可以用在双端,HLS用在拉流端,HTTP-FLV用在拉流端。我们先放一张表格从几个维度来对比下这三种协议。1.RTMP & HTTP-FLV◆ 这两个协议实际上传输的数据是一样的,数据都是flv文件的tag。◆ RTMP:实时播放服务器的 FLV 文件或服务器转发的FLV数据,本地无 FLV 缓存文件,FLV保密性好。◆ HTTP-FLV:将 FLV 下载到本地再播放..

2021-12-13 11:58:29 3901

原创 音视频入门系列-协议篇(RTMP & HLS)

今天,我们来聊聊 RTMP 和 HLS 协议。1.RTMP(Real Time Messaging Protocol)RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。◆ 应用层协议,依靠TCP保证可靠传输。◆ 默认端口:1953,可能被防火墙屏蔽。◆ 在流媒体/交互服务器之间进行音视频和数据通信。2.HLS(HTTP Live Streami

2021-12-13 11:58:19 939

原创 音视频入门系列-协议篇(RPT & RTCP & RTSP)

为什么把 RTP、RPCP、RTSP放在一起介绍呢,因为RTP、RTCP这两个协议一般是成对出现,而他们与RTSP协同工作。本篇我们先介绍下这三篇协议。1.RTP、RTCP、RTSP的关系RTP负责多媒体的传输,RTCP配合RTP做控制和流量统计, RTSP负责建立和控制会话,下图更直观的的描述了三者的关系:2.RTP(Real-time Transport Protocol),实时传输协议:◆ RTP建立在UDP协议上;◆ RTP不确保网络底层的可靠性,不提供按时发送机制或其..

2021-12-13 11:57:45 3208

原创 音视频入门系列-协议篇(介绍)

从事或想要从事音视频相关工作你,或多或少都听过RTP,RTCP,RTMP等等协议的名称,对这些协议一头雾水,那“音视频入门-协议篇”将给大家介绍下流媒体相关的网络协议,话不多说,开始今天的文章。如下罗列了部分流媒体相关协议,稍后的文章中我们详细介绍这些协议:◆RTP(Real-time Transport Protocol),实时传输协议。◆RTCP(Real-time Transport Control Protocol),实时传输控制协议。◆RTSP(Real Time Strea...

2021-11-20 18:29:34 399

原创 音视频入门系列-FFmpeg篇(ffplay源码分析)

前面的文章介绍了FFmpeg的解码、编码、转码流程以及相关的函数调用,并以FFmpeg解码流程为主线,深入分析其中层层调用的FFmpeg代码,想必大家对FFmpeg的编解码有了一个全面的了解。学到这里,你可能想那是不是就可以做一个播放器了?做一个真正的播放器,还有很多问题需要处理:音视频同步,多线程解复用、解码,线程安全等问题需要处理。那带着这些问题,本篇文章将分析下ffplay(FFmpeg提供的一个简单的播放器)的源码。ffplay解码并播放音视频的源码分析如图所示(分为两条主线,一条为解复用、

2021-11-20 18:29:19 695

原创 音视频入门系列-FFmpeg篇(FFmpeg源码分析)

前面的文章分析了FFmpeg的编解码调用过程,也对FFmpeg编解码过程中使用到的关键结构体进行了分析,想必大家对FFmpeg也有了初步的了解。那今天这篇文章将以FFmpeg解码流程为主线,深入分析其中层层调用的FFmpeg代码。先来看一下FFmpeg解码过程涉及到源码调用过程,如图所示(其中,橙色部分+红色箭头为解码主流程,橙色部分为FFmpeg对外提供的接口函数,白色部分为橙色功能函数实现中涉及到主要功能函数):主要函数为(流程同“音视频入门系列-FFmpeg篇(解码)”):◆ av.

2021-11-20 18:29:06 819

原创 视频入门系列-FFmpeg篇(FFmpeg结构体分析)

通过之前的学习,我们知道了如何通过调用FFmpeg代码来进行解码和编码,正所谓知其然还要知其所以然,这篇文章分析下FFmpeg编解码过程中主要的结构体,通过对这些结构体的分析,可以更好的理解FFmpeg的编解码过程。1.FFmpeg结构体分析通过之前对于FFmpeg进行解码、编码的代码学习,我们总结FFmpeg结构体主要分为三个层次:协议层(AVIOContext)、封装层(AVInputFormat)、解码层(AVStream)。具体如下2.FFmpeg编解码关键结构体按照FFm.

2021-11-20 18:28:53 635

原创 音视频入门系列-FFmpeg篇(转码)

前面的文章介绍了通过调用FFmpeg库来解码和编码,今天再介绍下转码的流程。其实,学习完解码和编码后,转码比较好理解,就是将解码和编码结合起来,过程为:解封装->解码->编码->封装。逻辑如下:◆ 解封装:将音视频文件的封装格式去掉,获取视频流(H.264)和音频流(AAC)◆ 解码:将视频流解码成原始图像数据(YUV),将音频流解码成原始音频数据(PCM)◆ 编码:将原始图像(YUV)进行编码(MPG2),将音频流进行编码(MP3)◆ 封装:将视频流和音频流封装成视频文件

2021-11-20 18:28:29 1717

原创 音视频入门系列-FFmpeg篇(编码)

日常开发过程中,我们涉及到的主要是解码相关内容,但FFmpeg同样具有编码的能力。今天这篇文章简单介绍下FFmpeg编码的内容。1.FFmpeg编码视频使用FFmpeg库编码YUV,代码及调用逻辑如下(文末附代码):2.FFmpeg编码音频使用FFmpeg库编码PCM,代码及调用逻辑如下(文末附代码):3.编码YUV源码如下:/* author:八小时码字员 file:encode_yuv_to_h264.cpp */ #include "enco..

2021-11-20 18:26:43 1199

原创 音视频入门系列-FFmpeg篇(解码)

从本篇开始,我们正式进入FFmpeg代码的学习。本片文章结合代码的形式介绍下FFmpeg的解码流程和SDL2播放流程。1. 开发环境◆ FFmpeg 开发库下载地址(自行选定版本号,-shared 为开发库):https://github.com/BtbN/FFmpeg-Builds/releases◆ SDL 开发库下载地址(选择Development Libraries):https://www.libsdl.org/download-2.0.php2.音视频解..

2021-11-20 18:25:40 1028 1

原创 音视频入门系列-FFmpeg篇(ffmpeg & ffplay & ffprobe 参数介绍和使用)

上文中我们介绍了ffmpeg库的下载以及部署,并简单介绍了ffmpeg三个可执行文件的作用,本文具体实操下,ffmpeg的三个可执行文件具体怎用使用。1.ffmpeg.exe◆ 用于音视频转码, 也可以从url/现场音频/视频源抓取输入源等。笔者从网上摘抄了一部分ffmpeg常用参数如下(尤其在开发过程中,由于ffmpeg版本不同,ffmpeg参数也有少量出入,建议在命令行窗口输入“ffmpeg -h”查看本机部署的ffmpeg支持的参数):◆ ffmpeg 网上摘抄参数◆"ffmpe..

2021-11-20 18:24:47 683

原创 音视频入门系列-FFmpeg篇(FFmpeg的安装)

说到音视频编解码,绕不开的就是FFmpeg。资料少,代码晦涩,是大家学习FFmpeg一个重要阻碍。“音视频入门系列-FFmpeg篇”将从FFmpeg解码、FFmpeg编码、FFmpeg转码,播放音视频、ffplay源码分析、FFmpeg源码分析等几个方面带大家一起学习FFmpeg相关知识。文末附有FFmpeg源码下载地址和可执行文件下载地址。1.FFmpeg库的下载通过文末的FFmpeg库可执行文件下载地址,Windows平台下载解压后如图所示(文件名称以-share结尾的是开发库)。2.

2021-11-20 18:23:49 528

原创 音视频入门系列-视频封装格式篇(MP4)

接上文,本篇介绍下MP4的封装格式。1.MP4(MPEG-4)◆ MP4是一套用于音频、视频信息的压缩编码标准,由国际标准化组织(ISO)和国际电工委员会(IEC)下属的“动态图像专家组”(Moving Picture Experts Group,即MPEG)制定,第一版在1998年10月通过,第二版在1999年12月通过。MPEG-4格式的主要用途在于网上流、光盘、语音发送(视频电话),以及电视广播。◆ MP4由许多box组成,每个box包含不同的信息,这些box以树形结构的方式组成,box 当中

2021-11-20 18:23:35 1321

原创 音视频入门系列-视频封装格式篇(TS)

本篇介绍下TS的封装格式。1.什么是TS?TS(Transport Stream,传输流),一种常见的视频封装格式,是基于MPEG-2的封装格式(所以也叫MPEG-TS),后缀为.ts。2.TS的分层结构TS文件分为三层,如下所示(可以倒序看更好理解):◆ TS层(Transport Stream):在PES层基础上加入了数据流识别信息和传输信息。◆ PES层(Packet Elemental Stream):在ES层基础上加入时间戳(PTS/DTS)等信息。◆ ES层(Eleme

2021-11-19 17:30:31 3237

原创 音视频入门系列-视频封装格式篇(FLV)

将图像、音频、字幕封装在一起,就形成了我们常见的视频,本篇文章主要介绍下FLV(后文中将介绍TS和MP4)视频封装格式。

2021-11-19 17:30:08 1066 1

原创 音视频入门系列-字幕篇(SSA & ASS)

前面的文章中已经介绍过音视频中的图像和音频,今天这篇文章介绍下字幕的相关知识。常见的字幕有srt、ssa、ass等格式,本文主要介绍下ssa和ass的格式。1.什么是SSA?◆ SSA(SubStation Alpha),是由CS Low(亦称Kotus)创建,比传统字幕格式(如SRT)功能更加先进的字幕文件格式。◆ 该格式字幕的外挂文件以*.ssa作为后缀。2.什么是ASS?◆ ASS(Advanced SubStation Alpha),是一种比SSA更为高级的字幕格式, 其实质版本是S

2021-11-19 17:25:47 3461

原创 音视频入门系列-音频篇(AAC)

上篇文章介绍了PCM相关知识,本篇介绍下AAC相关知识。

2021-11-19 16:24:48 1111

原创 音视频入门系列-音频篇(PCM)

说到音频,主要有两个概念比较重要,一个是采集到的原始音频数据(比如PCM)和压缩后的音频数据(比如AAC),本文将介绍下PCM的相关知识。(AAC相关知识请参见下篇文章)1.什么是PCM?PCM(Pulse Code Modulation,脉冲编码调制)音频数据是未经压缩的音频采样数据裸流,它是由模拟信号经过采样、量化、编码转换成的标准数字音频数据。2.如何理解PCM?PCM是一种用数字表示采样模拟信号方法。主要包括采样,量化,编码三个主要过程。◆先来看看模拟信号采样的过程:..

2021-11-19 16:23:35 1956

原创 音视频入门系列-图像篇(H.264)

H.264作为现在应用比较广泛的视频编码格式标准,本文笔者介绍下H.264相关知识。1.什么是H.264H.264是由ITU-T视频编码专家组(VCEG)和ISO/IEC动态图像专家组(MPEG)联合组成的联合视频组(JVT,Joint Video Team)提出的高度压缩数字视频编解码器标准。2.H.264的数据格式是怎样的?H.264由视频编码层(VCL)和网络适配层(NAL)组成。◆ VCL:H264编码/压缩的核心,主要负责将视频数据编码/压缩,再切分。◆ NALU = NALU h

2021-11-19 13:56:02 935

原创 音视频入门系列-图像篇(YUV和RGB)

本文主要给小伙伴们分享下音视频中编码前的图像格式,即YUV和RGB。

2021-11-19 13:48:05 1205 2

原创 音视频入门系列-音视频基础知识篇(录播、点播、直播)

在学习音视频技术前,笔者还是希望可以分享给小伙伴们一些音视频方便的基本概念,掌握这些概念,有助于大家对于音视频有一个更直观和清晰的了解。话不多说,今天笔者给大家分享下:录播、点播和直播。

2021-11-19 13:37:21 1455

原创 音视频入门系列-音视频基础知识篇(音视频播放原理)

音视频播放的原理主要分为:解协议->解封装->解码->音视频同步->播放。

2021-11-19 13:35:38 1998

原创 音视频入门系列 - 开篇

5G时代的来临,抖音、快手、哔哩哔哩等一批优秀互联网公司的崛起,推动了音视频行业的蓬勃发展。各大公司也在短视频、直播、云游戏等领域摩拳擦掌,音视频人才也成为各大公司争相招募的对象。“音视频入门系列”会从基础的图像、音频格式讲起,再到FFmpeg、流媒体协议、直播服务器等,涉及的内容不深,但求尽量做到覆盖全面。希望小伙伴们通过学习“音视频入门系列”,可以对于音视频的学习和研究方向有一个全面的了解,进而选择适合自己的技术路线。

2021-11-19 10:42:48 547

原创 RGB && YUV && HSV 颜色空间

一、RGB1.RGB格式:RGB565、RGB555、RGB24、RGB32(RGBA)二、YUV(YCrCb)1.Y表时明亮度,也就是灰度值;U(Cb)和V(Cr)描述了图像色彩及饱和度,Cr反映了RGB输入信号红色部分与RGB信号亮度值之间的差异,Cb反映的是RGB输入信号蓝色部分与RGB信号亮度值之同的差异。2.RGB和YUV转换公式 Y = 0.299R + 0.587G + 0.114B U (Cb)= -0.147R - 0.289G + 0.436..

2020-07-01 17:59:31 530

h264、h265、ts、yuv、m4a、flv、mov等视频文件

压缩包中包含:h264、h265、ts、yuv、m4a格式的视频文件,还包含wmv、mp4、mkv、flv等视频文件

2020-10-02

音频文件(包含 pcm、wav、amr、m4a 共4个文件).zip

音频文件(包含 pcm、wav、amr、m4a 共4个文件)测试文件,方便大家一起使用和学习,亲测可用,大家可以放心下载

2020-07-14

h264测试文件.zip

包含两个标准的h264测试文件,是h264裸数据文件,方便大家一起使用和学习,亲测可用,大家可以放心下载

2020-07-14

signtool 数字签名

signtool 数字签名;signtool 数字签名;signtool 数字签名;

2018-08-07

very sleepy 分析内存占用情况

very sleepy 分析内存占用情况;very sleepy 分析内存占用情况

2018-08-07

ffmpeg 工具包

ffmpeg 工具包;ffmpeg 工具包;ffmpeg 工具包;ffmpeg 工具包;

2018-08-07

Qt 采集摄像头 录屏

Qt 实现了采集摄像头 采集屏幕图像的功能;Qt 实现了采集摄像头 采集屏幕图像的功能;

2018-08-07

VC6LineNumberAddin显示行号 IDE奔溃问题

VC6LineNumberAddin显示行号 IDE奔溃问题

2015-12-31

More_Effective_C++(中文版).侯捷

书中讲述了很多C++技术中容易被忽视的细节,还有很多实用的技巧,希望可以帮助到有需要的人。

2015-07-31

空空如也

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

TA关注的人

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