Bir blob dosyasını belirli bir biçime nasıl dönüştürebilirim?

Aug 19 2020

ReactJS ve Django çerçevesi ile bir web uygulaması oluşturuyorum.

Bu web uygulamasında, bir ses dosyasını kaydettiğim ve onu kaydetmek için arka uca gönderdiğim bir bölüm var.

ReactJS'den gönderdiğim blob verileri:

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

Ve bu, arka uçta kullandığım kod:

@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) 

Kaydettiğim dosyayı çaldığımda biraz ses çıkarıyor ama sona ulaştığında çöküyor.

Bu sorun kaydettiğim dosya (uzantı, ...) hakkında bazı bilgiler aramama neden oluyor.

Bu nedenle fleepkitaplığı kullandım :

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)

ÇIKTI:

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

Ama video çıktı alınıyor!

  • Yanlış bir şey mi yapıyorum?
  • Bu sorunu nasıl çözebilirim?
  • Dosyamı istediğim biçimde kaydetmek için kullanabileceğim herhangi bir şey var mı?

Herhangi bir yardım takdir edilmektedir.

DÜZENLE:

Kaydedilen dosyanın ilk 128 baytının çıktısı:

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'

Yanıtlar

Benny Aug 28 2020 at 16:19

Çeşitli dosya biçimlerinden veri okumak ve bunlara veri yazmak için SciPy'yi kullanın .

Kullanım örnekleri:

  • SciPy'den wavfile.write ile Python'da wav dosyası yazma
  • scipy.io.wavfile.write