Как преобразовать видео и аудио файл для плавного воспроизведения через Media Source Extension API? - PullRequest
0 голосов
/ 04 октября 2018

Я создал веб-видеоплеер, используя Media Source Extension API.Я тестировал свой видеоплеер, используя локальные видео и аудио файлы на моем ПК.Все работает отлично, ожидайте, что видео продолжает буферизироваться.Я играю видео 4k 60fps, которое я скачал с YouTube.У моего ПК разрешение не 4к, но видео плавно воспроизводится через YouTube и VLC Media Player.Я просто удивлен, почему мои буферы видеоплеера с расширением Media Source даже через видео и аудио файлы не извлекаются по сети.Я предполагаю, что видео и аудио файлы, которые я использую, вызывают эту проблему.Поэтому я сначала объясню, как я создавал свои видео и аудио файлы:

  1. Я загрузил видео с https://www.youtube.com/watch?v=KaCQ8SQ6ZHQ&t=3s с помощью 4K Video Downloader https://www.4kdownload.com/products/product-videodownloader.

  2. Преобразование файла mkv (для меня 4K Video Downloader позволяет загружать только видео 4k 60fps в формате mkv для меня) в mp4 с использованием ffmpeg в CMD: ffmpeg -i test.mkv -codec copy test.mp4.

  3. Преобразование файла test.mp4 в мое предпочтительное разрешение 4K 3840x2160 из 3840x1632 с использованием ffmpeg в CMD: ffmpeg -i test.mp4 -s 3840x2160 -c:a copy test_changed.mp4.( НЕ ТАК ВАЖНО )

  4. Разделение видео и аудио от 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.

  5. Разделение 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].

  6. Фрагментация каждого видео и аудиочасти, использующие 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].

  7. Я получаю фрагментированный файл для каждого файла, в котором находится "_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Спасибо

...