流式存储音频/视频

news2024/12/24 0:21:34

目录

流式存储音频/视频

1.1 具有元文件的万维网服务器

1.2 媒体服务器 

1.3 实时流式协议 RTSP

使用 RTSP 的媒体服务器的工作过程


流式存储音频/视频

·“存储”音频/视频文件不是实时产生的,而是已经录制好的,通常存储在光盘或硬盘中。

传统浏览器从服务器下载已经录制好的音频/视频文件步骤

1.1 具有元文件的万维网服务器

·元文件就是一种非常小的文件,它描述或指明其他文件的一些重要信息。这里的元文件保存了有关这个音频/视频文件的信息。

1.2 媒体服务器 

·使用两个分开的服务器:万维网服务器,媒体服务器。

·媒体服务器: 流式服务器 (streaming server),支持流式音频和视频的传送。

·媒体播放器与媒体服务器的关系:

        客户与服务器的关系。

        媒体播放器向媒体服务器请求音频/视频文件。

·媒体播放器与媒体服务器之间的交互:采用另外的协议。 

媒体播放器不是向万维网服务器、而是向媒体服务器请求音频/视频文件。

下载时使用 TCP,还是 UDP?

采用 UDP 有以下缺点:

1.由于网络情况多变,接收端的播放器很难做到始终按规定的速率播放。

2.很多单位的防火墙往往阻拦外部 UDP 分组的进入,因而使用 UDP 传送多媒体文件时会被防火墙阻拦掉。

3.使用 UDP 传送流式多媒体文件时,如果在用户端希望能够控制媒体的播放,如进行暂停、快进等操作,还需要使用另外的协议RTP 和 RTSP,增加了成本和复杂性。

·现在,对流式存储音频/视频的播放,如 YouTube 和 Netflix,都是采用 TCP 来传送

使用 TCP 传送流式视频的主要步骤

·如果是观看实况转播,应当首先考虑使用 UDP 来传送

         ·若使用 TCP 传送,当出现网络严重拥塞时,会产生播放暂停。

        ·使用 UDP 传送时,即使因网络拥塞丢失了一些分组,对观看的感觉也会比突然出现暂停要好些。

1.3 实时流式协议 RTSP

·实时流式协议 RTSP (Real-Time Streaming Protocol) :

        ·应用层的多媒体播放控制协议不传送数据

        ·以客户服务器方式工作。

        ·使用户在播放从互联网下载的实时数据时能够进行控制,如:暂停/继续、后退、前进等。

        ·又称为“互联网录像机遥控协议”。

·RTSP 是有状态的协议,它记录客户机所处于的状态(初始化状态、播放状态或暂停状态)。

·RTSP 控制分组既可在 TCP 上传送,也可在 UDP 上传送。

·RTSP 没有定义音频/视频的压缩方案,也没有规定音频/视频在网络中传送时应如何封装在分组中,没有规定音频/视频流在媒体播放器中应如何缓存。

使用 RTSP 的媒体服务器的工作过程

使用 RTSP 的媒体服务器的工作过程

1.浏览器向万维网服务器请求音频/视频文件。

2.万维网服务器从浏览器发送携带有元文件的响应。

3.浏览器把收到的元文件传送给媒体播放器。

4.RTSP 客户与媒体服务器的 RTSP 服务器建立连接。

5.RTSP 服务器发送响应 RESPONSE 报文。

6.RTSP 客户发送 PLAY 报文,开始下载音频/视频文件。

7.RTSP 服务器发送响应 RESPONSE 报文。

8.RTSP 客户发送 TEARDOWN 报文断开连接。

9.RTSP 服务器发送响应 RESPONSE 报文。

欢迎一起学习~

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

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

相关文章

IO进程线程day8作业

信号灯集二次函数封装 sem.c #include<myhead.h>union semun {int val; /* Value for SETVAL */struct semid_ds *buf; /* Buffer for IPC_STAT, IPC_SET */unsigned short *array; /* Array for GETALL, SETALL */struct seminfo *__buf; /* B…

wps 365 批量修改.xlsx、.xls,单元格内容的格式为yyyy-mm-dd

xlsx、xls文件导入校验单元格内容格式有误&#xff0c;批量修改步骤如下 1.选中要修改内容的单元格列 2.选择数据-分列-分列&#xff0c;弹出“文本分列向导”弹窗 3.选择“下一步”——“下一步”到步骤3&#xff0c;在“列数据类型”中选中日期-YMD格式&#xff0c;点击“完成…

protobuf某音弹幕实战

声明:(如果侵犯到你的权益联系我&#xff0c;我会马上删除) 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;不提供完整代码&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由…

2.20 day2 QT

自由发挥登录窗口的应用场景&#xff0c;实现一个登录窗口界面 #include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {//窗口相关设置this->setWindowTitle("登入页面"); //设置 窗口 标题this->setWindowIcon(QIcon("D:…

2024Python自动化测试面试必备知识点!

在准备 Python 自动化测试面试时&#xff0c;以下是一些必备的知识点&#xff0c;可以帮助您在面试中展现实力&#xff1a; 软件测试基础&#xff1a; 熟悉软件测试的基本概念&#xff0c;包括测试类型&#xff08;功能测试、性能测试、安全测试等&#xff09;、测试方法&#…

HTTP与HTTPS-HTTPS 的应用数据是如何保证完整性的?

资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) HTTPS 的应用数据是如何保证完整性的? TLS 在实现上分为握手协议和记录协议两层 TLS 握手协议就是我们前面说的 TLS 四次握手的过程&#xff0c;负责协商加密算法和生成对称密钥&#xff0c;后续用此密…

C++ //练习 9.19 重写上题的程序,用list替代deque。列出程序要做出哪些改变。

C Primer&#xff08;第5版&#xff09; 练习 9.19 练习 9.19 重写上题的程序&#xff0c;用list替代deque。列出程序要做出哪些改变。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 代码块 //头文件需要调整为list&#xff0c;同时…

猫头虎分享已解决Bug || ValueError: No gradients provided for any variable

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

代码随想录算法训练营第三十二天|122 买卖股票的最佳时机||、55 跳跃游戏、45 跳跃游戏||

122 买卖股票的最佳时机|| 题目链接&#xff1a;买卖股票的最佳时机|| 思路 这道题目求的是获得的最大利润是多少。我们只需要收集正利润&#xff0c;便可求得最大利润。 class Solution { public:int maxProfit(vector<int>& prices) {int res 0;for(int i1; i…

Python炒股自动化(2):获取股票实时数据和历史数据

如果你是一位大佬&#xff0c;看我前面的分享即可&#xff0c;相信你有自己的思路&#xff0c;或者已经有了成熟的策略&#xff0c;你需要的只是API接口来实现你的想法&#xff0c;前面的分享是你需要的&#xff0c;这些是给刚开始接触程序交易的朋友分享的。 前面发了股票程序…

【K8s】初识PV和PVC

​ 目录 收起 O、致谢 一、前言 二、Volume 2.1 什么是Volume 2.2 为什么要引入Volume 2.3 Volume类型有哪些 2.4 Volume如何使用 2.4.1 通过emptyDir共享数据 2.4.2 使用HostPath挂载宿主机文件 2.4.3 挂载NFS至容器 三、PV和PVC 3.1 什么是PV和PVC 3.2 为什么要引入PV和PVC 3…

「哈哥赠书活动 - 48期」-『商业分析思维与实践:用数据分析解决商业问题宣传文案』

⭐️ 赠书 - 《商业分析思维与实践》 ⭐️ 内容简介 本书以业务为导向&#xff0c;详细地讲解了如何通过大数据分析来解决商业问题。其目的在于运用大数据分析思维&#xff0c;帮助读者把学术知识应用于真实的业务场景&#xff0c;解决实际的业务问题。本书基于业务问题&#x…

鸿蒙 渲染控制

前提&#xff1a;基于官网3.1/4.0文档。参考官网文档 基于Android开发体系来进行比较和思考。&#xff08;或有偏颇&#xff0c;自行斟酌&#xff09; 1.概念 ArkUI通过自定义组件的build()函数和builder装饰器中的声明式UI描述语句构建相应的UI。在声明式描述语句中开发者除了…

GEE必须会教程—矢量数据类型

矢量这个词&#xff0c;我们在数学上并不陌生&#xff0c;它是既有方向又有大小的量。而在GIS中&#xff0c;常常利用欧氏空间的点、线、面来表示地理实体&#xff0c;进而构成我们使用频繁的矢量数据&#xff0c;它和栅格数据一同构成了地理信息数据的基础。今天开始&#xff…

AI:140-使用强化学习优化供应链管理

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带关键代码,详细讲解供大家学习,希望…

typecho 给文章创建目录树

受益于 shortcode 短代码插件和泽泽短代码中目录树的显示样式&#xff0c;形成了自己实现添加文章目录的思路&#xff1a; 一、文章目录树的结构 <div id"toc"><div class"toc-left"><div class"toc-btn" type"button&quo…

网络技术ensp 一个简单的交换机配置案例

由于工作调岗&#xff0c;转战网络运维了&#xff0c;第一次网络笔记 1.&#xff0c;目的&#xff1a;2台主机相互可以ping通&#xff0c;并且可以ping通网关地址&#xff0c;设备&#xff1a;2台主机&#xff0c;2台交换机 2网络拓扑图如下 3.主机pc1的配置信息 ip&#xff…

一个Post请求入门NestJS的路由与控制器

​ NestJS的控制器 控制器负责处理传入请求并向客户端返回响应。 控制器的目的是接收应用的特定请求。路由机制控制哪个控制器接收哪些请求。 通常&#xff0c;每个控制器都有不止一条路由&#xff0c;不同的路由可以执行不同的操作。 在使用了脚手架的项目中&#xff0c;我…

javascript给对象添加迭代器

迭代器是啥就自行百度了 为啥for…of可以遍历数组&#xff0c;为啥不能遍历对象&#xff0c;就是for…of会调用迭代器&#xff0c;而数组是内置了迭代器了&#xff0c;而对象没有内置&#xff0c;所以直接使用for…of遍历对象会报错&#xff0c;因此只用在对象的原型上面自定义…

temu/亚马逊美国站烧烤炉UL报告UL2728A应该怎么办理?

temu/亚马逊美国站烧烤炉UL报告UL2728A应该怎么办理&#xff1f; 近年来&#xff0c;烧烤炉在美国市场越来越受欢迎&#xff0c;其便捷性和独特的烹饪方式吸引了许多消费者。然而&#xff0c;为了确保产品的安全性和质量&#xff0c;美国市场对于烧烤炉产品的上架要求日益严格…