【问题标题】:How to convert a blob file to a specific format?如何将 blob 文件转换为特定格式?
【发布时间】:2020-12-09 05:10:32
【问题描述】:

我正在使用 ReactJS 和 Django 框架构建一个 Web 应用程序。

在这个网络应用程序中,有一部分是我录制音频文件并将其发送到后端进行保存。

这是我发送的来自 ReactJS 的 blob 数据:

Blob {
size: 29535, 
type: "audio/wav; codecs=0"
}

这是我在后端使用的代码:

@api_view(['POST'])
@csrf_exempt
def AudioModel(request):
    try:
        audio = request.FILES.get('audio')
    except KeyError:
        return Response({'audio': ['no audio ?']}, status=HTTP_400_BAD_REQUEST)

    destination = open('audio_name.wav', 'wb')
    for chunk in audio.chunks():
        destination.write(chunk)
    destination.close()  # closing the file

    return Response("Done!", status=HTTP_200_OK) 

当我播放我保存的文件时,它会播放一些声音,但在播放完时会崩溃。

这个问题让我寻找有关我保存的文件的一些信息(扩展名,...)。

出于这个原因,我使用了fleep 库:

import fleep

with open("audio_name.wav", "rb") as file:
    info = fleep.get(file.read(128))

print(info.type)
print(info.extension)
print(info.mime)

输出:

['video']
['webm']
['video/webm']

但是要输出视频!

  • 我做错了吗?
  • 如何解决此问题?
  • 我可以使用什么来将我的文件保存为所需的格式吗?

感谢任何帮助。

编辑:

保存文件的前 128 个字节的输出:

b'\x1aE\xdf\xa3\x9fB\x86\x81\x01B\xf7\x81\x01B\xf2\x81\x04B\xf3\x81\x08B\x82\x84webmB\x87\x81\x04B\x85\x81\x02\x18S\x80g\x01\xff\xff\xff\xff\xff\xff\xff\x15I\xa9f\x99*\xd7\xb1\x83\x0fB@M\x80\x86ChromeWA\x86Chrome\x16T\xaek\xbf\xae\xbd\xd7\x81\x01s\xc5\x87\xbd\x8d\xc0\xd5\xc6\xaf\xd0\x83\x81\x02\x86\x86A_OPUSc\xa2\x93OpusHead\x01\x01\x00\x00\x80\xbb\x00\x00'

【问题讨论】:

  • 您能否提供更多关于您如何在 JS 中创建 blob 的详细信息?
  • @kerasbaz 我为此使用了react-voice-recorder
  • 我会仔细看看那里的反应库,看看你是否可以在输出/导出格式上设置任何参数。一个开始的地方是从等式中完全删除 django 并暂时只在 JS 中工作 - 使 react-voice-recorder 的输出可通过 JS 直接从网页下载并查看它是否正常播放(我怀疑它不会)。看起来那个库只是在调用 getUserMedia(),但我在任何地方都看不到任何流导出或转换,所以你会得到 getUserMedia API 给你的任何东西。
  • @kerasbaz 我会看看链接。

标签: python reactjs audio blob wav


【解决方案1】:

使用SciPy 从各种文件格式中读取数据和向其中写入数据。

用法示例:

【讨论】:

    【解决方案2】:

    看起来react-voice-recorder 内部使用了带有默认选项的MediaRecorder 对象。但在选项中可以设置正确的mimeType,例如audio/webm; codecs=opus

    【讨论】:

      猜你喜欢
      • 2021-01-28
      • 2022-01-08
      • 2021-02-04
      • 1970-01-01
      • 2018-08-26
      • 2021-09-25
      • 2021-07-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多