AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 34651
Accepted
Adam Davis
Adam Davis
Asked: 2009-07-02 10:49:55 +0800 CST2009-07-02 10:49:55 +0800 CST 2009-07-02 10:49:55 +0800 CST

HTTP 自适应比特率流

  • 772

Apple 在 iPhone OS 3.0 中包含了 HTTP 自适应比特率流,特别是 Safari 会自动处理这一点。

我想以低成本的方式使用它,但我希望它在最坏的情况下需要自定义 HTTP 服务器,在最好的情况下需要有趣的 PHP/etc 脚本。

但首先我需要知道协议差异或标准是什么。HTTP 作为一种协议相当简单,但自适应比特率意味着文件大小不同,块位置在不同比特率下不同等。例如,客户端是否在下载流时告诉服务器有关流的任何特殊信息,或者它是全部在服务器端处理?

消除最终用户的缓冲暂停对于实时和预先录制的视频流都非常有吸引力,并且考虑到许多网络和政府正在限制非端口 80 流量,通过 HTTP 进行这两种操作会更好。

  • HTTP 自适应比特率流的技术细节是什么,尤其是 Apple 的实现?

-亚当

http streaming video
  • 4 4 个回答
  • 6868 Views

4 个回答

  • Voted
  1. Best Answer
    Adam Davis
    2009-07-02T11:43:57+08:002009-07-02T11:43:57+08:00

    更新

    看起来 Apple 提出了 IETF 草案提案,并且有些人已经在研究分段器:

    HTTP 直播流 - draft-pantos-http-live-streaming-01
    http://tools.ietf.org/id/draft-pantos-http-live-streaming-01.txt

    iPhone HTTP 流与 FFMpeg 和开源分段器
    http://www.ioncannon.net/programming/452/iphone-http-streaming-with-ffmpeg-and-an-open-source-segmenter/


    好的,看起来 HTTP 服务器只是充当一个愚蠢的 HTTP 服务器。浏览 Akamai 提供的示例网站为我提供了足够的信息来开始使用静态内容流。

    http://iphone.akamai.com/

    白皮书 ( http://www.akamai.com/dl/akamai/iphone_wp.pdf ) 提供了有关传输流编码的信息,因此 .ts 流很简单。

    编码器(或单独的分段器进程)将以 MPEG-2 TS 格式 (.ts) 的小内容片段序列生成 H.264/AAC 内容。还有一个引用段的 M3U8 索引文件;对于实时内容,M3U8 会不断更新以反映最新内容。

    H.264 编码应该是单通道基线配置文件,帧重新排序禁用。每 5 秒建议关键帧,理想情况下是所选片段长度的偶数除数。

    该网站提供了一个 M3U8 文件,它只是一个 M3U 播放列表,但采用 UTF-8 字符编码格式。

    然后该文件链接到每个比特率的 M3U8 文件。我假设他们必须在相同的位置都有剪辑(例如,每 2 或 10 秒),以便可以无缝切换。它似乎完全是客户端驱动的——客户端决定如何测量带宽以及它将获得哪个版本。

    主文件的内容是:

    #EXTM3U
    #EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=860000
    hi/prog_index.m3u8
    #EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=512000
    med/prog_index.m3u8
    #EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=160000
    lo/prog_index.m3u8
    

    然后每个其他文件是:

    嗨/prog_index.m3u8

    #EXTM3U
    #EXT-X-TARGETDURATION:10
    #EXT-X-MEDIA-SEQUENCE:0
    #EXTINF:10,    
    fileSequence0.ts
    #EXTINF:10,    
    fileSequence1.ts
    #EXTINF:10,    
    fileSequence2.ts
    #EXTINF:10,    
    fileSequence3.ts
    #EXTINF:1,    
    fileSequence4.ts
    #EXT-X-ENDLIST
    

    med/prog_index.m3u8

    #EXTM3U
    #EXT-X-TARGETDURATION:10
    #EXT-X-MEDIA-SEQUENCE:0
    #EXTINF:10,    
    fileSequence0.ts
    #EXTINF:10,    
    fileSequence1.ts
    #EXTINF:10,    
    fileSequence2.ts
    #EXTINF:10,    
    fileSequence3.ts
    #EXTINF:1,    
    fileSequence4.ts
    #EXT-X-ENDLIST
    

    lo/prog_index.m3u8

    #EXTM3U
    #EXT-X-TARGETDURATION:10
    #EXT-X-MEDIA-SEQUENCE:0
    #EXTINF:10,    
    fileSequence0.ts
    #EXTINF:10,    
    fileSequence1.ts
    #EXTINF:10,    
    fileSequence2.ts
    #EXTINF:10,    
    fileSequence3.ts
    #EXTINF:1,    
    fileSequence4.ts
    #EXT-X-ENDLIST
    

    这适用于 HTML 5 视频标签:

    <video width=”640” height=”480” >
       <source src=”content1/content1.m3u8” />
    </video>
    

    还有很多未解决的问题,但这可能足以开始。

    -亚当

    • 3
  2. Kevin Kuphal
    2009-07-02T11:11:43+08:002009-07-02T11:11:43+08:00

    Akamai是这样描述的:

    从 iPhone OS 3.0 版和 QuickTime X 开始,您可以通过 HTTP 从普通 Web 服务器发送流式音频和视频,以便在 iPhone、iPod touch 或其他设备(例如台式计算机)上播放,而不受渐进式下载的限制。

    新的流媒体协议支持多比特率,并根据网络条件自动切换到最佳比特率,以获得流畅的质量播放体验。此实现还通过 HTTPS 提供媒体加密和用户身份验证,允许发布者保护他们的工作。实时和点播内容都可以使用 3.0 规范交付。

    到 iPhone 的 HTTP 流式传输由三部分组成:服务器组件、Akamai 网络和客户端软件。

    在典型配置中,硬件编码器接收音频-视频输入并将其转换为包含 H.264 视频和 AAC 或 HE-AAC 音频的 MPEG-2 传输流。然后通过流分段器将编码的流分成一系列短媒体文件。分段器还创建并维护一个索引文件,其中包含已创建的短媒体文件列表。这些文件放置在 Web 服务器上。

    iPhone OS 内置的媒体播放器提供了指向索引文件的链接,然后它按顺序请求媒体文件并播放它们,而片段之间没有任何停顿或间隙

    因此,您显然需要流分段器才能正确创建内容。HTTP 服务器在该技术中是通用的。

    • 1
  3. bobby
    2009-10-16T21:42:41+08:002009-10-16T21:42:41+08:00

    没有 Windows 分段器 - iPhone 分段器由于未知原因无法正常工作。您必须是注册的 iPhone 开发者才能下载分段器

    • 1
  4. tommy chheng
    2010-02-07T20:58:10+08:002010-02-07T20:58:10+08:00

    Svitoch,你有雪豹吗?它带有苹果流分段器。只需输入 man mediastreamsegmenter 即可查看手册。

    • 0

相关问题

  • 尝试启动 IIS6 网站时出现意外错误 0x8ffe2740

  • HTTP 加速的反向代理

  • 使用 gvfs 调试 WebDAV

  • 负载测试 HTTP 服务器的工具?[复制]

  • IIS 6.0 (Windows Server 2003) 上的 HTTP 压缩

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve