Javascript 如何使.MP3音频播放器,防止右键单击另存为目标。。。使用Jquery

Javascript 如何使.MP3音频播放器,防止右键单击另存为目标。。。使用Jquery,javascript,jquery,audio,hash,Javascript,Jquery,Audio,Hash,我一直在建立一个网站来销售我的乐器/音乐,并试图找到一种方法来创建一个简单的.MP3音频播放器按钮,防止用户右键单击“目标另存为…”。。。同时隐藏实际的.MP3文件链接。我还需要它一次只播放一个声音(防止声音重叠)。我发现,如果能听到,它很可能被下载 我发现的方法(在stackoverflow社区的帮助下)并不是100%完全可以防止用户查找和下载你的.mp3文件,但它会让它变得更加困难 步骤 (可选)第一步是将声音文件的名称转换为一些令人困惑的内容,如MD5哈希(这不是100%必需的,但会让它

我一直在建立一个网站来销售我的乐器/音乐,并试图找到一种方法来创建一个简单的.MP3音频播放器按钮,防止用户右键单击“目标另存为…”。。。同时隐藏实际的.MP3文件链接。我还需要它一次只播放一个声音(防止声音重叠)。我发现,如果能听到,它很可能被下载

我发现的方法(在stackoverflow社区的帮助下)并不是100%完全可以防止用户查找和下载你的.mp3文件,但它会让它变得更加困难

步骤

  • (可选)第一步是将声音文件的名称转换为一些令人困惑的内容,如MD5哈希(这不是100%必需的,但会让它变得有点棘手),例如,我将取值“control.mp3”和“smooth.mp3”,然后将它们转换为MD5哈希。(您也可以随意给它们命名,如12345abc等。)

    MD5散列形式的control.mp3=cef83b993c716dd543b6fa4f053cc4a4

    MD5散列格式的smooth.mp3=CBBE0AB9D89C68F24F4FADFFF907FA720

  • 现在我有了文件名的MD5哈希版本。我将把我的MP3文件重命名为相应的MD5哈希<代码>cef83b993c716dd543b6fa4f053cc4a4.mp3和CBBE0AB9D89C68F24F4F4FADF907FA720.mp3

  • 我现在可以开始编写代码了:
  • HTML:

    <p><span class="play" key="cef83b993c716dd543b6fa4f053cc4a4">Play</span></p>    
    <p><span class="play" key="cbbe0ab9d89c68f24f4fadff907fa720">Play</span></p>
    
    .play
    {
    color:green;    
    cursor:pointer;
    }
    
    .pause
    
    {
    color:red;  
    cursor:pointer;
    }
    
    $(".play").on('click',function(){
        var key = $(this).attr('key');     
        EvalSound(key);
        var this_play = $(this);
        $(".play").each(function() {
            if ($(this)[0] != this_play[0]) {
                $(this).removeClass("pause");
            }
        });
        $( this ).toggleClass( "pause" );
    });
    
    var thissound = new Audio();
    var currentKey;
    var interval;
    function EvalSound(key) {
    
        if(currentKey !== key)
            thissound.src = "http://99centbeats.com/beats/" + key + ".mp3";      
        currentKey = key;
    
        if (thissound.paused) {
            thissound.play();
            interval = setInterval(function() {
                if(thissound.currentTime == thissound.duration) {
                    clearInterval(interval);    
                    $('.play').removeClass("pause");
                }           
            },100);
        } else {
            thissound.pause();
            thissound.currentTime = 0;
            currentPlayer = thissound;
            clearInterval(interval);   
        }    
    }
    
    (我会这样做,当点击css更改时,您可以编辑它,使其具有背景图像按钮或任何您喜欢的内容,例如,这只是简单的颜色更改)

    JQuery:

    <p><span class="play" key="cef83b993c716dd543b6fa4f053cc4a4">Play</span></p>    
    <p><span class="play" key="cbbe0ab9d89c68f24f4fadff907fa720">Play</span></p>
    
    .play
    {
    color:green;    
    cursor:pointer;
    }
    
    .pause
    
    {
    color:red;  
    cursor:pointer;
    }
    
    $(".play").on('click',function(){
        var key = $(this).attr('key');     
        EvalSound(key);
        var this_play = $(this);
        $(".play").each(function() {
            if ($(this)[0] != this_play[0]) {
                $(this).removeClass("pause");
            }
        });
        $( this ).toggleClass( "pause" );
    });
    
    var thissound = new Audio();
    var currentKey;
    var interval;
    function EvalSound(key) {
    
        if(currentKey !== key)
            thissound.src = "http://99centbeats.com/beats/" + key + ".mp3";      
        currentKey = key;
    
        if (thissound.paused) {
            thissound.play();
            interval = setInterval(function() {
                if(thissound.currentTime == thissound.duration) {
                    clearInterval(interval);    
                    $('.play').removeClass("pause");
                }           
            },100);
        } else {
            thissound.pause();
            thissound.currentTime = 0;
            currentPlayer = thissound;
            clearInterval(interval);   
        }    
    }
    
    (您可以将其放在一个.js文件中,并将其命名为真正令人困惑的md5哈希,
    只需确保它位于HTML之后即可工作。)

    此方法并非100%完美,不会阻止所有用户下载您的.mp3文件,但它不会像右键单击“目标另存为”那样简单。如果你想靠卖音乐为生,你可能想用这个。事实上,似乎那些愿意付费的人,会不计代价地付费,而那些不付费下载的人也会不计代价地这么做,所以最终你不会真的停止太多,但这是我想要学习和实现的技术。我决定分享这个,因为我真的找不到任何地方可以做到这一点,你可能想做一些不同的事情,但这可能会给你一些想法。感谢那些帮助我编写代码的人

    一些stackoverflow/jsfiddle帖子有助于:


    你永远无法做到100%的证明,因为你需要提供数据,所以它总是可以被捕获。
    尽管这不是一个真正的问题,但看起来还是很模糊。

    你永远无法做到100%证明,因为你需要提供数据,所以它总是可以被捕获的。
    尽管这不是一个真正的问题,但看起来还是很模糊。

    你永远无法做到100%证明,因为你需要提供数据,所以它总是可以被捕获的。
    尽管这不是一个真正的问题,但看起来还是很模糊。

    你永远无法做到100%证明,因为你需要提供数据,所以它总是可以被捕获的。
    不过做得不错,看起来很模糊,虽然这不是一个真正的问题。

    把这首歌分成30秒或1分钟的片段,然后按顺序播放怎么样


    谷歌音乐就是这样做的。不会停止下载,但95%的用户会发现很难将它们合并到单个文件中

    把这首歌分成30秒或1分钟的片段,然后按顺序播放怎么样


    谷歌音乐就是这样做的。不会停止下载,但95%的用户会发现很难将它们合并到单个文件中

    把这首歌分成30秒或1分钟的片段,然后按顺序播放怎么样


    谷歌音乐就是这样做的。不会停止下载,但95%的用户会发现很难将它们合并到单个文件中

    把这首歌分成30秒或1分钟的片段,然后按顺序播放怎么样


    谷歌音乐就是这样做的。不会停止下载,但95%的用户会发现很难将它们合并到单个文件中

    这是个好主意!谷歌音乐实际上有助于激发这一想法。谢谢Maksym Kozlenko!这是个好主意!谷歌音乐实际上有助于激发这一想法。谢谢Maksym Kozlenko!这是个好主意!谷歌音乐实际上有助于激发这一想法。谢谢Maksym Kozlenko!这是个好主意!谷歌音乐实际上有助于激发这一想法。谢谢Maksym Kozlenko!这是真的,谢谢Bas Van Stein!这是真的,谢谢Bas Van Stein!这是真的,谢谢Bas Van Stein!这是真的,谢谢Bas Van Stein!