C#:将音频文件从服务器流式传输到客户端
我目前正在编写一个应用程序,允许用户安装某种forms的应用程序(可能是Windows服务),该应用程序将在其PC上打开一个端口,并在硬盘上给出一个特定的目标,然后就可以流式传输mp3文件。
然后,我将有另一个应用程序连接到服务器(作为用户的PC),并能够通过连接到该PC(远程)来给定端口数据浏览托管数据,并将mp3文件从服务器流式传输到应用程序
我在网上找到了一些教程,但其中大部分是关于C#中的文件服务器,它们下载允许您下载整个文件。 我想要的是流式播放一个mp3文件,以便在下载一定数量的字节时开始播放(即,当它被缓冲时)
我该如何完成这项任务? 我需要具体知道的是如何编写这个应用程序(稍后我将转为Windows服务),它将在指定的端口上侦听流文件,以便我可以通过以下类型访问文件: http://:65000/acdc/wholelottarosie.mp3
,希望能够在WPF MediaPlayer
传输该文件。
[更新]
我正在学习如何构建文件服务器并将文件从服务器发送到客户端。 我必须做些什么吗?
[更新]
目前正在阅读这篇文章: 使用C#从一个流播放音频 ,我认为我看起来如何播放流媒体文件非常有前景; 但我仍然不知道如何实际从服务器流式传输文件。
流媒体和下载之间没有有效的区别。 他们是一回事。 任何差异都纯粹是语义上的。
如果您愿意,可以从任何Web服务器“下载”MP3并在下载时开始播放。 它只需要缓冲一些数据并立即将其发送到解码和回放例程。
类似地,甚至可以下载所谓的“流”服务器。 您只需要保存通过线路发送到文件的字节。
“流式”应用程序只是不是为将文件保存到磁盘而设计的应用程序。
编辑:
有一个例外。 两个真的:
首先,如果您正在流式传输“实时”音频,例如无线电或其他类型,您不需要100%的可靠性,那么它们会使用UDP进行流式传输。 如果你愿意,这仍然可以保存,但它更多的是面向数据包而不是面向流。
第二种是使用加密时,在这种情况下你仍然可以保存文件,但如果没有加密算法和密钥,它将毫无用处。
这是不正确的。
文件下载和HTTP多媒体流之间的区别是编docker,其被设置为流的分块编码。 此外,文件下载具有Content-Length标头,因此收件人系统可以提前知道文件大小。
没有带有多媒体流的Content-Length标头,因此没有预期的终点。 相反,只要它们继续出现,就会接收和处理一系列连续的数据块。
- 当TextBox TextChanged事件被触发时?
- 在C#/ .NET WebBrowser控件中,SSL / TLS / HTTPS站点非常慢,但在Internet Explorer中却很好
- 如何获取UserPrincipal类未表示的Active Directory属性
- 将可见性绑定到可检查菜单项会在WPF中显示错误“服务提供程序缺少INameResolver服务”
- 如何随机化数组中的数字
- EntityFramework从SQL Server View返回损坏/交换的数据
- Nullable通过HasValue = false的reflection创建,仅给出类型为“Type”的参数
- 如何在XDocument中删除除root之外的节点的xmlns属性
- Dictionary ContainsKey并在一个函数中获取值