• 请不要在回答技术问题时复制粘贴 AI 生成的内容
artleer0
V2EX  ›  程序员

请问下大家 前端怎么把调用 sdk 返回的媒体流转为声音播放出来。。

  •  
  •   artleer0 · Sep 19, 2020 · 2299 views
    This topic created in 2087 days ago, the information mentioned may be changed or developed.

    我对这方面完全的一无所知,最近一个需求是这个方面的,不知道如何下手,大家推荐我一些学习的网站也是非常感谢。

    11 replies    2020-09-20 14:00:25 +08:00
    vision1900
        1
    vision1900  
       Sep 19, 2020
    呃。。。html5 audio 标签?
    vision1900
        2
    vision1900  
       Sep 19, 2020
    src 设为 URL.createObjectURL(媒体返回数据)
    artleer0
        4
    artleer0  
    OP
       Sep 19, 2020
    @vision1900 请问下 这个媒体流的数据是什么类型的。。。
    vision1900
        5
    vision1900  
       Sep 19, 2020   ❤️ 1
    blob, 可以参考下这个 StackOverflow: https://stackoverflow.com/questions/36738026/play-a-binary-string-with-the-html-audio-tag
    关键点是 xhr 的 responseType 要设为 blob
    其实你想一下,文件无非是一堆 0 和 1,后端返给你一般也都是 raw data,也就是一堆 0 和 1 。把 responseType 设为 blob 其实就是告诉 JS 这是一堆原生数据,现在我想要以编程的方式处理它,也就是我想要它成为对象,在 JS 中这个对象由浏览器提供给我们叫做 blob 。至于如何由 二进制 变成 blob 你不用担心,浏览器都帮你处理好了。之后,只需要调用浏览器提供的 URL.createObjectURL, 参数是刚刚获取的 blob 对象,就能生成一个类似 URL 一样的字符串,把这个字符串丢给 audio 标签,它就能自己去播放。
    最简单的例子是: <audio src="http://example.com/test.mp3" />
    这个代码再简单不过了,其实 audio 标签背后帮我们做了很多东西,包括发出一个 http 请求从服务器获取数据,转化为可以使用的 blob 对象,然后开始播放
    由于 audio 的 src 属性只能是 字符串,所以当我们自己要完成这些步骤时,需要额外多一步:调用 URL.createObjectURL 方法,生成一个莫须有的 URL, 并把这个 URL 和 其中的媒体资源(blob)对应起来
    artleer0
        6
    artleer0  
    OP
       Sep 19, 2020
    @vision1900 非常感谢你!!!!!
    artleer0
        7
    artleer0  
    OP
       Sep 20, 2020
    @vision1900 你好~再问下 这种方式可以实现实时通话吗??
    Ariver
        8
    Ariver  
       Sep 20, 2020 via iPhone
    @artleer0 webrtc
    artleer0
        9
    artleer0  
    OP
       Sep 20, 2020
    @Ariver 你有使用过这个吗
    vision1900
        10
    vision1900  
       Sep 20, 2020
    @artleer0 应该是 WebRTC,RTC 就是 Real Time Communication,不过我没有任何经验. 之前听说过一个叫 PeerJS 的库,你可以参考下: https://github.com/peers/peerjs#media-calls
    artleer0
        11
    artleer0  
    OP
       Sep 20, 2020
    @vision1900 好的万分感谢
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1245 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 17:14 · PVG 01:14 · LAX 10:14 · JFK 13:14
    ♥ Do have faith in what you're doing.