代码改变世界

随笔分类 -  流媒体

FFMpeg笔记(十三)升级FFmpeg6.1

2024-03-24 11:21 by jiayayao, 61 阅读, 收藏, 编辑
摘要: FFmpeg最新版已更新6.1,许多之前标记为deprecated的api被彻底删除了,同时也增加了很多新的特性和功能。FFmpeg团队持续优化代码,新版本往往也具有更高的编码和解码效率,更多的格式支持,因此及时更新FFmpeg版本,有利于提升应用的处理速度和资源利用率。本文记录项目中FFmpeg更 阅读全文

WebRtc的一些基本概念

2019-06-24 22:19 by jiayayao, 780 阅读, 收藏, 编辑
摘要: GCC:Google Congestion Control,谷歌提出的拥塞控制算法 REMB:Receiver Estimated Maximum Bitrate, 接收端最大接收码率估测,接收端会估计本地接收的最大带宽能力,并通过rtcp remb 消息返回给对端,这样对端可以调整自己的发送端码率 阅读全文

vlc源码分析(七) 调试HLS协议

2017-09-02 23:35 by jiayayao, 2891 阅读, 收藏, 编辑
摘要: HTTP Live Streaming(HLS)是苹果公司提出来的流媒体传输协议。与RTP协议不同的是,HLS可以穿透某些允许HTTP协议通过的防火墙。 一、HLS播放模式 (1) 点播模式(Video on demand, VOD) 点播模式是指当前时间点可以获取到所有index文件和ts文件,二 阅读全文

视频直播时的QoS策略

2017-07-28 14:23 by jiayayao, 3602 阅读, 收藏, 编辑
摘要: 一、如何判断当前的网络状况 可以以发送一帧视频数据的时间为依据,判断当前网络拥塞情况。 网络中出现丢包和抖动,导致接收端接收数据超时,会激发发送端数据重传,重传机制本身挤占网络带宽,导致sendbuffer中的数据进一步发送失败,致使sendbuffer中的数据不断增多,达到上溢的警戒线,此时应用层 阅读全文

调试libRTMP代码来分析RTMP协议

2017-07-25 22:13 by jiayayao, 3842 阅读, 收藏, 编辑
摘要: RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。该协议基于TCP,是一个协议族,常用在视频直播领域。RTMP协议的默认端口是1935。 学习一个协议最好的方法就是调试其通信过程,期间还可以使用wireshark抓包分析。本人在libRTMP的基础上 阅读全文

FLV封装格式分析

2017-06-15 20:26 by jiayayao, 1300 阅读, 收藏, 编辑
摘要: FLV官方文档:https://github.com/jiayayao/DataSheet/tree/master/media%20format/flv 一、FLV格式 FLV包括文件头(FLV header)和文件体(FLV Body)两部分,其中文件体由一系列的Tag组成。如下图所示: FLV 阅读全文

vlc源码分析(五) 流媒体的音视频同步

2017-05-22 19:26 by jiayayao, 7811 阅读, 收藏, 编辑
摘要: vlc播放流媒体时实现音视频同步,简单来说就是发送方发送的RTP包带有时间戳,接收方根据此时间戳不断校正本地时钟,播放音视频时根据本地时钟进行同步播放。首先了解两个概念:stream clock和system clock。stream clock是流时钟,可以理解为RTP包中的时间戳;system 阅读全文

所有流媒体协议,编解码规范和媒体封装格式的datasheet的下载地址

2017-05-16 15:18 by jiayayao, 558 阅读, 收藏, 编辑
摘要: https://github.com/jiayayao/DataSheet All datasheet about stream protocol, encode-decode spec and media format. 所有流媒体协议,编解码规范和媒体封装格式的datasheet的下载地址,欢迎 阅读全文

vlc源码分析(四) 调用libts接收TS流

2017-05-15 20:31 by jiayayao, 4808 阅读, 收藏, 编辑
摘要: 代码分析前,先要了解TS流基本概念:TS流之基本概念。 VLC解析TS流是通过libts库来分离的,libts库使用libdvbpsi库来解TS表。VLC使用模块加载机制来加载libts库,具体调用的文件是ts.c. 1. libts库在加载的时候,会将以下如下两个函数注册下去,当接收到PAT或者P 阅读全文

TS流基本概念

2017-05-15 20:20 by jiayayao, 29402 阅读, 收藏, 编辑
摘要: 在MPEG-2标准中,有两种不同类型的码流输出到信道:一种是节目码流(Program Stream, PS),适用于没有误差产生的媒体存储,如DVD等存储介质;另一种是传送流(Transport stream, TS),适用于有信道噪声产生的传输,目前TS流广泛应用于广播电视中,如机顶盒等。 一、基 阅读全文

vlc源码分析(二) 播放流程

2017-04-23 13:57 by jiayayao, 10514 阅读, 收藏, 编辑
摘要: 当点击播放文件或者输入要播放的文件后,vlc会执行一系列的流程。 首先需要了解视频以及流媒体处理及播放的流程,由链接中的描述,视频以及流媒体处理时,首先要解协议(http,rtmp,rtsp等),然后是解封装(mp4,mkv,avi等),获得音频码流和视频码流,分别解码后,再根据时间戳进行同步。使用 阅读全文

vlc源码分析(一) RTSP会话流程

2017-04-19 22:14 by jiayayao, 7205 阅读, 收藏, 编辑
摘要: 可以先了解一下RTSP/RTP/RTCP的概念与区别:RTP与RTCP协议介绍(转载)。 在调试vlc-android时,熟悉了RTSP的会话流程。C表示RTSP客户端,S表示RTSP服务端: 第一步:查询服务器端可用方法 1.C->S:OPTIONrequest //询问S有哪些方法可用 1.S- 阅读全文

RTP与RTCP协议介绍(转载)

2016-12-24 21:41 by jiayayao, 2152 阅读, 收藏, 编辑
摘要: RTSP发起/终结流媒体、RTP传输流媒体数据 、RTCP对RTP进行控制,同步。RTP中没有连接的概念,本身并不能为按序传输数据包提供可靠的保证,也不提供流量控制和拥塞控制,这些都由RTCP来负责完成。RTSP可以对流媒体提供诸如播放、暂停、快进等操作,它负责定义具体的控制消息、操作方法、状态码等 阅读全文