直播基本流程【推流-播流-流媒体服务器】

news2024/11/24 16:47:07

直播基本流程

这里不涉及到业务相关 , 这里简要说明直播流程

推流端: 负责将本地的音视频数据推送至流媒体服务器

流程:音视频数据采集->编码->封装->协议封包

功能:美颜滤镜、音效处理、回音消除

播流端:负责拉取流媒体服务器的音视频数据到本地解码播放

流程:网络流数据->解协议->解封装->解码->音视频同步

功能:动态追帧、硬件加速、首屏秒开、高效解码

流媒体服务器:负责直播流的创建,分发到各个cdn节点,加快流的解析,以及各种流的管理统计等等

功能: CDN分发、实时转码、视频录制、Qos、自动鉴黄

一、推流端

★文末名片可以免费领取音视频开发学习资料

 

音视频采集

通过摄像头和麦克风获得实时的音频原数据,例如PCM数据。视频原数据,例如yuv420p,rgb数据。

注意:有关音频特效(变声)和视频特效(大眼瘦脸)就是对音视频原数据的处理

编码

音频编码:将音频采样数据(PCM等)压缩成音频码流,从而降低音频的数据量

视频编码:视频编码的主要作用是将视频像素数据(RGB,YUV等)压缩成视频码流,从而降低视频的数据量

封装

封装格式的主要作用是把视频码流(H264数据)和音频码流(AAC数据)按照一定的格式存储在一个文件中(FLV文件)

协议封装

对封装格式的文件(flv、mp4等)进行rtmp、http、hls等协议的封包过程

二、播流端

播流需要经过以下几个步骤:解协议、解封装、解码视音频、视音频同步。如果播放本地文件则不需要解协议。

解协议

就是将流媒体协议的数据,解析为标准的相应的封装格式数据。视音频在网络上传播的时候,常常采用各种流媒体协议,例如HTTP,RTMP,或是MMS等等。这些协议在传输视音频数据的同时,也会传输一些信令数据。这些信令数据包括对播放的控制(播放,暂停,停止),或者对网络状态的描述等。解协议的过程中会去除掉信令数据而只保留视音频数据。例如,采用RTMP协议传输的数据,经过解协议操作后,输出FLV格式的数据。

解封装

就是将输入的封装格式的数据,分离成为音频流压缩编码数据和视频流压缩编码数据。封装格式种类很多,例如MP4,MKV,RMVB,TS,FLV,AVI等等,它的作用就是将已经压缩编码的视频数据和音频数据按照一定的格式放到一起。例如,FLV格式的数据,经过解封装操作后,输出H.264编码的视频码流和AAC编码的音频码流。

解码

就是将视频/音频压缩编码数据,解码成为非压缩的视频/音频原始数据。音频的压缩编码标准包含AAC,MP3,AC-3等等,视频的压缩编码标准则包含H.264,MPEG2,VC-1等等。解码是整个系统中最重要也是最复杂的一个环节。通过解码,压缩编码的视频数据输出成为非压缩的颜色数据,例如YUV420P,RGB等等;压缩编码的音频数据输出成为非压缩的音频抽样数据,例如PCM数据。

视音频同步

就是根据解封装模块处理过程中获取到的参数信息,同步解码出来的视频和音频数据,并将视频音频数据送至系统的显卡和声卡播放出来。

三、流媒体服务器

下图是参加了业务相关

作者:靑笺画卿颜

★文末名片可以免费领取音视频开发学习资料,内容包括(C/C++,Linux 服务器开发,FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)以及音视频学习路线图等等。

见下方↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/89548.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot2核心技术(核心功能)- 04、配置文件【4.1 yaml的用法 + 4.2 自定义类绑定的配置提示】

核心功能概览 1、文件类型 1.1、properties 同以前的properties用法 1.2、yaml 1.2.1、简介 YAML 是 “YAML Ain’t Markup Language”(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:“Yet An…

猿如意中的【editorconfig-222.2889.3】工具详情介绍

一、工具名称 editorconfig-222.2889.3 二、下载安装渠道 editorconfig-222.2889.3 通过CSDN官方开发的【猿如意】客户端进行下载安装。 2.1 什么是猿如意? 猿如意是一款面向开发者的辅助开发工具箱,包含了效率工具、开发工具下载,教程文…

《Fluent Python》笔记 | 协程

生成器作为协程 协程是指一个过程, 这个过程与调用方协作, 产出由调用方提供的值。 协程使用的简单演示(用作协程的生成器): >>> def simple_coroutine(): # 生成器函数 ... print(-> coroutine starte…

JavaScript系列之通过babel体验ES6模块化

文章の目录一、创建项目文件夹二、打开cmd窗口三、初始化项目四、安装依赖模块五、项目根目录创建文件六、在babel.config.js 文件中添加如下配置七、编写代码八、执行代码九、相关项目依赖写在最后一、创建项目文件夹 名称不要使用中文,不能使用 babel&#xff0c…

[附源码]计算机毕业设计的旅游景点管理系统的设计与实现Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: Springboot mybatis MavenVue等等组成,B/S模式…

VS Code —— 介绍如何配置快捷代码片段和一些自用插件

VS Code —— 介绍如何配置快捷代码片段和一些自用插件 《工欲善其事,必先利其器》—— 既然点进来了,麻烦你看下去,希望你有不一样的收获~ 一、配置代码片段 打开 VS Code,输入快捷键 Ctrl Shift p,打开面板&#…

继真人秀后的又一次大赛,万应低代码一路向前

12月8日,凛冬的长沙,比赛现场暖气充足,11 个参赛团队的队长正在台下跃跃欲试,本届“万应杯”低代码应用开发大赛已经开启月余,大家都很期待能在淘汰赛上一展身手。 他们手上的项目,涉及到建筑、园区、生鲜…

30、基于51单片机的数字电压表(ADC0809)(Proteus仿真+程序)

编号:30 基于51单片机的数字电压表(ADC0809) 功能描述: 本设计由51单片机最小系统ADC0809模块八路路模拟量输入模块12864显示模块 1、主控制器是89C52单片机 2、ADC0809模数转换器进行A/D转换,读取电压八路数据&…

现在转行码农的成本已经非常高了,别盲目转行..

转行码农一直是个比较火热的话题,也有很多读者咨询过这个问题,转成功的也不少,比如下面这位香港的同学: 这位朋友半年前就跟我聊过,他不太想干没有技术含量的体力活,一直在坚持自学,这也算如愿…

软件测试基础知识总结(面试临时抱佛脚)

之前有将基础的软件测试知识做了一个总结,但比较潦草,很多内容只是一笔带过,快到年底了,自己也有个写年终知识总结文档的计划,就将基础的理论知识重新整理一番。。。 有人问我,这些都是能搜索到的知识&…

65-82-springcloud-gateway-config-bus

65-82-springcloud-gateway-config-bus: Gateway gateway官网:https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/html/ 1、什么是gateway Gateway是在Spring生态系统之上构建的API网关服务,基…

c++引用

1.什么是c引用&#xff1f; 引用是c对c的重要扩充。c中新增了引用的概念&#xff0c;引用可以作为一个已定义变量的别名。 #include "stdafx.h" #include <iostream> using namespace std; // 1.引用的基本使用 void test01(){int a 10;// 给变量a取一个别名…

金仓数据库KingbaseES 归档日志清理

WAL是Write Ahead Log的简写&#xff0c;和Oracle的redo日志类似&#xff0c;在R3版本存放在data/sys_log中&#xff0c;R6版本以后在data/sys_wal目录&#xff0c;在数据库访问过程中&#xff0c;任何对数据块的修改都会记录到wal日志&#xff0c;并写入到wal文件保存到磁盘&a…

PMP有没有必要续证呢?

在还只看到标题的时候&#xff0c;我当时就觉得必须续啊&#xff0c;为什么不续&#xff0c;我花了那么多时间精力和钱财去考的&#xff0c;我自然得去给它续上&#xff0c;不然白拿了&#xff0c;才拿了三年我还没捂热就给我失效了多不值。 首先美国PMI要求PMP证书是三年一换…

面试题 :Unity编辑器基础

1、请描述游戏动画有几种&#xff0c;以及其原理。 关键帧动画&#xff1a;每一帧动画序列当中包含了顶点的空间位置信息以及改变量&#xff0c;然后通过插值运算&#xff0c;得出动画效果。选中某一游戏对象&#xff0c;创建animation&#xff0c;添加属性Transform&#xff0…

【Meetup 预告】OpenMLDB + MaxCompute:集成打通云上生态,高效构建 AI 应用

2022年12月3日&#xff08;周六&#xff09;上午10&#xff1a;00-12:00&#xff0c;开源机器学习数据库 OpenMLDB 第八期 Meetup 将通过线上直播的形式展开。 活动背景 数据的爆发式增长为 AI 应用的繁荣提供了坚实的基础&#xff0c;而云服务作为新一代快速整合、高效计算的…

STC-Seg:首个超越PointTrack的弱监督视频MOTS算法

弱监督视频多目标实例分割新SOTA&#xff08;代码已开源&#xff09;&#xff1a; Paper: Solve the Puzzle of Instance Segmentation in Videos: A Weakly Supervised Framework with Spatio-Temporal Collaboration Code: https://github.com/ylqi/STC-Seg 众所周知&#xf…

linux之syslog使用说明

syslog 系统日志应用 1) 概述 syslog默认的日志守护进程。默认的syslog配置文件是/etc/syslog.conf文件。程序&#xff0c;守护进程和内核提供了访问系统的日志信息。因此&#xff0c;任何希望生成日志信息的程序都可以向 syslog 接口呼叫生成该信息。 几乎所有的网络设…

【2台真机实战--Redis一主一从两哨兵配置集群和主从切换】

2台真机实战--Redis一主一从两哨兵配置集群和主从切换前言实战真实环境节点分布配置主服务器&#xff08;192.168.137.23&#xff09;配置redis.conf配置sentinel.conf从服务器&#xff08;192.168.137.24&#xff09;配置redis.conf配置sentinel.conf启动redis整合SpringBoot配…

[附源码]Node.js计算机毕业设计服装销售商城系统Express

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…