mpv - это медиаплеер, который можно использовать в интерактивном режиме из командной строки.Это запускает его в терминале:
mpv path/to/playlist_file.m3u --no-audio-display
Я могу затем нажать >
, чтобы перейти к следующему треку и использовать другие интерактивные команды .
Я могу контролироватьон использует screen
следующим образом:
# start a screen session called "my_player"
screen -d -m -S my_player mpv path/to/playlist_file.m3u --no-audio-display
# next track
screen -S my_player -p 0 -X stuff ">"
# prev track
screen -S my_player -p 0 -X stuff "<"
# "end of text character" = control + c = terminate
screen -S my_player -p 0 -X stuff $'\003'
Но что здесь делает команда stuff
экрана?Я бы предположил, что «отправка ввода в стандартный вход», но echo ">" | mpv path/to/playlist_file.m3u
не вызывает его запуска и сразу пропускает трек.
man screen
говорит:
Материалстрока строки во входном буфере текущего окна.Это похоже на команду «вставить», но с гораздо меньшими накладными расходами.Вы не можете вставлять большие буферы с помощью команды "stuff".Это наиболее полезно для привязки клавиш.См. Также «bindkey».
Под «входным буфером» подразумевается стандартный ввод или что-то еще?
(спрашиваю, потому что хочууправлять этой программой из Elixir через Port
, которая использует стандартный ввод и вывод, но пока мой ввод игнорируется.)