2

我目前正在努力用 C# 创建一个应用程序来与我的 Apple TV 交互。

以下链接是Apple TV使用的AirPlay协议(非官方): http: //nto.github.io/AirPlay.html

从文档的顶部开始,到目前为止,我的应用程序使用 http 请求来回成功地将照片/幻灯片/视频发送到 appletv。

但是,我知道关于镜像的文档部分。根据(非官方)协议,客户端在端口 7100 上连接到 Apple TV,并发送典型的 HTTP POST 请求,然后是有关会话的参数的二进制 PLIST。我对这部分没有任何问题。由于缺乏经验,我对下一部分要做什么感到有些困惑。

在发送初始 HTTP 标头后,Apple TV 需要一个 H.264 分组流,这我完全不知道,特别是因为我不知道这种流的有效负载/NAL 结构,以及如何构造这些字节遵守协议的数组(主要是因为我只处理过您的典型数据类型。

我的主要问题是:如何设置要发送的正确值以遵守以下要求:

6.2. 流数据包

视频流使用 128 字节的标头进行分组,后跟可选的有效负载。似乎只使用了头的前 64 个字节。标头以以下 little-endian 字段开头:

大小描述
4 字节负载大小
2 字节负载类型
2 字节 0x1e 如果类型 = 2,否则 6
8 字节 NTP 时间戳
有 3 种类型的数据包:

类型描述
0 视频比特流
1 编解码器数据
2 心跳

任何帮助我朝着正确的方向前进的帮助都将非常感激,因为我觉得我已经碰到了一堵砖墙。

4

1 回答 1

1

Sounds like a custom header format. There are typically 2 formats that H.264 is transported in as described here:

http://msdn.microsoft.com/en-us/library/windows/desktop/dd757808%28v=vs.85%29.aspx Either it consists of a sequence of network abstraction layer units (NALUs), each of which is prefixed with a start code equal to 0x000001 or 0x00000001

OR

each NALU is prefixed by a length field, which gives the length of the NALU in bytes. The size of the length field can vary, but is typically 1, 2, or 4 bytes

Download the H.264 spec here: http://www.itu.int/rec/T-REC-H.264-201304-S

于 2014-05-29T02:11:02.357 回答