- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 RESTful 服务,您可以创建、读取、更新和删除资源。当您处理数据库 Assets 之类的东西时,这一切都很有效 - 但这如何转换为流数据呢? (或者确实如此?)例如,就视频而言,将每一帧视为我应该一次查询一个的资源似乎很愚蠢。相反,我会建立一个套接字连接并传输一系列帧。但这是否打破了 RESTful 范式?如果我想要快退或快进流怎么办?这在 RESTful 范式中可能吗?那么:流资源如何适应 RESTful 范式?
作为实现方面的问题,我正在准备创建这样的流数据服务,并且我想确保我正在以“最佳方式”进行操作。我确信这个问题以前已经解决了。有人能给我指点好的 Material 吗?
最佳答案
我没有找到关于真正RESTful streaming的资料- 结果似乎主要是将流媒体委托(delegate)给另一个服务(这不是一个糟糕的解决方案)。所以我会尽力自己解决这个问题 - 请注意,流媒体不是我的领域,但我会尝试添加我的 2 美分。
在流媒体方面,我认为我们需要将问题分成两个独立的部分:
1.) 访问媒体资源
这非常简单,并且可以以干净且 RESTful 的方式处理。举个例子,假设我们有一个基于 XML 的 API,它允许我们访问流列表:
GET /media/
<?xml version="1.0" encoding="UTF-8" ?>
<media-list uri="/media">
<media uri="/media/1" />
<media uri="/media/2" />
...
</media-list>
...以及各个流:
GET /media/1
<?xml version="1.0" encoding="UTF-8" ?>
<media uri="/media/1">
<id>1</id>
<title>Some video</title>
<stream>rtsp://example.com/media/1.3gp</stream>
</media>
2.) 访问媒体/流本身
这是比较有问题的一点。您已经在问题中指出了一个选项,那就是允许通过 RESTful API 单独访问框架。尽管这可能有效,但我同意你的观点,这不是一个可行的选择。
我认为可以在以下之间做出选择:
我相信前者是更有效的选择,尽管它需要专用流媒体服务(和/或硬件)。这可能有点接近 RESTful,但请注意,我们的 API 在所有方面都是 RESTful,即使专用流服务不遵守统一接口(interface) (GET/POST/PUT/DELETE),我们的 API做。我们的 API 允许我们通过 GET/POST/PUT/DELETE 正确控制资源及其元数据,并且我们提供流服务的链接(从而遵守 REST 的连接性方面)。
后一个选项 - 通过 HTTP 进行流式传输 - 可能不如上面的那么高效,但绝对是可能的。从技术上讲,这与允许通过 HTTP 访问任何形式的二进制内容没有什么不同。在这种情况下,我们的 API 将提供可通过 HTTP 访问的二进制资源的链接,并且还会向我们提供有关资源大小的建议:
GET /media/1
<?xml version="1.0" encoding="UTF-8" ?>
<media uri="/media/1">
<id>1</id>
<title>Some video</title>
<bytes>1048576</bytes>
<stream>/media/1.3gp</stream>
</media>
客户端可以使用 GET/media/1.3gp
通过 HTTP 访问资源。一种选择是客户端下载整个资源 - HTTP progressive download 。一个更干净的替代方案是客户端使用 HTTP Range headers 分块访问资源。 。为了获取 1MB 大文件的第二个 256KB block ,客户端请求将如下所示:
GET /media/1.3gp
...
Range: bytes=131072-262143
...
支持范围的服务器将响应 Content-Range header ,后跟资源的部分表示:
HTTP/1.1 206 Partial content
...
Content-Range: bytes 131072-262143/1048576
Content-Length: 1048576
...
请注意,我们的 API 已经告诉客户端文件的确切大小(以字节为单位)(1MB)。如果客户端不知道资源的大小,则应首先调用 HEAD/media/1.3gp
来确定大小,否则服务器可能会响应 416请求的范围无法满足
。
关于rest - 流媒体资源如何适应 RESTful 范式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4831322/
我正在使用 Twitter4j 流 API。我正在使用地理定位约束来仅从特定区域获取推文。这是代码的那部分: twitterStream.addListener(listener);
我正在使用 WCF 并希望将大文件从客户端上传到服务器。我已经调查并决定遵循 http://msdn.microsoft.com/en-us/library/aa717050.aspx 中概述的分块方
我和提问者的情况很相似: Can I serve MP3 files with PHP?基本上我试图保护 mp3 文件不被直接下载,因此用户必须首先通过 php 进行身份验证。这是我的代码: head
我连接了 Red5 oflaDemo 并且工作正常 当我尝试使用 ffmpeg rtmp 流式传输 flv 文件时,我遇到了这个错误 root@zzz-OptiPlex-170L:~# ffmpeg
我正在尝试压缩一堆文件并通过流使数据可用。 我希望内存占用尽可能小。 我的想法是实现一个 Stream,其中我有一堆 FileStream 对象作为数据成员。当我的 Stream 上的 Read 方法
只是想知道是否有人知道自动执行此操作和/或作为 50 mp4 视频的批处理的脚本或程序。我说的是使用 CLI mediafilesegmenter 命令将视频分段的过程,以便从 Amazon S3 流
我有一个带有摄像头模块的 Raspberry Pi,我想将 PiCamera 的视频返回从 Python 流式传输到另一台运行 Python 服务器的计算机。 我成功地使用 OpenCV 返回了视频(
我正在使用 ffmpeg sdk 在 youtube live 上流式传输实时视频 av_interleaved_write_frame(m_pAvFmtCntx, pkt); av_interlea
我正在尝试使用 Tweepy 流式传输 Twitter,我想知道是否可以在不提供关键字的情况下进行流式传输?因此,我将能够流式传输所有推文,而不仅仅是具有给定关键字的推文。我正在关注的代码可以在这里找
我是 Hazelcast 的新手,我正在尝试使用它来将数据存储在太大而无法容纳在单台计算机上的 map 中。 我需要实现的过程之一是检查 map 中的每个值并对其执行某些操作 - 不是累积或聚合,而且
我需要设置从多个网络摄像头到互联网(在浏览器中)的实时流传输,并且这些流应该仅对特定用户可见。 IE。用户 A 使用他或她的登录名/密码登录我的系统,转到视频流页面,并查看来自特定摄像头的流,而其他用
我在看 Twitter Streaming API获取实时提要。但我不希望它存储在我的服务器上。我只是希望它从服务器中提取,浏览器页面将从我的服务器的 twitter 提取 URL 检索数据。但我想避
我想创建一个P2P视频传输的应用程序。更详细地说,我需要以下内容: 用户可以通过点击应用程序中的按钮来打开网络摄像头。 应用程序开始从网络摄像头拍摄图像并将其发送到特定位置(由端口和 IP 地址指定)
我们有一个在 Tomcat 下运行的 Java Web 应用程序(应用程序 #1)。 我们的要求:我们想为流媒体设置一个单独的服务器。我们的媒体文件已经转换为 flv(我们支持的唯一格式)...我们只
我是 RTMP 流媒体的新手,正在寻求帮助。足以让我开始。 我已经在谷歌上搜索了大约 5-7 个小时,但仍然无法确定我的答案! Red5的文档有限,根本找不到任何支持!甚至与我类似的问题在 stack
我正在尝试编写一个简单的 map only hadoop streaming job 从 hdfs 读取数据并将其推送到 vertica。 我写了几个shell脚本如下 加载.sh hadoop
我是 Android 的新手,正在尝试: 从相机流式传输原始数据 (ImageFormat RAW_SENSOR) 处理原始数据 交互显示处理结果 原始数据捕获似乎只能在静态捕获模式下使用。这是正确的
我需要将音频从麦克风流式传输到 http 服务器。 这些录音设置是我需要的: NSDictionary *audioOutputSettings = [NSDictionary dictionaryW
我需要了解 WCF 在发送消息时是如何工作的。 WCF 在发送之前是否序列化所有内容? 我的另一个问题是使用 Streaming 有什么好处?更大的消息是否更好,比如说 1Mb 到 2Mb?我可以发送
是否可以直接从 API 初始化新的环聊直播广播/流式传输?我尝试将环聊直播用于我网站的直播系统,但我在 YouTube Live API 中没有看到任何允许通过环聊直播创建流的 API 方法(看起来需
我是一名优秀的程序员,十分优秀!