1

我正在用 PHP 开发一个购物车,我将以 MP3 格式出售歌曲。通过产品展示,我想让访问者/用户只听歌曲 1 次。因此,如果我使用 JW 播放器之类的播放器来播放歌曲。播放器在网页源代码中公开文件路径,可以直接下载文件。

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

我怎样才能避免这种情况?请指教。

谢谢

4

4 回答 4

3

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

理由:

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

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

(在上面的示例中,您可以将“Alice”替换为“服务器”,将“Bob”替换为“站点访问者”,将“Eve”替换为“想要下载文件而不付费的用户”。)

如果你接受你不能拥有 DRM 系统,还有更多的可能性:

  • 仅将文件的一部分发送给用户,直到他们支付了费用
  • 销毁样本文件/加水印(例如在播放 15 秒时,MP3 文件包含录音“这是歌曲的演示版本,实际购买的歌曲不会包含此消息”。

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

于 2011-07-01T09:15:59.437 回答
2

你不能。

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

由于 JWPlayer 嵌入到网站中,因此它必须向某些提供数据的后端服务器发出请求。这些请求很容易被拦截,而且人们发现他们可以免费下载完整专辑只需几天的时间。

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

于 2011-07-01T07:15:42.027 回答
1

所以基本上,你想要实现的是为买家提供他即将购买的歌曲的“样本”。听完样本后,他可以购买完整的歌曲。

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

  1. 将任何歌曲切成例如 1 分钟的小样本,让他们只听到那个。如果用户下载成功,就没有问题,因为他不会拥有完整的歌曲。您可以使用FFMPEG之类的 mp3 编码器/解码器在服务器端自动执行此操作,为您创建小样本。

  2. 由于 Flash 非常适合流式音频/视频,因此您可以使用按需流式传输机制,该机制还将为用户提供歌曲的样本。这样,您只会将样本的字节发送给客户端,而不是完整的歌曲。这可以通过使用Red5等开源媒体服务器技术来实现

尽管选项 2 可能是最可靠的解决方案,但它也是最耗时且最难实现的解决方案。

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

干杯

于 2011-07-01T09:18:53.290 回答
1

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

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

此外,您应该对下载执行相同类型的操作。要求用户登录,而不是文件的直接路径,而是通过 php 页面传递它,这样文件的链接就不会“在那里”供任何人获取/使用。

于 2011-07-01T06:59:35.537 回答