繁体   English   中英

在C#中将h.264流打包到Apple TV

[英]Streaming h.264 packetized to Apple Tv in C#

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

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

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

但是,Im直到文档中有关镜像的部分为止。 根据(非官方)协议,客户端在端口7100上连接到Apple TV,并发送典型的HTTP POST请求,后跟有关会话的参数的二进制PLIST。 这部分我没有问题。 由于缺乏经验,我对下一步的工作有些困惑。

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

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

6.2。 流数据包

视频流使用128字节的标头和随后的可选有效载荷进行打包。 似乎仅使用头的前64个字节。 标头从以下小尾数字段开始:

尺寸说明
4字节有效负载大小
2字节有效载荷类型
如果类型= 2,则为2个字节0x1e,否则为6
8字节NTP时间戳
数据包有3种类型:

类型说明
0个视频比特流
1个编解码器数据
2心跳

如果能帮助我朝正确的方向发展,我会感觉自己碰到了几堵砖墙,对此我将不胜感激。

听起来像是自定义标头格式。 H.264传输的格式通常有2种,如下所述:

http://msdn.microsoft.com/zh-cn/library/windows/desktop/dd757808%28v=vs.85%29.aspx它由一系列网络抽象层单元(NALU)组成,每个单元都是前缀为等于0x000001或0x00000001的起始码

要么

每个NALU都以长度字段为前缀,该字段以字节为单位给出NALU的长度。 长度字段的大小可以变化,但是通常为1、2或4个字节

在此处下载H.264规范: http//www.itu.int/rec/T-REC-H.264-201304-S

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM