如何将Blob文件转换为特定格式?

问题描述

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

在此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'

解决方法

使用SciPy从各种文件格式读取数据或将数据写入各种文件格式。

用法示例:

,

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...