在不透露文件路径的情况下播放MP3歌曲

时间:2011-07-01 06:53:03

标签: php flash cart shopping

我正在用PHP开发购物车,我将以MP3格式销售歌曲。通过产品展示,我想提供访客/用户只听一次歌曲。所以,如果我使用像JW播放器这样的播放器来播放这首歌。播放器在网页的源代码中公开文件路径,他们可以直接下载文件。

我正在寻找播放这首歌的内容,以便访问者不知道歌曲文件的路径。

我该如何避免这种情况?请指教。

由于

4 个答案:

答案 0 :(得分:3)

您要求使用DRM系统。这样的事情不存在。

理由:

  • Alice想要向Bob发送消息(MP3文件)
  • Alice不希望Eve收到消息(MP3文件)
  • 鲍勃和夏娃是同一个人

这就是DRM试图解决的问题。您所能做的就是尽量隐藏最终用户的事实。祝你好运...

(在上面的示例中,您可以将“Alice”替换为“server”,将“Bob”替换为“site visitor”,将“Eve”替换为“想要下载文件但不付费的用户”。)

如果您接受不能拥有DRM系统,那么还有更多可能性:

  • 仅向用户发送文件的片段,直到他们付款为止
  • 对样本文件进行销毁/水印(例如,在播放15秒后,MP3文件包含录制内容“这是该歌曲的演示版本,实际购买的歌曲将不包含此消息”。

请注意,您必须使示例文件与您正在销售的实际文件不同。这是解决用户在付费之前获取实际文件的问题的唯一方法。

答案 1 :(得分:2)

你不能。

虽然您可以隐藏URL,但您无法阻止人们免费下载歌曲。这不是HTTP的工作原理。如果你提供一个URL,无论是否被遮挡,它最终都必须响应数据才能播放。否则,JWPlayer将无法播放数据。

由于JWPlayer嵌入到网站中,它必须向服务数据的某些后端服务器发出请求。这些请求可以很容易地截获,只需要几天就可以知道他们可以免费下载完整的专辑。

因此,如果你想确保你不破坏商店,要么提供低质量的mp3(这可能会给人们带来糟糕的聆听体验而不能说服人们购买)或提供歌曲的预览(就像几乎其他所有人一样)一样)。

答案 2 :(得分:1)

根据在URL中传递的一些随机字符串创建一个提供MP3文件的页面。每个随机字符串都存储在数据库表中,并参考实际文件位置。听完歌曲一次后,翻转数据库中的状态字段以防止再次使用该随机字符串。

您不必担心泄露文件的真实路径,因为即使用户检查了源代码,他们也只会看到随机字符串。

此外,您应该为下载做同样的事情。要求用户登录,而不是文件的直接路径,将其传递给php页面,以便文件的链接不会“在那里”供任何人抓取/使用。

答案 3 :(得分:1)

所以基本上,你想要达到的目的是为买家提供他即将购买的歌曲的“样本”。 听完样本后,他就可以买完整首歌了。

在我看来,你可以在这里遵循2条路径:

  1. 将歌曲剪成一小段样本,例如1分钟,让他们只听到。 如果用户成功下载,则没有问题,因为他不会拥有完整的歌曲。您可以使用像FFMPEG这样的mp3编码器/解码器自动为服务器端创建此示例,为您创建小样本。

  2. 由于Flash可以很好地处理流式音频/视频,因此您可以使用按需流媒体机制,该机制还可以为用户提供歌曲样本。这样您只需将样本的字节发送到客户端,而不是完整的歌曲。这可以通过使用开源媒体服务器技术来实现,例如Red5

  3. 虽然选项2可能是最可靠的解决方案,但它也是最耗时的,也是最难实现的。

    许多在线音乐商店都做同样的事情。它们只给你一个有限的预览。
    以下是我所知道的一些:

    干杯