[Решено] mplayer в режиме slave, как узнать состояние?

Здравствуйте. Подскажите, ставлю mplayer в режим slave:

  mkfifo /tmp/fifofile
  mplayer -fs -fixed-vo -slave -input file=/tmp/fifofile

Загружаю песню:
echo "loadfile <какое-то видео> " > /tmp/fifofile

И как можно узнать из консоли играет ли клип или уже нет?
А не пробовал разные опции и команды типа прогрессбар, показ текущего и полного времени и др. - посмотреть можно здесь
Ошибки не исчезают с опытом - они просто умнеют
slavutich
mkfifo /tmp/fifofile
mplayer -fs -fixed-vo -slave -input file=/tmp/fifofile
После этого mplayer вывалит хелп с намеком указать url или файл для воспроизведения, т.е. для начала их надо как минимум указать. Не знаю, можно ли в mplayer'e иначе. В mpg123 - можно. :)

vasek
А не пробовал разные опции и команды
Такой вариант, как с mocp (например: mocp -i | grep State:), тоже не пройдет. Т.е. даже если просто попросить выдать имя файла:
echo get_file_name > /tmp/fifofile
имя файла возвратится в терминале с mplayer'ом.

slavutich
Короче хитрость в том, что выхлоп mplayer'а надо перенаправлять на стандартный поток, а уже оттуда интерпретировать каждую строку.
Вас интересуют строки:
Starting playback...
и
Exiting...

Вот недавно по мотивам давно нарытого в тырнетах карябал скрипт для pcmanfm, из которога понятна суть:
#!/bin/bash

do_log() {
 while true
 do
  read
  if [ -n "$REPLY" ]; then
	if [[ -n `echo "$REPLY" | grep "Exiting..."` ]]; then
	rm /tmp/mplist
	rm /tmp/mplayctl
	exit
	fi
	t=`echo "$REPLY" | grep Title: | sed s/\ Title:\ //`
	[ -n "$t" ] && title="$t"
	t=`echo "$REPLY" | grep Artist: | sed s/\ Artist:\ //`
	[ -n "$t" ] && artist="$t" && (notify-send "AMPlay" "$artist - $title")
  fi
 done
}

touch /tmp/mplist
mkfifo /tmp/mplayctl
	until [[ "$1" = "" ]]
        do
		echo "$1" >> /tmp/mplist
		shift
        done

mplayer -quiet -slave -input file=/tmp/mplayctl -af equalizer=-6:0:0:-3:-6:-9:-6:-3:0:0 -playlist /tmp/mplist &> /dev/stdout | do_log
Aivar
Такой вариант, как с mocp (например: mocp -i | grep State:), тоже не пройдет. Т.е. даже если просто попросить выдать имя файла:
Aivar, ты в этом большой спец, и я это никогда не использовал, просто подумал про эти опции: osd_show_progression и -osd-duration — это разве не оно ?
Start a file in slave mode, with -osd-duration > 1000. Send "osd_show_progress". The timer will stay put for osd_duration length, but progress bar will disappear after 1 second.
PS.....+ отсюда Наличие подчинённого режима позволяет Вам создавать простые приложения к MPlayer'у. Когда режим включён (опцией -slave), MPlayer читает со стандартного входа команды, разделяемые символом конца строки (\n). Команды документированы в файле slave.txt.
Ошибки не исчезают с опытом - они просто умнеют
vasek
ты в этом большой спец
Ни разу. Просто иногда использую.

vasek
osd_show_progression и -osd-duration — это разве не оно ?
osd_show_progression равнозначно хоткею "o" в неподчиненном режиме, а osd-duration - длительность показа этой информации, но ТС, на сколько я понял, нужен именно статус плеера?
slavutich, неплохо бы уточнить задачу. В любом случае инфа будет выведена в стандартный поток.

Кстати говоря:
Aivar
Не знаю, можно ли в mplayer'e иначе.
Отложившееся в памяти не всегда лежит на поверхности и часто всплывает только тогда, когда выключил комп и сменил тип деятельности. :)
mplayer в подчиненном режиме не будет завершать работу если запущен с параметром -idle
Aivar, может я и не прав, но указанные выше опции и другие (например, вывод текущего и полного времени) можно прописать в скрипт запуска с их периодическим вызовом на определенное время (период и время по желанию).
Ошибки не исчезают с опытом - они просто умнеют
Можно, но зачем? :) Вопрос звучал так:
slavutich
как можно узнать из консоли играет ли клип или уже нет?
Ведь проще определить играет клип или нет визуально - есть видео/звук или нет.
Я так понимаю, ТС для каких-то только ему известных целей надо интерпретировать выхлоп плеера и выполнять в связи с ними какие-то действия.
Передо мной как-то стала задача с воспроизведением rtmp-потоков: парсить вывод плеера на предмет опустошения кеша и как только это случается ставить плеер на паузу, ожидать заполнения кеша до 25%, затем снимать с паузы. Все это, разумеется, должно делаться автоматически. :)
Aivar, согласен, смотрел слишком узко - все зависит от цели.......
Ошибки не исчезают с опытом - они просто умнеют
Aivar, снова выручаешь))) Очень признателен тебе. Буду испытывать.
P.S.: Использую все это для вещания видео в торговом центре, обычным плейлистом не обойтись - требуется полная статистика что во сколько проиграло и как долго, и в определенное время должны запускаться дополнительные видео-вставачки. Ньюансов вообщем куча.
mkfifo /tmp/mf
mplayer -slave -idle -input file=/tmp/mf -quiet -aspect 16:9 -fixed-vo >> /tmp/out &

не вываливает хелп на указание урл или файла))
 
Зарегистрироваться или войдите чтобы оставить сообщение.