我如何通过互联网将音频从一台设备流式传输到另一台设备?我知道使用 Java 套接字发送基本数据,但想知道如何:
- 在文件中途开始流式传输(例如,在歌曲的中间)
- 发送的数据需要什么格式。 MediaPlayer可以将url作为数据源,那么音频从服务器端发送过来时应该如何表示呢?
Thanks
实现了音乐流应用程序后,我可以与您分享一些内容。
如果您想流式传输并使用 Android MediaPlayer 类,MP3 或 OGG 是您的最佳格式选择。
如果您的架构是客户端-服务器,即互联网中的真实服务器为 Android 设备提供流服务,那么只需通过 HTTP 流式传输 MP3 或 OGG 字节即可。只需将 MediaPlayer 指向服务器上的 URL 即可。
如果您的体系结构是使用您自己的自定义套接字代码进行点对点的,您可以创建一个“代理 http”服务器,该服务器在专用线程上侦听本地主机。您将 MediaPlayer 实例指向本地进程内套接字服务器(例如http://localhost:54321/MyStream.mp3 http://localhost:54321/MyStream.mp3)。然后,您必须实现代码来解析来自 MediaPlayer 的 HTTP get 请求,然后在您的自定义 P2P 套接字协议和连接到本地 http 服务器的侦听器之间代理流字节。许多广播流媒体应用程序正是这样做的,以便从 MP3 流中解析 ICECAST 元数据。这是我用于广播流媒体应用程序的代码 https://github.com/jselbie/wrekonline/tree/master/app/src/main/java/com/selbie/wrek/metaproxy就是这样做的。
对于“从文件中途开始”场景,您可能会发现我的MP3流阅读器类 https://github.com/jselbie/mp3streamreader/blob/master/MP3StreamReader.java有用。它包装一个输入流(文件、套接字流等)并从您开始的位置同步到下一个有效帧。只需致电read_next_chunk
获取下一个音频块及其格式。 MediaPlayer 可能会为您完成大部分繁重的工作,因此可能不需要这样做。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)