【发布时间】:2011-07-01 06:53:03
【问题描述】:
我正在用 PHP 开发一个购物车,我将在其中销售 MP3 格式的歌曲。通过产品展示,我想让访问者/用户只听歌曲 1 次。因此,如果我使用 JW 播放器之类的播放器来播放歌曲。播放器在网页源代码中公开文件路径,可以直接下载文件。
我正在寻找它来播放歌曲,以便访问者不知道歌曲文件的路径。
我怎样才能避免这种情况?请指教。
谢谢
【问题讨论】:
我正在用 PHP 开发一个购物车,我将在其中销售 MP3 格式的歌曲。通过产品展示,我想让访问者/用户只听歌曲 1 次。因此,如果我使用 JW 播放器之类的播放器来播放歌曲。播放器在网页源代码中公开文件路径,可以直接下载文件。
我正在寻找它来播放歌曲,以便访问者不知道歌曲文件的路径。
我怎样才能避免这种情况?请指教。
谢谢
【问题讨论】:
您要求的是 DRM 系统。这种东西是不存在的。
理由:
这就是 DRM 试图解决的问题。您所能做的就是尝试向最终用户隐藏事实。祝你好运……
(在上面的示例中,您可以将“Alice”替换为“服务器”,将“Bob”替换为“站点访问者”,将“Eve”替换为“想要下载文件而不付费的用户”。)
如果你接受你不能拥有 DRM 系统,还有更多的可能性:
请注意,您的示例文件必须与您销售的实际文件不同。这是解决用户在付费之前获取实际文件问题的唯一方法。
【讨论】:
你不能。
虽然您可以隐藏 URL,但您无法阻止人们免费下载歌曲。这不是 HTTP 的工作方式。如果您提供一个 URL,无论是否隐藏,它最终都必须响应要播放的数据。否则,JWPlayer 将无法播放数据。
由于 JWPlayer 被嵌入到网站中,它必须向一些提供数据的后端服务器发出请求。这些请求很容易被拦截,而且人们只需几天时间就能发现他们可以免费下载完整专辑。
因此,如果您想确保自己不会破坏商店,请提供低质量的 mp3(这可能会带来糟糕的聆听体验,并且不会说服人们购买)或提供歌曲的预览(就像几乎所有其他人一样)确实)。
【讨论】:
根据在 URL 中传递的一些随机字符串创建一个提供 MP3 文件的页面。每个随机字符串都存储在数据库表中,参考实际文件位置。一旦歌曲被听过一次,翻转数据库中的状态字段以防止再次使用该随机字符串。
您不必担心泄露文件的真实路径,因为即使用户查看源代码,他们也只会看到随机字符串。
此外,您应该对下载执行相同类型的操作。要求用户登录,而不是文件的直接路径,而是通过一个 php 页面传递它,这样文件的链接就不会“在那里”供任何人获取/使用。
【讨论】:
所以基本上,您想要实现的是为买家提供他即将购买的歌曲的“样本”。 听完样本后,他就可以购买完整的歌曲了。
在我看来,您可以在这里遵循 2 条路径:
将所有歌曲切成小样本,例如 1 分钟,然后让他们只听。 如果用户下载成功,就没有问题,因为他不会拥有完整的歌曲。您可以使用像FFMPEG 这样的 mp3 编码器/解码器在服务器端自动为您创建小样本。
由于 Flash 非常适合流式传输音频/视频,因此您可以使用按需流式传输机制,该机制还可以为用户提供歌曲的样本。这样,您只会将样本的字节发送给客户端,而不是完整的歌曲。这可以通过使用开源媒体服务器技术来实现,例如Red5
虽然选项 2 可能是最可靠的解决方案,但它也是最耗时且最难实现的解决方案。
许多在线音乐商店都在做同样的事情。它们只为您提供有限的预览。
以下是我所知道的一些:
干杯
【讨论】: