<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[fly_C_的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/fly_C_</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; fly_C_]]></copyright><item><title><![CDATA[音视频入门系列-服务器篇（live555 的部署）]]></title><link>https://blog.youkuaiyun.com/fly_C_/article/details/121425164</link><guid>https://blog.youkuaiyun.com/fly_C_/article/details/121425164</guid><author>fly_C_</author><pubDate>Mon, 13 Dec 2021 11:59:13 +0800</pubDate><description><![CDATA[本篇文章，我们详细介绍下使用live555来部署一套流媒体服务器，并使用VLC来拉流。

1.下载live555源码


http://www.live555.com/liveMedia/public/

2.解压


$tar vxf live.2021.08.24.tar.gz
#cd live

3.make


$./genMakefiles linux-64bit
$make

4.启动live555


$cd mediaServer
$sudo ./live555MediaServer

5.]]></description><category></category></item><item><title><![CDATA[音视频入门系列-服务器篇（SRS 的部署）]]></title><link>https://blog.youkuaiyun.com/fly_C_/article/details/121425042</link><guid>https://blog.youkuaiyun.com/fly_C_/article/details/121425042</guid><author>fly_C_</author><pubDate>Mon, 13 Dec 2021 11:59:06 +0800</pubDate><description><![CDATA[本篇文章，我们详细介绍下使用SRS来部署一套流媒体服务器，并用FFmpeg来推流，VLC来拉流。

1.下载srs源码


https://github.com/ossrs/srs/releases

2.解压压缩包


$tar xvf srs-3.0-r8.tar.gz

3.创建build目录


$cd srs-3.0-r8/trunk/
$mkdir build

4.config &amp; make &amp; make install


$./configure --prefix=/hom]]></description><category></category></item><item><title><![CDATA[音视频入门系列-服务器篇（nginx-rtmp 的部署）]]></title><link>https://blog.youkuaiyun.com/fly_C_/article/details/121424852</link><guid>https://blog.youkuaiyun.com/fly_C_/article/details/121424852</guid><author>fly_C_</author><pubDate>Mon, 13 Dec 2021 11:58:59 +0800</pubDate><description><![CDATA[本篇文章，我们详细介绍下使用nginx-rtmp来部署一套流媒体服务器，并用FFmpeg来推流，VLC来拉流。

RTMP是Real Time Messaging Protocol（实时消息传输协议）的首字母缩写。该协议基于TCP，是一个协议族，包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络协议，主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。支持该协议的软件包括Adobe Media Serv]]></description><category></category></item><item><title><![CDATA[音视频入门系列-服务器篇（介绍）]]></title><link>https://blog.youkuaiyun.com/fly_C_/article/details/121424816</link><guid>https://blog.youkuaiyun.com/fly_C_/article/details/121424816</guid><author>fly_C_</author><pubDate>Mon, 13 Dec 2021 11:58:49 +0800</pubDate><description><![CDATA[“音视频入门系列-服务器”系列，主要介绍下目前常用的流媒体服务器，并实际部署下部分服务器，和小伙伴们一起感受下流媒体服务器是如何工作的。

市面上优秀的流媒体服务器解决方案有很多，比如SRS，Red5，EasyDarwin，nginx-rtmp，live555，mediasoup等等。

这些服务器框架各有优缺点，但你需要明白的是，世上没有一款完美的流媒体服务器解决方案，在流媒体选型的时候，需要根据自己的业务选择适合的流媒体服务器。

音视频入门系列文章已同步在微信公众号（可扫下方二维码关注）：八小时码字员]]></description><category></category></item><item><title><![CDATA[音视频入门系列-协议篇（对比RTMP，HLS和HTTP-FLV）]]></title><link>https://blog.youkuaiyun.com/fly_C_/article/details/121424737</link><guid>https://blog.youkuaiyun.com/fly_C_/article/details/121424737</guid><author>fly_C_</author><pubDate>Mon, 13 Dec 2021 11:58:29 +0800</pubDate><description><![CDATA[在开始之前，我们先要明确一个问题，根据应用场景不同，流媒体协议分为：
◆ 推流协议
◆ 拉流播放协议
RTMP可以用在双端，HLS用在拉流端，HTTP-FLV用在拉流端。


我们先放一张表格从几个维度来对比下这三种协议。



1.RTMP &amp; HTTP-FLV
◆ 这两个协议实际上传输的数据是一样的，数据都是flv文件的tag。
◆ RTMP：实时播放服务器的 FLV 文件或服务器转发的FLV数据，本地无 FLV 缓存文件，FLV保密性好。
◆ HTTP-FLV：将 FLV 下载到本地再播放..]]></description><category></category></item><item><title><![CDATA[音视频入门系列-协议篇（RTMP & HLS）]]></title><link>https://blog.youkuaiyun.com/fly_C_/article/details/121424637</link><guid>https://blog.youkuaiyun.com/fly_C_/article/details/121424637</guid><author>fly_C_</author><pubDate>Mon, 13 Dec 2021 11:58:19 +0800</pubDate><description><![CDATA[今天，我们来聊聊 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]]></description><category></category></item><item><title><![CDATA[音视频入门系列-协议篇（RPT & RTCP & RTSP）]]></title><link>https://blog.youkuaiyun.com/fly_C_/article/details/121424488</link><guid>https://blog.youkuaiyun.com/fly_C_/article/details/121424488</guid><author>fly_C_</author><pubDate>Mon, 13 Dec 2021 11:57:45 +0800</pubDate><description><![CDATA[为什么把 RTP、RPCP、RTSP放在一起介绍呢，因为RTP、RTCP这两个协议一般是成对出现，而他们与RTSP协同工作。本篇我们先介绍下这三篇协议。

1.RTP、RTCP、RTSP的关系
RTP负责多媒体的传输，RTCP配合RTP做控制和流量统计， RTSP负责建立和控制会话，下图更直观的的描述了三者的关系：







2.RTP(Real-time Transport Protocol)，实时传输协议：
◆ RTP建立在UDP协议上；
◆ RTP不确保网络底层的可靠性，不提供按时发送机制或其..]]></description><category></category></item><item><title><![CDATA[音视频入门系列-协议篇（介绍）]]></title><link>https://blog.youkuaiyun.com/fly_C_/article/details/121424407</link><guid>https://blog.youkuaiyun.com/fly_C_/article/details/121424407</guid><author>fly_C_</author><pubDate>Sat, 20 Nov 2021 18:29:34 +0800</pubDate><description><![CDATA[从事或想要从事音视频相关工作你，或多或少都听过RTP，RTCP，RTMP等等协议的名称，对这些协议一头雾水，那“音视频入门-协议篇”将给大家介绍下流媒体相关的网络协议，话不多说，开始今天的文章。

如下罗列了部分流媒体相关协议，稍后的文章中我们详细介绍这些协议：

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

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

◆RTSP(Real Time Strea...]]></description><category></category></item><item><title><![CDATA[音视频入门系列-FFmpeg篇（ffplay源码分析)]]></title><link>https://blog.youkuaiyun.com/fly_C_/article/details/121424325</link><guid>https://blog.youkuaiyun.com/fly_C_/article/details/121424325</guid><author>fly_C_</author><pubDate>Sat, 20 Nov 2021 18:29:19 +0800</pubDate><description><![CDATA[前面的文章介绍了FFmpeg的解码、编码、转码流程以及相关的函数调用，并以FFmpeg解码流程为主线，深入分析其中层层调用的FFmpeg代码，想必大家对FFmpeg的编解码有了一个全面的了解。学到这里，你可能想那是不是就可以做一个播放器了？

做一个真正的播放器，还有很多问题需要处理：音视频同步，多线程解复用、解码，线程安全等问题需要处理。那带着这些问题，本篇文章将分析下ffplay(FFmpeg提供的一个简单的播放器)的源码。

ffplay解码并播放音视频的源码分析如图所示（分为两条主线，一条为解复用、]]></description><category></category></item><item><title><![CDATA[音视频入门系列-FFmpeg篇（FFmpeg源码分析）]]></title><link>https://blog.youkuaiyun.com/fly_C_/article/details/121423559</link><guid>https://blog.youkuaiyun.com/fly_C_/article/details/121423559</guid><author>fly_C_</author><pubDate>Sat, 20 Nov 2021 18:29:06 +0800</pubDate><description><![CDATA[前面的文章分析了FFmpeg的编解码调用过程，也对FFmpeg编解码过程中使用到的关键结构体进行了分析，想必大家对FFmpeg也有了初步的了解。那今天这篇文章将以FFmpeg解码流程为主线，深入分析其中层层调用的FFmpeg代码。

先来看一下FFmpeg解码过程涉及到源码调用过程，如图所示（其中，橙色部分+红色箭头为解码主流程，橙色部分为FFmpeg对外提供的接口函数，白色部分为橙色功能函数实现中涉及到主要功能函数）：





主要函数为（流程同“音视频入门系列-FFmpeg篇(解码)”）：
◆ av.]]></description><category></category></item><item><title><![CDATA[视频入门系列-FFmpeg篇（FFmpeg结构体分析）]]></title><link>https://blog.youkuaiyun.com/fly_C_/article/details/121423275</link><guid>https://blog.youkuaiyun.com/fly_C_/article/details/121423275</guid><author>fly_C_</author><pubDate>Sat, 20 Nov 2021 18:28:53 +0800</pubDate><description><![CDATA[通过之前的学习，我们知道了如何通过调用FFmpeg代码来进行解码和编码，正所谓知其然还要知其所以然，这篇文章分析下FFmpeg编解码过程中主要的结构体，通过对这些结构体的分析，可以更好的理解FFmpeg的编解码过程。



1.FFmpeg结构体分析
通过之前对于FFmpeg进行解码、编码的代码学习，我们总结FFmpeg结构体主要分为三个层次：协议层（AVIOContext）、封装层（AVInputFormat）、解码层（AVStream）。具体如下





2.FFmpeg编解码关键结构体
按照FFm.]]></description><category></category></item><item><title><![CDATA[音视频入门系列-FFmpeg篇（转码）]]></title><link>https://blog.youkuaiyun.com/fly_C_/article/details/121423170</link><guid>https://blog.youkuaiyun.com/fly_C_/article/details/121423170</guid><author>fly_C_</author><pubDate>Sat, 20 Nov 2021 18:28:29 +0800</pubDate><description><![CDATA[前面的文章介绍了通过调用FFmpeg库来解码和编码，今天再介绍下转码的流程。

其实，学习完解码和编码后，转码比较好理解，就是将解码和编码结合起来，过程为：解封装-&gt;解码-&gt;编码-&gt;封装。逻辑如下：
◆ 解封装：将音视频文件的封装格式去掉，获取视频流（H.264）和音频流（AAC）
◆ 解码：将视频流解码成原始图像数据（YUV），将音频流解码成原始音频数据（PCM）
◆ 编码：将原始图像（YUV）进行编码（MPG2），将音频流进行编码（MP3）
◆ 封装：将视频流和音频流封装成视频文件

]]></description><category></category></item><item><title><![CDATA[音视频入门系列-FFmpeg篇（编码）]]></title><link>https://blog.youkuaiyun.com/fly_C_/article/details/121423093</link><guid>https://blog.youkuaiyun.com/fly_C_/article/details/121423093</guid><author>fly_C_</author><pubDate>Sat, 20 Nov 2021 18:26:43 +0800</pubDate><description><![CDATA[日常开发过程中，我们涉及到的主要是解码相关内容，但FFmpeg同样具有编码的能力。今天这篇文章简单介绍下FFmpeg编码的内容。

1.FFmpeg编码视频

使用FFmpeg库编码YUV，代码及调用逻辑如下（文末附代码）：



2.FFmpeg编码音频

使用FFmpeg库编码PCM，代码及调用逻辑如下（文末附代码）：





3.编码YUV源码如下：


/* 
  author:八小时码字员 
  file:encode_yuv_to_h264.cpp
 */
 
#include "enco..]]></description><category></category></item><item><title><![CDATA[音视频入门系列-FFmpeg篇（解码）]]></title><link>https://blog.youkuaiyun.com/fly_C_/article/details/121422951</link><guid>https://blog.youkuaiyun.com/fly_C_/article/details/121422951</guid><author>fly_C_</author><pubDate>Sat, 20 Nov 2021 18:25:40 +0800</pubDate><description><![CDATA[从本篇开始，我们正式进入FFmpeg代码的学习。本片文章结合代码的形式介绍下FFmpeg的解码流程和SDL2播放流程。

1. 开发环境
◆ FFmpeg 开发库下载地址（自行选定版本号，-shared 为开发库）：



https://github.com/BtbN/FFmpeg-Builds/releases



◆ SDL 开发库下载地址（选择Development Libraries）：



https://www.libsdl.org/download-2.0.php



2.音视频解..]]></description><category></category></item><item><title><![CDATA[音视频入门系列-FFmpeg篇（ffmpeg & ffplay & ffprobe 参数介绍和使用）]]></title><link>https://blog.youkuaiyun.com/fly_C_/article/details/121422787</link><guid>https://blog.youkuaiyun.com/fly_C_/article/details/121422787</guid><author>fly_C_</author><pubDate>Sat, 20 Nov 2021 18:24:47 +0800</pubDate><description><![CDATA[上文中我们介绍了ffmpeg库的下载以及部署，并简单介绍了ffmpeg三个可执行文件的作用，本文具体实操下，ffmpeg的三个可执行文件具体怎用使用。

1.ffmpeg.exe
◆ 用于音视频转码, 也可以从url/现场音频/视频源抓取输入源等。笔者从网上摘抄了一部分ffmpeg常用参数如下（尤其在开发过程中，由于ffmpeg版本不同，ffmpeg参数也有少量出入，建议在命令行窗口输入“ffmpeg -h”查看本机部署的ffmpeg支持的参数）：

◆ ffmpeg 网上摘抄参数



◆"ffmpe..]]></description><category></category></item><item><title><![CDATA[音视频入门系列-FFmpeg篇（FFmpeg的安装）]]></title><link>https://blog.youkuaiyun.com/fly_C_/article/details/121422680</link><guid>https://blog.youkuaiyun.com/fly_C_/article/details/121422680</guid><author>fly_C_</author><pubDate>Sat, 20 Nov 2021 18:23:49 +0800</pubDate><description><![CDATA[说到音视频编解码，绕不开的就是FFmpeg。资料少，代码晦涩，是大家学习FFmpeg一个重要阻碍。“音视频入门系列-FFmpeg篇”将从FFmpeg解码、FFmpeg编码、FFmpeg转码，播放音视频、ffplay源码分析、FFmpeg源码分析等几个方面带大家一起学习FFmpeg相关知识。文末附有FFmpeg源码下载地址和可执行文件下载地址。

1.FFmpeg库的下载
通过文末的FFmpeg库可执行文件下载地址，Windows平台下载解压后如图所示（文件名称以-share结尾的是开发库）。





2.]]></description><category></category></item><item><title><![CDATA[音视频入门系列-视频封装格式篇（MP4）]]></title><link>https://blog.youkuaiyun.com/fly_C_/article/details/121422493</link><guid>https://blog.youkuaiyun.com/fly_C_/article/details/121422493</guid><author>fly_C_</author><pubDate>Sat, 20 Nov 2021 18:23:35 +0800</pubDate><description><![CDATA[接上文，本篇介绍下MP4的封装格式。
1.MP4（MPEG-4）
◆ MP4是一套用于音频、视频信息的压缩编码标准，由国际标准化组织（ISO）和国际电工委员会（IEC）下属的“动态图像专家组”（Moving Picture Experts Group，即MPEG）制定，第一版在1998年10月通过，第二版在1999年12月通过。MPEG-4格式的主要用途在于网上流、光盘、语音发送（视频电话），以及电视广播。
◆ MP4由许多box组成，每个box包含不同的信息，这些box以树形结构的方式组成，box 当中]]></description><category></category></item><item><title><![CDATA[音视频入门系列-视频封装格式篇（TS）]]></title><link>https://blog.youkuaiyun.com/fly_C_/article/details/121422126</link><guid>https://blog.youkuaiyun.com/fly_C_/article/details/121422126</guid><author>fly_C_</author><pubDate>Fri, 19 Nov 2021 17:30:31 +0800</pubDate><description><![CDATA[本篇介绍下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]]></description><category></category></item><item><title><![CDATA[音视频入门系列-视频封装格式篇（FLV）]]></title><link>https://blog.youkuaiyun.com/fly_C_/article/details/121421555</link><guid>https://blog.youkuaiyun.com/fly_C_/article/details/121421555</guid><author>fly_C_</author><pubDate>Fri, 19 Nov 2021 17:30:08 +0800</pubDate><description><![CDATA[将图像、音频、字幕封装在一起，就形成了我们常见的视频，本篇文章主要介绍下FLV（后文中将介绍TS和MP4）视频封装格式。]]></description><category></category></item><item><title><![CDATA[音视频入门系列-字幕篇（SSA & ASS）]]></title><link>https://blog.youkuaiyun.com/fly_C_/article/details/121421443</link><guid>https://blog.youkuaiyun.com/fly_C_/article/details/121421443</guid><author>fly_C_</author><pubDate>Fri, 19 Nov 2021 17:25:47 +0800</pubDate><description><![CDATA[前面的文章中已经介绍过音视频中的图像和音频，今天这篇文章介绍下字幕的相关知识。
常见的字幕有srt、ssa、ass等格式，本文主要介绍下ssa和ass的格式。

1.什么是SSA？
◆ SSA（SubStation Alpha），是由CS Low（亦称Kotus）创建，比传统字幕格式（如SRT）功能更加先进的字幕文件格式。
◆ 该格式字幕的外挂文件以*.ssa作为后缀。

2.什么是ASS？
◆ ASS（Advanced SubStation Alpha），是一种比SSA更为高级的字幕格式, 其实质版本是S]]></description><category></category></item></channel></rss>