LINUX.ORG.RU

Linuxway и mplayer


0

0

Можно ли из mplayer при просмотре как-то (хоткеем или иначе) дёрнуть в интересующий момент внешнюю программу с передачей ей просматриваемого фильма и позиции в нём. Например, чтобы организовать закладки с возможность потом мгновенного доступа к нужному фрагменту фильма. Или запоминать позицию в файле при выходе. И т.п.

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

>Уважаемый, я понимаю, но все-таки столило глянуть туда, в частности вот вам цитата с офсайта:

Можно узнать, где это? В документации, русской и английской, подстроки "get_time_pos" просто нет, в man'е - тоже. Гугль подстроку "MPlayer has several commands" просто не находит.

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

В общем, вывод этой метки я получил. Теперь никак не могу понять, как её выцепить. Конструкции, типа:

$ mplayer Znaki.2002.DUAL.DVDRip.XviD.AC3.-HQ-ViDEO.avi | grep ANS_TIME_POSITION | xargs echo

или

... | perl -ne 'print "Store position $_\n";'

не работают :-/

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

По ссылке оказался PHP:

	// Execute the command, save output to an array
	exec($exec, $arr);

	// If the file didn't even exist, mplayer will die, and so will me
	if(!file_exists($movie)) {
		fwrite(STDERR, "mplayer-resume: Couldn't find the filename $movie\n");
		die;
	}

	// Grep out the details we need from output
	$key_position = current(preg_grep('/^ANS_TIME_POSITION\b/', $arr));
	$key_filename = current(preg_grep('/^ANS_FILENAME\b/', $arr));

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

Так вот оно как замечательно!

Keyboard:

Map a key with ~/.mplayer/input.conf to run 'get_time_pos'

Sample entry:

g get_time_pos

When you want to save the position, hit 'g', and then 'q' to quit playback.

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

>Конструкции, типа: >$ mplayer Znaki.2002.DUAL.DVDRip.XviD.AC3.-HQ-ViDEO.avi | grep ANS_TIME_POSITION | xargs echo

А если он на stderr это выводит?

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

>А если он на stderr это выводит?

stdout. Если оставить последним только grep, то грепается всё отлично.

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

Ну значит это буферизация ввода/вывода.
Добавьте опцию -quiet, чтобы не было лишней информации, при выходе из mplayer'а xargs и отработает.

А вот повесить на одну кнопку две команды get_time_pos и quit похоже нельзя...

file=Znaki.2002.DUAL.DVDRip.XviD.AC3.-HQ-ViDEO.avi; i=0;
mplayer -quiet $file | while read A B; do
 if [[ $A == ANS_TIME_POSITION* ]] ; then
   echo "mplayer -ss ${A#ANS_TIME_POSITION=} $file" > mark.$i
   i=$(( i + 1 ))
 fi
done

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

> Гугль подстроку "MPlayer has several commands" просто не находит.

> Результаты 1 - 10 из примерно 34 700 для mplayer has several commands. (0,27 секунд)

У нас разный гугл...? :)

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

Можно обойти.
man mplayer
-slave (also see -input)
Switches on slave mode, in which MPlayer works as a backend for other programs. Instead of intercepting keyboard events, MPlayer will read commands separated by a newline (\n) from stdin.

Т.е. нужно отправлять mplayer команды. Можете сами попробовать набрать к примеру quit. Соответственно взять какую нибудь бесполезную команду (коя ничего плохого не делает), повесить её на кнопку q. При нажатии в stdout будет появляться ответ этой команды. Как только она у нас - останется послать get_time\nquit.

Естественно, нужна двунаправленная работа с процессом. На shell это возможно?

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

> | perl -ne 'print "Store position $_\n";'

не stdin, а stderr?

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

Ваша идея работает только в X-ах, при условии, что активно окно видеовывода mplayer'а. В консоли (framebuffer) или при воспроизведении аудио в X-ах, в режиме -slave, когда stdin mplayer'а занят другим приложением, он не получает события нажатия клавиш.

То есть, запускаем, допустим так:

( sleep 20 ; echo get_time_pos; echo quit ) | mplayer video.avi -quiet -slave

Если в X-ах, то при нажатии клавиши q, mplayer выходит, а если в консолии, то q жать бесполезно. Поэтому здесь придется в приложении, которое управляет mplayer, обрабатывать все клавиши и передавать в mplayer соответствующие команды. Наверное, проще поковырять исходники mplayer и сделать возможным несколько команд по одной клавише.

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

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

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