Как создать действительный DASH для YouTube? - PullRequest
0 голосов
/ 24 сентября 2019

Я пытаюсь внедрить загрузку живого видео с YouTube через DASH, как описано в: https://developers.google.com/youtube/v3/live/guides/encoding-with-dash

Для начала я запускаю API YouTube вручную и запускаю ffmpeg, чтобы проверить необходимые параметры видео перед реализацией в моем приложении.

Создан новый прямой эфир с liveStreams.insert и этими значениями для поля cdn:

"cdn": {
    "frameRate": "variable",
    "ingestionType": "dash",
    "resolution": "variable"
}

Создана трансляция с помощью liveBroadcasts.insert, затем используется liveBroadcasts.bind для привязкипоток в эфир.

Затем я взял ingestionInfo из потока и запустил эту команду ffmpeg, скопировав в ingestionAddress с streamName:

ffmpeg -stream_loop -1 -re -i mov_bbb.mp4 \
    -loglevel warning \
    -r 30 \
    -g 60 \
    -keyint_min 60 \
    -force_key_frames "expr:eq(mod(n,60),0)" \
    -quality realtime \
    -map v:0 \
    -c:v libx264 \
    -b:v:0 800k \
    -map a:0 \
    -c:a aac \
    -b:a 128k \
    -strict -2 \
    -f dash \
    -streaming 1 \
    -seg_duration 2 \
    -use_timeline 0 \
    -use_template 1 \
    -window_size 5 \
    -extra_window_size 10 \
    -index_correction 1 \
    -adaptation_sets "id=0,streams=v id=1,streams=a" \
    -dash_segment_type mp4 \
    -method PUT \
    -http_persistent 1 \
    -init_seg_name "dash_upload?cid=${streamName}&copy=0&file=init$RepresentationID$.mp4" \
    -media_seg_name "dash_upload?cid=${streamName}&copy=0&file=media$RepresentationID$$Number$.mp4" \
    'https://a.upload.youtube.com/dash_upload?cid=${streamName}&copy=0&file=dash.mpd'

Появляетсявсе обновления плейлиста и видеофрагменты нормально загружаются на YouTube - ffmpeg не сообщает об ошибках.Однако в статусе liveStream всегда отображается noData, а на YouTube Control Control Room не отображается поток как принимающий данные.

Вывод DASH при записи в файлы прекрасно воспроизводится в тестовый игрок .Вывод списка воспроизведения не соответствует в точности сэмплам, но содержит необходимые теги в соответствии с разделом «Содержимое MPD» в документации.

Неправильны ли мои аргументы ffmpeg или у YouTube есть дополнительные требования к формату списка воспроизведения, которыене задокументировано?

...