Проблемы с воспроизведением mp4 на apple на сайте django
Я создаю сайт на Django. Мои пользователи могут записывать видео, а затем другие могут видеть эти видео.
Запись осуществляется с помощью javascript:
const mimeType = 'video/mp4';
shouldStop = false;
const constraints = {
audio: {
echoCancellation: true,
noiseSuppression: true,
},
// audio: true,
video: {
width: 480,
height: 480,
facingMode: 'user',
},
};
const stream = await navigator.mediaDevices.getUserMedia(constraints);
const blob = new Blob(recordedChunks, {
type: mimeType
});
И отправлено в представление django:
let response = await fetch("/send-video/", {
method: "post",
body: blob,
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
"X-CSRFToken":csrftoken,
},
}).then( ... )
По моему мнению
if request.method == 'POST':
user = request.user
file_name = f"{user}.mp4"
if (len(sys.argv) >= 2 and sys.argv[1] == 'runserver'):
file_path = file_name
else:
file_path = f"{your_media_root}temp/{file_name}"
webm_bytes = bytes(request.body)
video_file = open(file_path, "wb")
video_file.write(webm_bytes)
if mimetypes.guess_type(file_path)[0].startswith('video/mp4'):
print(mimetypes.guess_type(file_path))
video_file.close()
else:
video_file.write(b"")
video_file.close()
Теперь я могу сохранить эти файлы в поле модели django. Я использую django-private-storage, чтобы убедиться, что только пользователи с правильной аутентификацией могут просматривать файлы. django-private-storage использует FileReponse для воспроизведения видео. и генерирует шаблон с:
<video controls="" autoplay="" name="media">
<source src="http://127.0.0.1:8000/play-job-video/" type="video/mp4">
</video>
Все работает нормально в любом браузере на android. Я могу записывать видео на Apple. Но я не могу воспроизвести ни одно видео на Apple. Я не уверен, связано ли это с iOS или Safari
Я не знаю, как изменить шаблон файлаResponse
Я пытался изменить кодеки mimeType, но безрезультатно.