【问题标题】:Why does flac http streaming not work?为什么 flac http 流式传输不起作用?
【发布时间】:2011-10-31 17:18:51
【问题描述】:

我有一个简单的 http 流应用程序,它接受 GET URL 请求并返回 HTTP“内容类型”标头,然后请求文件数据。它在 localhost http 服务器上运行。

因此我可以在播放器中收听(例如)

http://localhost:8080/music/metallica.mp3

它在任何播放器(VLC、MPlayer、WMP、Winamp)中都像普通的 http 流一样播放。

但是,为什么我尝试以这种方式流式传输 FLAC,它在 MPlayer 和 WMP 中不起作用(我使用内容类型“audio/flac”)。

据我了解,问题在于 DShow 过滤器(Graph Builder 无法找到正确的源过滤器和/或将其连接到 flac 解码器)。

在我开始 DShow 过滤器调试之前,没有人能提示我应该在哪里挖掘吗? :)

UPD:

我发现设置确切的流大小(通过内容长度)可以解决问题。 但是,我宁愿不这样做。有什么想法吗?

【问题讨论】:

    标签: windows http streaming directshow multimedia


    【解决方案1】:

    从网络资源流式传输不同于从文件流式传输。假定在服务器和播放器主机之间实现了流式传输协议,并且 Windows 并没有为 DirectShow API 中的流式传输客户端提供开箱即用的强大支持:您需要一个额外的过滤器来支持这种流式传输。

    【讨论】:

    • hm... 我正在通过 http 进行流式传输 :) mp3 工作正常,flac 不行。所以我假设 flac 解码器无法连接到源过滤器 mp3 解码器使用......但是如何解决这个问题。我不想编写源过滤器,因为它依赖于平台(流媒体应用程序在 java 中)并且需要安装。
    • 有多种方式通过 HTTP 进行流式传输:它可以是通过 HTTP 隧道传输的 RTSP/RTP 协议,它可以像访问远程文件一样访问网络资源。 DiretShow 没有用于 HTTP 流的库存过滤器。
    • 听起来合乎逻辑,但是 dshow 能够以某种方式从纯 Apache 播放 mp3 文件,而无需在 http 传输之上应用任何类型的协议。 GraphEdit 证明了这一点,当我使用 http url 提供它时,它会正确呈现图形。
    • 它不能正常工作。它可能通过不再受支持的过滤器在 Windows XP 中运行,或者您安装了第三方过滤器。
    • 该 URL 在 Windows 7 的 Windows Media Player 中仍然可以播放,但它发生在 DirectShow 之外:WMP 使用媒体基础来播放它。
    猜你喜欢
    • 1970-01-01
    • 2013-12-08
    • 1970-01-01
    • 1970-01-01
    • 2011-12-20
    • 1970-01-01
    • 2015-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多