Да, вы можете сделать это, используя javascript, который позволяет микрофон и дает данные BLOB-объекта в виде *.wav,*.webm
et c форматировать, тогда вам нужно отправить ответ на django стороне, используя ajax я даю ссылку, позволяющую вам записывать аудио или видео и т. д. c
Сначала вы видите упоминание, затем еще один пример
, если вы используете p5 js, который будет возможен, и
let mic, fft;
let recorder, soundFile;
let can1
function setup() {
can1=createCanvas(400, 400);
noFill();
can1.parent('canvas-area');
mic = new p5.AudioIn();
mic.start();
fft = new p5.FFT();
fft.setInput(mic);
}
function draw() {
background(255,255,255);
let spectrum = fft.analyze();
beginShape();
for (i = 0; i < spectrum.length; i++) {
ellipse(200,200,100+spectrum[i],100+spectrum[i]);
}
endShape();
}
function mediaplay(){
getAudioContext().resume();
recorder = new p5.SoundRecorder();
recorder.setInput(mic);
soundFile = new p5.SoundFile();
recorder.record(soundFile);
}
function mediastop(){
recorder.stop();
AjaxRequest()
// saveSound(soundFile,'test.wav')
}
//do logic for send 1 half minute chunks or minute chucks
function AjaxRequest() {
var form = new FormData();
form.append("wavfile", soundFile.getBlob(), "file");
$.ajax({
url: "You url",
method: "POST",
data: form, //here passing the wav file
dataType: "json",
processData: false,
contentType:false,
success:function(data){
console.log(data.success)
},
});
}
@ django view.py
import FileSystemStoragefrom django.http
import JsonResponse,HttpResponsefrom django.views.decorators.csrf
import csrf_exemptimport osos.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
from django.core.files.storage import default_storageclass GetFile(View):
def get(self,request):
return JsonResponse(status=200,data={},safe=False)
# @csrf_exempt
def post(self,request):
wavfile=request.FILES['wavfile']
#logic of your wav file what you want to do
return JsonResponse(status=200,data={'success':'success'},safe=False)
Здесь я даю ссылку
- P5 js
- P5 Пример
- Сохранить аудио
Если вы удовлетворены моим ответом, дайте мне знать