我正在做的是创建一个简单的Java音频流媒体服务器。为了简单起见,它只是静态的MP3文件,但我相信理论的转移。客户端可以是本地的或通过互联网,并且可以是可以被编程为与服务器通信的任何设备或计算机。用Java创建音频流 - 从哪里开始?
我从来没有任何编程相关的流媒体/网络或服务器/客户端之前,所以我认为这将是一个有益的锻炼,学到新的东西。
事情我认为有需要考虑:
认证客户端 - 这将如何做,如何将服务器知道用户是目标用户。
会有某种形式的客户端上的缓冲。当客户端正在从缓冲区中读取时,可能会在缓存的缓冲区文件上产生文件锁定,因此我无法简单地将文件的新分段追加到最后。
如何将MP3文件的钱你真的需要玩什么呢?它是线性的,所以第一个x KB包含音乐声音的前y秒的所有信息。
我将文件流式传输到哪个区段?
是否有可能知道你是通过流MP3文件多远?这将如何处理?
什么协议,我实际上用于流?我假设某种HTTP请求在这里最好?可以通过80以外的端口执行HTTP请求,不是吗?
的Java是否有可靠的传输协议,内置的还是你必须进入基本事实和处理发送数据包来回确认...等...
是否有可能加密流量?对于文件没有被读取的足够安全性,但不是那么多,诸如移动设备之类的低功率设备不能足够快速地解密以便流畅播放。
我相信还有很多事情需要考虑,但那些是我能想到的其他问题。
我在上述所有假设有不是一个真正的问题,它更自言自语,所以我想为什么的问题是:我从哪里开始?有没有有趣的内容?有没有人对上述有任何想法?
只是重申一下,我在看“重新发明轮子”在这里,我想了解这类的东西,我就跟着去了,所以我可以传递知识到其他的东西。
出于兴趣足够安全,这将是我的选择,如果我没有使用HTTP?我假设我可以使用某种套接字传输?这样做的缺点是什么?感谢您的答复。 – Cheetah 2011-05-12 15:47:07
如果你不想使用http,那么将需要一个tcp连接,然后你必须制定你自己的协议(客户端必须告诉服务器哪个文件开始流式传输,EoF需要明确处理) – 2011-05-12 16:04:29
听起来(从学习的角度来看)更有趣。那意味着我将不得不做我自己的缓冲,缓存和碎片 - 对吧?这是你指的那种东西:http://download.oracle.com/javase/tutorial/networking/sockets/clientServer.html – Cheetah 2011-05-12 16:48:43