LINUX.ORG.RU

Передать не только вывод, но и ввод

 , ,


2

2

Всем привет! Есть у меня простенький скрипт, чтобы смотреть видео с ютуба и других сайтов в консоли, выглядит он так:

  • #!/bin/bash
  • address="$1"
  • youtube-dl $address -o - | mplayer -

Проблема в том, что конвейер передает mplayer’у только вывод, ввод остается за youtube-dl, то есть я не могу ни паузу нажать, ни перемотать, могу только по ctrl-c выйти, и все. Вопрос: как можно сделать то же самое, но передав управление плееру? Думал как-то запустить youtube-dl в фоне, пробовал просто & в конец добавлять - не работает. Надеюсь на вашу помощь


Запустить youtube-dl в фоне с записью в файл (& в конце), подождать секунду, открыть этот файл mplayerом. Пауза и перемотка будут работать, но только в пределах скаченной области.

altwazar ★★★★
()
Ответ на: комментарий от Pups

я mps-youtube использую, примерно тоже самое. нет,не подходит - я этот скрипт использую с w3m и newsboat в том числе, плюс сайты помимо ютуба

d09
() автор топика
Ответ на: комментарий от altwazar

в принципе, кое-как получяется, но стоит перемотать слишком далеко, mplayer закрывается. буду в эту сторону думать пока

d09
() автор топика
#!/bin/bash
address="$1"
mkfifo myfancynamedpipe
mplayer - <myfancynamedpipe &
youtube-dl $address -o - >myfancynamedpipe

Вроде бы, у меня работает, как ты хочешь.

Bagrov ★★★★★
()
Ответ на: комментарий от aplay

дело происходит во фреймбуферной консоли, кроме mplayer и mpv я не знаю вариантов, mpv тормозит, mplayer нет

d09
() автор топика
Ответ на: комментарий от Pups

47 перловских и gtk’шных пакетов по зависимости,сейчас попробую, но хочется все таки с mplayer найти способ

d09
() автор топика
Ответ на: комментарий от Bagrov

попробовал, управление mplayer’у не передается, эффект аналогичен моему первоначальному варианту

d09
() автор топика
COOKIE_FILE=/var/tmp/youtube-dl-cookies.txt
mplayer -cookies -cookies-file $COOKIE_FILE $(youtube-dl -g --cookies $COOKIE_FILE $address)

С ютуб урлами работает (пауза, пермотка), остальное не проверял.

fulmar_lor
()
Ответ на: комментарий от fulmar_lor

проверил, да, с ютубом работает как мне надо, но с не-ютубовскими видео не работает

d09
() автор топика
Ответ на: комментарий от d09

не-ютубовские видео не открывает

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

Pups
()
Ответ на: комментарий от peregrine

пробовал настроить,да,но сильно не углублялся - есть mplayer, работающий без особых настроек

d09
() автор топика
Ответ на: комментарий от xaizek

тоже самое, mplayer’у управление не передается

d09
() автор топика
Ответ на: комментарий от teod0r

пости то,что нужно! управление передается, но перемотка нормально а/работает только на ютубе, плюс как только докачивается файл - видео прерывается, буду ковырятся в настройках youtube-dl, спасибо!

d09
() автор топика

попробуй так:

lnk=$(youtube-dl -g -f best "$1")
ffplay "$lnk"

но так качество лучше 720p не будет. зато перемотка и пауза работают как надо.

anonymous
()
Ответ на: комментарий от anonymous

спасибо. звук идет, картинка нет, man у ffplay огромный, ищу, как заставить его с fbdev работать

d09
() автор топика
Ответ на: комментарий от d09

он на SDL, поэтому должен, вроде, уметь.

а ты ведь можешь ссылку и mplayer’у передать, думаю он переварит, но это не точно.

anonymous
()
Ответ на: комментарий от anonymous

гугл говорит,не умеет.неважно, с mplayer получилось,если его вместо ffplay использовать,все как надо работает, ура!

d09
() автор топика
Ответ на: комментарий от anonymous

sdl2 умеет во фреймбуфер вообще-то. иначе как у меня работают dosbox, mednafen, dgen и еще несколько эмуляторов?

d09
() автор топика
Ответ на: комментарий от d09

слушай, не знаю, у меня с ютубом прокатывает, правда ffplay, mplayer’а у меня нет, ставить не хочу что-то.

ещё vlc умеет во фреймбуфер и он умеет открывать ютуб-ссылки, попробуй его, может заработает как надо.

anonymous
()
Ответ на: комментарий от anonymous

в том-то и дело, что с ютубом у меня тоже все равботает, не-ютубовские видео не работают. только способом из шапки

d09
() автор топика
Ответ на: комментарий от d09

не-ютубовские видео не работают

дело может быть в выбранном формате: best — это, насколько я помню, только для ютуба. почитай в доке по ydl, там ближе к концу есть про выбор формата. выведи список формато для своего не-ютуб-видео: youtube-dl -F <ссылка> и посмотри что там заместо best, что больше на него походит. надо чтобы видео+аудио были одним файлом. наверное.

если выбирать не best для ютуба, а что-то другое, то ydl выдаёт две ссылки — отдельно аудио и видео. в ffmpeg их через скрипт ещё можно скормить, а вот ffplay, например, не понимает два источника, ему только один подавай. я пытался сделать какой-нибудь dash-манифест или m3u, чтобы передать в ffplay одним источником оба потока, но ничего хорошего не получилось. там всё сложно и поисковики никаких толковых ответов не дают. хоть бери да ffplay патч. но я лучше просто скачаю или через браузер посмотрю :(

anonymous
()
Ответ на: комментарий от anonymous

я пробовал и без best, немного с –no-parts экспериментировал, пока безрезультатно, но спасибо за наводку

d09
() автор топика
Ответ на: комментарий от teod0r

в принципе да, интересно, но там тоже через пайп, а через пайп перемотка не работает. вот если бы был способ как-то сохранять из ydl какой-нибуь маняфест или m3u, в котором были бы ссылки на нормальные потоки, было бы круто, да.

anonymous
()
Ответ на: комментарий от anonymous

я знаю, он заметно тормозит по сравнению с mplayer

d09
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.