Как создать список воспроизведения m3u8 из URL-адреса видео mp4 (хранящегося в amazon S3) и сохранить фрагменты видео (файлы .ts) и файл .m3u8 обратно на другой файл S3? - PullRequest
1 голос
/ 19 мая 2019

Я создаю приложение, в котором пользователь может загружать видео, а другие могут смотреть его позже. Я стремлюсь к потоковой передаче видео HLS на стороне клиента, для которого формат видео должен быть .m3u8. Я использую модуль node fluent-FFmpeg для выполнения обработки, однако у меня есть большие сомнения в том, как обеспечить, чтобы все файлы .ts (chunks) также сохранялись обратно в корзину s3 вместе с файлом m3u8 после обработки ffmpeg файл mp4?

Поскольку команда ffmpeg принимает только местоположение файла m3u8? Как справиться с этим, когда я хочу, чтобы место ввода и вывода было S3?

Любая помощь будет принята с благодарностью.

Я следую за ответом на этот вопрос Ffmpeg создает m3u8 из mp4, размер видеофайла , который работает на моей локальной машине абсолютно нормально, как добиться того же для s3?

1 Ответ

2 голосов
/ 19 мая 2019

Выполните преобразование (mp4-in, m3u8-out), распознавая, что локальный снимок FS onComplete - это НЕ то, что вам нужно.

Вы не хотите, потому что .m3u8 на выходе имеет контейнерные ссылки (EXTINF: сегменты), используя LOCAL FS и относительные пути к каждому дочернему элементу .ts)

как это:

 #EXTINF:4.0
   ./segment_0.ts     <<  relative path from .m3u8 output

вам понадобится постпроцесс, который перемещает, пересылает все на удаленный:

  1. синхронизирует все локальные файлы .ts в / tmp с вашим CDN на S3

  2. сохраняет / отображает новый URI .ts-S3 для каждого файла .ts в старый локальный fsPath в / tmp

  3. обновляет вывод файла m3u8 свободно, чтобы ссылаться на копию CDN каждого сегмента .ts, содержащего CDN / URI, до .ts

#EXTINF:4.0
https://${s3Domain}/${s3Bucket}/180_250000/hls/segment_0.ts
#EXTINF:4.0
https://${s3Domain}/${s3Bucket}/180_250000/hls/segment_1.ts
#EXTINF:4.0
https://${s3Domain}/${s3Bucket}/180_250000/hls/segment_2.ts
#EXTINF:4.0
  1. синхронизирует обновленный .m3u8 с CDN

Когда все выполнено, все ссылки из локального снимка FS, когда завершается плавный процесс, изменяются, поэтому все они работают из нового облачного расположения.

Это обходной путь грубой силы

ИЛИ

вы используете службу типа «облачного фронта», которая делает грязную работу за вас.

...