2015-11-13 1 views
0

Я использую youtube-dl для загрузки видео, которое я сохранил на YouTube. Это дает мне возможность загружать различные форматы, миниатюры и субтитры.Autogenerate HTML5 <video> теги от YouTube-DL

Есть ли способ я могу автоматически создать HTML5 <video> фрагмент из загруженных файлов?

Например, я хотел бы конечный результат будет .txt файл, содержащий:

<video poster="file-160.jpg" > <source src="file-135.mp4" type="video/mp4; codecs=mp4a.40.2, avc1.42001E"> <source src="file-43.webm" type="video/webm; codecs=vorbis, vp8.0"> ... <track kind="subtitles" src="file-160.en.srt"> </video>

На данный момент у меня есть список файлов, как:

  • файл-135 .mp4
  • файл-18.mp4
  • файл-134.mp4
  • файл-160.mp4
  • файл-43.webm
  • файл-5.flv
  • файл-36.3gp
  • файл-17.3gp
  • файл-160.jpg
  • file-160.en.srt

Я могу запустить Python/Ruby/bash над ними, чтобы сгенерировать <source src="...", но проблема в том, что я не знаю, какие кодеки у каждого из этих видеороликов, поэтому я не могу создать часть ; codecs=.

Использование avconv или ffmpeg Я могу получить кодеки, но не в подходящем формате для встраивания в HTML.

Я опасаюсь спросить «какой инструмент я должен использовать» - но есть ли способ получить avconv/ffmpeg/youtube-dl, чтобы выплевывать информацию о кодеке в формате, который я могу поместить в тег HTML5?

Или, есть ли способ получить YouTube-DL, чтобы выплевывать HTML5-совместимые файлы с известными кодеками?

ответ

2

Атрибут type начинается с типа MIME, который описывает формат контейнера. Вы можете легко найти MIME-тип для всех возможных форматов.

Каждый формат контейнера может поддерживать несколько аудио/видео кодеков. Параметр codecs атрибута type используется для определения того, способен ли клиент воспроизвести файл до, но он не является обязательным. Если он не указан, браузер загрузит и попытается декодировать видео.

Если вы хотите развлечься и сгенерировать идентификаторы кодека самостоятельно, вам нужно взглянуть на RFC6381, а в некоторых случаях - на ссылку кодека.

Для некоторых контейнеров форматов на YouTube, как webm это проще, так как это что-то вроде video/webm;codecs="vp8, vorbis" или video/webm;codecs="vp9, opus"

Для других, таких как ISO на основе форматов это более сложным, так как он может содержать параметры кодирования.Возможно, вы сможете получить некоторые из них, используя ffmpeg, отправив RTP для генерации SDP.

Пример для mp4 с H.264/AVC и AAC (адрес назначения может быть что угодно, как вы на самом деле не послать что-нибудь)

  • видео: ffmpeg -i input.mp4 -c:v copy -an -f rtp rtp://...
  • аудио: ffmpeg -i input.mp4 -c:a copy -vn -f rtp rtp://...
  • ищет profile-level-id в каждый выход.

Для AVC потока кодек будет avc1.profile-level-id, для AACmp4a.40.profile-level-id и т.д.

Также смотрите: html5 video tag codecs attribute

С youtube-dl вы можете использовать -F, --list-formats, чтобы получить все доступные форматы и -f, --format для загрузки только конкретные форматы.

 Смежные вопросы

  • Нет связанных вопросов^_^