Tag: apple tv

TcpClient或HttpWebRequest到Apple TV 30秒后结束?

我正在使用C#创建一个库来使用Airplay协议将照片和video发送到Apple TV(特别是与第3代一起使用,但希望这对此无关紧要)。 https://airlib.codeplex.com/ 根据此规范,Airplay的所有命令都是端口70上的HTTP: http : //nto.github.com/AirPlay.html 我已成功地在Apple TV上播放照片和video,但无论我做什么,AppleTV都只播放30秒的video。 看起来我的C#客户端发出播放命令就是在30秒时断开连接,这导致AppleTV结束播放会话。 我认为这个的原因: 完全终止客户端应用程序会产生与等待30秒相同的行为(基本上强制连接关闭)。 手动关闭HttpWebRequest或TcpClient连接会产生相同的行为(在播放会话中途)。 无论我持有断点多长时间以阻止GetResponse()调用,video总是在WebRequest开始发送消息后30秒超时。 为video使用不同的源(IIS,外部Web服务器)不会更改行为。 即使video已经在AppleTV上缓存并且没有重新流,超时仍然会发生。 我非常确定客户端请求需要在video的“播放”过程中保持连接,据我所知,我已将其编码为此。 我真的在我的智慧结束。 我已经尝试了我能想到的所有内容,包括作为HttpWebRequest和原始TcpClient(它们都工作但都超时)执行请求,将接收/发送超时设置为疯狂数字,并循环读取Tcp流确保有“活动”。 好像AppleTV期待我发送“嘿,继续播放”的消息,但我还没有从网上的任何来源看到类似的东西。 我希望这只是一些愚蠢的东西,我不是基于我缺乏Http / Tcp知识。 这是我的代码: Uri url = “http://somevideo.com/video.mov”; float startPosition = 0; TcpClient tcpClient = new TcpClient(“192.168.1.20”,7000); tcpClient.ReceiveTimeout = 100000; tcpClient.SendTimeout = 100000; //get the client stream to read data from. NetworkStream clientStream = tcpClient.GetStream(); […]