Я создал веб-видеоплеер, используя Media Source Extension API.Я тестировал свой видеоплеер, используя локальные видео и аудио файлы на моем ПК.Все работает отлично, ожидайте, что видео продолжает буферизироваться.Я играю видео 4k 60fps, которое я скачал с YouTube.У моего ПК разрешение не 4к, но видео плавно воспроизводится через YouTube и VLC Media Player.Я просто удивлен, почему мои буферы видеоплеера с расширением Media Source даже через видео и аудио файлы не извлекаются по сети.Я предполагаю, что видео и аудио файлы, которые я использую, вызывают эту проблему.Поэтому я сначала объясню, как я создавал свои видео и аудио файлы:
Я загрузил видео с https://www.youtube.com/watch?v=KaCQ8SQ6ZHQ&t=3s с помощью 4K Video Downloader https://www.4kdownload.com/products/product-videodownloader.
Преобразование файла mkv
(для меня 4K Video Downloader позволяет загружать только видео 4k 60fps в формате mkv
для меня) в mp4
с использованием ffmpeg
в CMD
: ffmpeg -i test.mkv -codec copy test.mp4
.
Преобразование файла test.mp4
в мое предпочтительное разрешение 4K 3840x2160
из 3840x1632
с использованием ffmpeg
в CMD
: ffmpeg -i test.mp4 -s 3840x2160 -c:a copy test_changed.mp4
.( НЕ ТАК ВАЖНО )
Разделение видео и аудио от test_changed.mp4
до video.mp4
для видео и audio.mp4
для аудио с использованием MP4Box
in CMD
: видео - MP4Box -single 1 test_changed.mp4 -out video.mp4
и аудио - MP4Box -single 2 test_changed.mp4 -out audio.mp4
.
Разделение video.mp4
и audio.mp4
на 30 частей, каждая из которых содержит 5 секунд видео и аудио файла,Таким образом, я получаю (video_1.mp4
, audio_1.mp4
), (video_2.mp4
, audio_2.mp4
), (video_3.mp4
, audio_3.mp4
), ..... (video_29.mp4
, audio_29.mp4
),(video_30.mp4
audio_30.mp4
).Используя ffmpeg
и указав один за другим диапазон времени для каждой части в CMD
:
[Для части 1: ffmpeg -ss 00:00:00 -to 00:00:05 -i video.mp4 video_1.mp4
, ffmpeg -ss 00:00:00 -to 00:00:05 -i audio.mp4 audio_1.mp4
],
[Для части 2: ffmpeg -ss 00:00:05 -to 00:00:10 -i video.mp4 video_2.mp4
, ffmpeg -ss 00:00:05 -to 00:00:10 -i audio.mp4 audio_2.mp4
],
[Для части 3: ffmpeg -ss 00:00:10 -to 00:00:15 -i video.mp4 video_3.mp4
, ffmpeg -ss 00:00:10 -to 00:00:15 -i audio.mp4 audio_3.mp4
],
.....
[Для части29: ffmpeg -ss 00:02:20 -to 00:02:25 -i video.mp4 video_29.mp4
, ffmpeg -ss 00:02:20 -to 00:02:25 -i audio.mp4 audio_29.mp4
],
[Для части 30: ffmpeg -ss 00:02:25 -to 00:02:30 -i video.mp4 video_30.mp4
, ffmpeg -ss 00:02:25 -to 00:02:30 -i audio.mp4 audio_30.mp4
].
Фрагментация каждого видео и аудиочасти, использующие MP4Box
в CMD
(насколько я знаю, фрагментированные mp4
файлы - это только файлы, воспроизводимые через API расширения источника мультимедиа):
[Для части 1: MP4Box -dash 1000 -rap -frag-rap video_1.mp4
, MP4Box -dash 1000 -rap -frag-rap audio_1.mp4
],
[Для части 2: MP4Box -dash 1000 -rap -frag-rap video_2.mp4
, MP4Box -dash 1000 -rap -frag-rap audio_2.mp4
],
[Для части 3: MP4Box -dash 1000 -rap -frag-rap video_3.mp4
, MP4Box -dash 1000 -rap -frag-rap audio_3.mp4
],
.....
[Для части 29: MP4Box -dash 1000 -rap -frag-rap video_29.mp4
, MP4Box -dash 1000 -rap -frag-rap audio_29.mp4
],
[Для части 30: MP4Box -dash 1000 -rap -frag-rap video_30.mp4
, MP4Box -dash 1000 -rap -frag-rap audio_30.mp4
].
Я получаю фрагментированный файл для каждого файла, в котором находится "_dashinit", например, для части 1: video_1_dashinit.mp4
и audio_1_dashinit.mp4
.Это файлы, которые я воспроизводю через Media Source Extension API.
Поэтому я добавляю эти файлы в мой sourceBuffers
и воспроизводю его с video
.Я дал здесь файл test.zip
(https://drive.google.com/file/d/1tyPBTxgpS601Xs5VEWznYhWw9PwhMHsB/view?usp=sharing), содержащий тестовый образец.
Я использую эту команду в CMD
для запуска Chrome
и тестирования моего файла: chrome.exe --allow-file-access-from-files
Каждый может использовать этот тестовый пример и посмотреть, не буферизует ли видео и его. Пожалуйста, прокомментируйте все, что я делаю неправильно, или помогите мне создать более 5-секундные видео и аудио файлы для воспроизведения MSE
Спасибо