Я ищу способ смотреть видео YouTube в терминале (не в браузере или другом окне, а прямо там, в любой сессии bash).
Есть ли простой способ сделать это?
Я представляю что-то вроде этого:
$ youtube <video-url>
Я уже знаю, как воспроизвести видео, используя mplayer
:
$ mplayer -vo caca local-file.avi
Тем не менее, это открывает новое окно. Было бы здорово сыграть это в терминале.
Кроме того, он должен быть совместим с tmux
сессиями.
Я задал еще один вопрос о том, как предотвратить открытие нового окна .
Для тех, кто интересуется, где мне нужна такая функциональность, я запустил экспериментальный проект под названием TmuxOS - с концепцией, что все должно выполняться внутри tmux
сеанса .
Так что, действительно, мне нужен видеоплеер для локального и удаленного видео. :-)
terminal
video
adobe-flash
Ионика Бизэу
источник
источник
mpv <youtube url>
. Это также работает для множества других видео сайтов. Но это открывает новое окно.Ответы:
Вы можете загружать видео и / или только аудио, а затем смотреть / слушать их, используя
youtube-dl
. Сценарий написан на Python и использует,ffmpeg
я верю.Для загрузки видео вы просто даете ему URL со страницы, на которой вы хотите видео, а скрипт делает все остальное:
Затем вы можете использовать
vlc
илиmplayer
смотреть их локально:Хорошо, но я хочу смотреть эти видео, так как они транслируются и в ASCII
Я нашел эту статью в блоге под названием: На ascii, youtube и leting go, которая демонстрирует метод, который я обсуждал в чате, в основном используя
youtube-dl
в качестве «бэкенда», который может выполнять загрузку потока YouTube и затем перенаправлять его в какое-то другое приложение.Эта статья показывает, что это делается с
mplayer
:Видео загружается на
youtube-dl
перенаправляется через STDOUT выше-o -
. Здесь есть демонстрация эффекта .С установкой дополнительных библиотек видео ASCII может быть улучшено.
Хорошо, но я хочу видео в моем фактическом терминале?
Я нашел этот трюк, который позволяет воспроизводить видео в статье
xterm
О'Рейли под названием « Смотреть видео в ASCII Art» .Вышеуказанное приводит к
xterm
открытию окна, в котором воспроизводится видео.Поэтому я подумала, почему бы не соединить арахисовое масло и шоколад так:
Это почти работает! Я не уверен, почему видео не может воспроизводиться в окне, но кажется, что оно должно быть в состоянии. Окно появляется и начинает играть, но затем закрывается. Я вижу видео в течение нескольких секунд, а затем ничего.
Возможно, вышеизложенное поможет вам приблизиться к вашему окончательному решению, или, возможно, вам просто нужно немного подправить варианты.
Дополнительные библиотеки
Если вы
libcaca
установили (раскрашенную версиюaalib
) и уменьшили размер шрифта в вашем файлеgnome-terminal
до чего-то очень маленького, например, скажем, 3, следующая команда отобразит видео ASCII намного лучше, прямо в терминале:терминалы
Казалось бы, выбор терминала может иметь большое значение в том,
mplayer
может ли он играть непосредственно внутри терминала или он открывает отдельное окно. Кэширование такжеmplayer
имело огромное значение для возможности играть непосредственно в терминалах.Используя эту команду, я смог воспроизвести
terminator
, по крайней мере, первую четверть видео, прежде чем оно было вырезано:Цветная версия использовала эту команду:
Эти же команды могут играть в
gnome-terminal
&xterm
тоже.Примечание: Это (слева направо)
xterm
,terminator
,gnome-terminal
иterminology
.источник
terminology
а не только с кака-либами. Вы можете использовать экранирование терминала, чтобы указать отображенную часть оконного окна и воспроизвести его прямо в высоком разрешении. Вы даже можете установить видео на свой фон и работать над ним.terminology
также понимает URI - получите веб-ссылку на ваше видео на YouTube и простоprintf
на экран, как в терминальной подсказке.tybg my.avi
делает это.printf
метод. Сделайте,tybg somefile | sed -n l
чтобы увидеть, как это работает - он просто использует расширенные выходы терминала. Они задокументированы наman
странице. Вы можете сделать то же самое сty{ls,cat}
. Но эти маленькие приложения - просто старые демонстрационные обертки реальной вещи и, возможно, не настолько способные. В любом случае, если ваша версия была создана за последние пару месяцев, вам может понравиться мини-просмотр так же, как и я, - нажмите Ctrl + Shift + H. Все просветление в значительной степени так же хорошо - вот почему я предложил вам попробовать это недавно. Это также безумно быстро.Итак, с терминологией (возможно, самой лучшей вещью, которая когда-либо случалась с эмулятором терминала) на момент написания этой статьи работает следующее:
terminology
Конкретный бит являетсяthen
блок вplay()
- поprintf \033}...
линии.terminology
принимает расширенные экранирование терминала для печати на экране - вроде быстрых цветов, но также видео высокого разрешения и в основном все, что вы хотите.Остальное немного
curl | sed
скрипта, который:ytplay 'https://www.youtube.com/watch?v=${id}'
и так далее...curl "$yturl" | grep url_encoded_fmt_stream_map
чтобы увидеть весь блок.grep
выше, вы найдете список в поле с"
разделителями-кавычками...stream_map: "
.%[[:hexdigit:]]\{2\}
кодировку на рабочие ссылки./tmp/vid.${mime-type}
но если онytplay
вызывается со вторым аргументом, он будет интерпретироваться как целевое имя файла загрузки - при этом добавляя расширение в соответствии с типом mime.terminology
«ы места СМИ в фоновом режиме в настоящее время терминала побега, иначе он просто отказывается и оставляет вас с сообщением об ошибке всех в кепках.\033}bt[LINK/FILE]\0
для полноэкранного воспроизведения.pn
выскочил бы в новое окно. Существуют и другие для геометрического ограничения игровой зоны - например, только для части окна.Это прошло лишь немного больше, чем очень минимальное тестирование, но до сих пор работало для каждой ссылки без сбоев, кроме одной - и потому что я на самом деле не был заинтересован в просмотре той, которая не играла, я не пытался выяснить, Почему.
Хотя он работал для всех из них, он не обязательно воспроизводил каждый - и это потому, что сначала я слепо добавил
.mp4
расширение к целевому файлу, не проверяя, было ли оно правильным. Вполне возможно, что тот, на кого я раньше не смотрел, был только этим. В любом случае, я изменил это, чтобы справиться с этим.Как я упоминал ранее, единственный
terminology
конкретный бит находится в самой последней функции -play()
и, таким образом, вы можете легко изменить это, чтобы делать что угодно с загружаемым / загружаемым видеофайлом - например, использовать его сmplayer
библиотеками CACA в другом терминале, или выскочить вvlc
окно или что-то еще. Но если вы любите себя, вы будете смотреть его в высоком разрешении вterminology
.О, и наконец, это обычно очень быстро - мои скорости максимизировали мою пропускную способность до сих пор при каждой попытке, но в
terminology
любом случае не требуется весь файл, чтобы начать его воспроизведение.Вот это работает:
источник
/tmp/vid.mp4
может быть, вы должны использоватьmktemp --suffix=.mp4
, нет?terminology
«sgstreamer
бэкенд не может случайно запустить исполняемый код в видеофайле ... Может быть. Я сомневаюсь в этом, но я не достаточно, чтобы сказать наверняка. В любом случае, я предпочитаю всегда писать поверх одного и того же файла, если я не скажу иначе, но если мне удастся сделать его лучше - например, выбор размера и тому подобное - я обязательно исправлю это тоже.terminology
у всех - те , которые собираютсяtmux
«s ,pty
потому чтоtmux
владеет мастер стороны лиц , выступающихpty
с иterminology
владеет мастер стороныtmux
» сpty
. Для того, чтобы справиться с этим вы можете сделать , как ...PTTY=$(tty) tmux ...
то вtmux
сессии , как ...tybg >"$PTTY"
. Я на самом деле только что ответил на ту же проблему, что у вас здесь только вчера. Сценарий, приведенный выше, должен работать какytplay ... >"$PTTY"
мультиплексор.Для этого на YouTube есть учебник:
https://www.youtube.com/watch?v=QCuq0_nY3Xk
Согласно этому видео должно работать следующее:
Вы можете создать простую функцию для этой цели:
источник
mplayer <(youtube-dl -o - "https://www.youtube.com/watch?v=QCuq0_nY3Xk")
mplayer
автоматически выбирает лучший выходной драйвер, и если у вас работает Xorg, он, вероятно, выберетxv
драйвер. Попробуйте добавить следующую опцию ,mplayer
чтобы выбрать драйвер консоли ASCII арт:-vo caca
.С https://github.com/mps-youtube/mps-youtube
источник