当前位置: 首页 > 知识库问答 >
问题:

播放存储为blob的MP3文件

丁慈
2023-03-14

简单地说,我想在Firefox中播放一个blob MP3文件。

我可以访问blob本身:blob(用mime类型audio/mpeg3切片),以及它的URL:blobURL=window。网址。createObjectURL(blob)

我试过:

>

<audio controls="controls">
    <source src="[blobURL]" type="audio/mp3">
</audio>

但我在Firebug中得到一个警告,告诉我Firefox无法读取audio/mpeg3类型的文件。

多个音频播放器库(SoundManager、JPlayer等),但似乎都不允许blob URL作为输入。

我做错了吗?或者有人知道可以从Blob播放MP3文件的变通方法或库吗?

共有3个答案

卢健
2023-03-14

在React中播放上传的MP3时遇到了类似的挑战。能够根据先前提供的XHR解决方案使其工作,但随后将其调整为与React REF一起工作:

import {useState, useRef, useEffect} from 'react'

function FileUploadPage(){
  const [selectedFile, setSelectedFile] = useState();
  const [isFilePicked, setIsFilePicked] = useState(false);
  const myRef = useRef(null)

  const changeHandler = (event) => {
    setSelectedFile(event.target.files[0]);
    setIsFilePicked(true);
  };

  const playAudio = () => {
    myRef.current.src = window.URL.createObjectURL(selectedFile)
    myRef.current.play()
  }

  return(
    <div>
      <input type="file" name="file" onChange={changeHandler} />
        {isFilePicked ? (
          <div>
                <p>Filename: {selectedFile.name}</p>
                <p>Filetype: {selectedFile.type}</p>
                <p>Size in bytes: {selectedFile.size}</p>
                <p>
                    lastModifiedDate:{' '}
                    {selectedFile.lastModifiedDate.toLocaleDateString()}
                </p>
                <div>
                <button onClick={playAudio}>
                    <span>Play Audio</span>
                </button>
                <audio ref={myRef} id="audio-element" src="" type="audio/mp3" />
            </div>
            </div>
        ) : (
            <p>Select a file to show details</p>
        )}
    </div>
)

}

笪健
2023-03-14

我意识到这个问题已经得到了回答,我的发现是针对不同的浏览器(Chrome),但我想我会把这个留在这里,以防将来有人遇到与我相同的问题。我在通过音频播放器播放blob文件时遇到问题,但发现删除源标记可以解决问题。所以这是行不通的:

<audio controls="controls">
    <source src="[blobURL]" type="audio/mp3">
</audio>

但这很管用:

<audio controls="controls" src="[blobURL]" type="audio/mp3" />

我不知道为什么一个能工作,另一个不能,但事实就是如此。希望这对其他人有用。

裴意
2023-03-14

虽然我使用audio/mpeg作为MIME类型,但这对我来说似乎很好:

$scope.player = new window.Audio();

var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        $scope.player.src = window.URL.createObjectURL(this.response);
        $scope.player.play();
    }
};
xhr.open('GET', url);
xhr.responseType = 'blob';
xhr.send();
 类似资料:
  • 当我使用MediaPlayer播放mp3文件时,系统会报告错误日志:。但是RealPlayer是正常的。 我发现它的错误只发生在更高的ROM版本。像4.0版本一样,它有错误。在2.3版中,它没有这个错误。 代码: 日志猫错误:

  • 我遵循了本教程:http://what-when-how.com/javafx-2/playing-audio-using-the-media-classes-javafx-2-part-1/ 我有相应的资源文件夹在相应的目录中。类文件,但我仍然不能播放音频。mp3文件与教程中的不同,但我也有一个. wav等效文件,发现JavaFX可以开箱播放*. wav文件,但不能播放mp3文件。怎么回事啊?

  • 标记为“good”的文件可以正确播放,而标记为“bad”的文件则不能。两个文件在同一个目录中;两个文件都使用音乐播放器播放;并且这两个文件都可以在Windows7机器上使用Python3.4和pygame。

  • 我正试图从Dropbox下载一些音频文件供用户下次在没有互联网的情况下使用,因此代码实际上下载了该文件,但我在播放该音频时遇到了问题,我不知道是否需要解析下载的文件或其他什么,希望您能提供帮助 下载文件并播放它类,它在执行后播放它,或者至少它尝试 我在日志上发现了这个错误 问题是试图播放下载的文件,即使尝试播放它与Android本地播放器它说"该播放器不支持这种类型的音频文件",所以我不知道我是否

  • 我正在创建一个带有背景音乐的应用程序。我试着在课堂上演奏那首音乐: 我试过了: 当我把它放在我的文件的根目录中并使用它时: 我得到这个错误:javax.sound.sampled。不受支持的AudioFileException:无法从输入URL获取音频输入流更新我尝试使用JavaFX: 但是我得到了错误: 此行中的错误:MediaPlayer Player=new MediaPlayer(媒体);

  • 我想在我的SiteGround托管的站点上放一个mp3播放器,它允许我通过传递第三方mp3 url作为参数来播放文件。我需要播放/暂停/时间线/音量控制。 所以我尝试了这个,但不起作用: 页面将加载播放机,但不播放。