【问题标题】:How to make iPhone host like a stream web server如何让 iPhone 主机像流网络服务器一样
【发布时间】:2011-07-04 11:25:24
【问题描述】:

参考http://www.subfurther.com/blog/2010/12/13/from-ipod-library-to-pcm-samples-in-far-fewer-steps-than-were-previously-necessary/,我得到了AVAssetReader,如何创建一个像“http:///a.mp3”这样的url,让其他机器可以访问这个mp3下载或播放?

【问题讨论】:

  • 能否请您显示代码示例,或提供更多建议。我对这个话题很感兴趣。谢谢,
  • 我使用 cocoahttpserver 作为文件网络服务器,并添加一些 header ,现在可以使用 medis 播放器播放 m4a 文件
    - (NSDictionary *)httpHeaders { NSString *key=@"Content-类型”; NSString *value=@"audio/m4a";返回 [NSDictionary dictionaryWithObjectsAndKeys:value, key, nil]; }

标签: iphone avfoundation


【解决方案1】:

当你得到一个连接时,写这个头

char * header = "ICY 200 OK\r\n"
"icy-name:iPhone FM\r\n"
"icy-url:http://iphone-fm.com/\r\n"
"content-type:audio/mpeg\r\n"
"\r\n";

然后只需将原始 mp3 数据写入套接字。

我不确定您是将 mp3 作为文件还是作为流式广播提供。如果作为文件,您可能应该设置内容长度。如果作为广播流,那么您应该查看

http://www.smackfu.com/stuff/programming/shoutcast.html

并且可能为歌曲标题等实现流式元数据。

【讨论】:

  • 谢谢,你能告诉我哪个内容类型是 m4a 文件吗?我只能将 iPhone musci 转换为这个文件。但音频/mpeg 寻找 mp3 文件
  • 这是音频/aac - 但您不能流式传输 m4a 文件,您必须流式传输其 ADTS AAC 数据包。查看 AudioFileReadPacketData 或(更好)通过直接从 AVAssetReader 流式传输数据包来跳过所有中间步骤。并开始一个新问题。
【解决方案2】:

这不是微不足道的。当然你可以在技术上做到这一点,因为 iPhone 有一个完整的 TCP/IP 堆栈。但是,对于服务器,您需要在连接之前知道它的地址。

我在这些案例中看到的是:

  1. 打开你的APP
  2. 根据当前地址显示要连接的 URL(您可能只能通过 WIFI 连接)
  3. 使用客户端连接到您的 iPhone 服务器

请记住,这对用户非常不友好。您可能需要考虑使用代理服务器从您的 iPhone 连接到中间的世界其他地方。

【讨论】:

  • 谢谢,但我正在使用 asyncsocket 来接受 http 请求。我关心的是如何将音乐文件作为流数据发送给客户端。
猜你喜欢
  • 1970-01-01
  • 2016-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-01
  • 2017-07-30
  • 2020-11-22
相关资源
最近更新 更多