Как стать автором
Обновить

Комментарии 31

curl, make install… всё как мы любим. Стандартные заклинания.
Как минимум youtube-dl доступен в pypi (pip install youtube-dl) и в этом случае в скрипте одним popen станет меньше. Что, впрочем, не критично.
Ваш метод установки ffmpeg (или libav) имеет смысл, если в репах пакет собран с неподходящими флагами. Но, скорее всего, он собран подходяще. Тут я могу и ошибаться давненько я это делал.

Действительно, тоже пригорело.
2017 год на дворе, make install — стандартные заклинания.
Тогда уж опишите, чего не хватает в популярных дистрибах типа debian/rhel
Когда начинаешь стриминг тестировать, не знаешь сразу, что там вылезет. Бывает надо ассемблерную оптимизацию снять (yasm) или флаг добавить, если что-то пошло не так. Или последнюю ревизию собрать, потому что только в ней есть такая-то фича. Потому, только заклинания, только хардкор.

Ну, это не повод не использовать хотя бы checkinstall. :)

Извиняюсь, а checkinstall сделать религия не позволяет? Все таки ставить что-то в обход пакетного менеджера, или собрать свой пакет — две большие разницы, как говорят сами знаете где.
Это конечно хорошо, но тут убивается «фишка» ютуба — возможность в любой момент посмотреть предыдущий фрагмент.

Мифическая фишка какая-то. Я уже не помню когда в последний раз такое работало. Кажется, это было еще в флеш-версии проигрывателя.


Попытка перемотать тяжелое видео в HTML5-версии в одном случае из трех у меня заканчивается тем, что видео замедляется в два раза (при сохранении скорости воспроизведения звуковой дорожки). Попытка сделать то же самое в проигрывателе VLC приводит к вечной загрузке видео...

да, лично делал. И даже очень широкое видео резал на куки и отдавал на пачку проекторов. Но там был не web rtc и только по локалке с одним свичом. Менее кадра расхождение было. И транслятор и ресиверы — vlc
Вот столько пишут про этот замечательный во всех отношениях WebRTC… а что есть опенсорсного на эту тему?

А что тут не опенсорсного? А что вам показывает гугл по запросу "webrtc open source"?

Ну, например сам сервер, который 2k баксов стоит.

Это какой же? Мне, например первой ссылкой показывает какую-то куренту https://www.kurento.org не оно?

Обозначенный в посте, разумеется. Это вам ответ на вопрос «что тут не опенсорсного».

А, вы про Web Call Server. А второй вопрос будем считать риторическим.

На самом деле практически ничего. Полгода назад, когда серьезно интересовался WebRTC, были только несколько мануалов и репозиторий WebRTC Experiments, который устаревал сильно быстрее чем его обновляли.

Сейчас же разве что webtorrent добавился.
Значит ваше 'серьезно интересовало' это первые выдачи в Гугле. Для Медиа сервера есть Куренто, Ликод, Джитси или Янус. Для простых п2п разговоров есть SimpleWebRTC, с которым идёт ворох либо, которые можно использовать и в решениях повыше.

Usecase какой-то очень надуманный, либо я его не понял.
Почему участники "веб-конференции" не могут посмотреть ролик напрямую с ютюба?

Потому что он у них будет воспроизводиться с разной средней скоростью

Звучит не очень убедительно.
Можете придумать реальный пример, где бы это было реальной проблемой?

Я не могу придумать реального примера когда нескольким людям в разных местах нужно было бы вместе смотреть ролик на ютубе, обмениваясь комментариями :-)


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

Автор, а сравнивал решение с Nginx + rtmp-module?
Лучше, хуже, также?
Я на его базе делал чат, чтобы можно было совместно видео смотреть :))

Не совсем понятно, как их можно сравнивать, когда RTMP играется только флэшом, который уже всё. Корректнее было бы сравнить с HLS/DASH с выкрученными в минимум target duration, например.

rtmp-module умеет складывать hls

Да, RTMP сейчас используется в основном на серверной стороне (между серверами в CDN сетях).

На браузерах флэш, можно сказать, умер. В Android Chrome его нет, в Mac Safari выключен, в Edge выключен.

Играть Live-видео можно этим:

  • WebRTC
  • Media Source Extensions
  • HLS/DASH
  • Canvas rendering

Дракарис — это и есть «жги», команда на которую натренировали драконов, а не имя дракона. Да, очень важная информация в контексте этой статьи.
Пару недель назад делал похожую штуку для заказчика.
Было лень ковырять ffmpeg, потому схитрожопил. Есть такая штука, как electron(https://electron.atom.io/) — гибрид ноды и браузера.
В актуальных обозревателях есть такая вещь, как captureStream(https://developer.mozilla.org/ru/docs/Web/API/HTMLMediaElement/captureStream), который умеет брать стрим из audio/video тегов. Дальше относительно просто — через peer.js гоняем стрим клиентам, получаем штуку, умеющую стримить все форматы, поддерживаемые браузером.
Дальше берем все тот же youtube-dl(или аналоги) под ноду, тащим ссылку на стрим — готово.
Единственный минус — нужен актуальный браузер. Из плюсов — минимум кода, максимум эффективности.

P.S. Кстати говоря, captureStream умеет еще и снимать данные с канваса, что позволяет делать штуки вроде стрима WebGL игр.
У меня только один вопрос: А что со звуком (аудиопотоком)?

У youtube-dl есть параметр -g, --get-url отдающий url, который отлично можно скормить ffmpeg напрямую.


ffmpeg -i youtube-dl -g ... ...

Зря вы так, теперь копирасты знают, что так можно.
Уменя один вопрос: нахрена? Можно просто реализовать систему передачи videoid в реальном времени, и переключать видео в iframe!
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.