Думаю, многим знакома следующая ситуация. Вы запускаете свой любимый MPlayer, чтобы посмотреть какой-нибудь фильм, смотрите, но до конца досмотреть не успеваете, т. к. вам нужно куда-нибудь уходить. Вы закрываете MPlayer, выключаете компьютер и идете по своим делам. Вернувшись, вы решаете досмотреть фильм. Вот только где же вы остановились? Что делать? "Проматывать", пока не наткнетесь на тот момент, который не видели? Записывать время остановки на бумажке? Нет, это не наш метод... Когда я в очередной раз столкнулся с этой проблемой, то пошел на домашнюю страницу MPlayer, на которой нашел два скрипта для ее решения: mplayer-resume и MPlayer Tools. mplayer-resume у меня отказался запоминать позиции в файлах и к тому же подавлял весь вывод mplayer'a, что довольно неаккуратно с его стороны, так что я сразу же отказался от него, а MPlayer Tools показался мне слишком неудобным в использовании. Поэтому я решил изобрести собственный велосипед. В итоге на свет появился относительно небольшой скрипт, представленный ниже. Скрипт полностью сохраняет вывод MPlayer'a и может принимать все аргументы, которые принимает MPlayer. В том числе ему можно передавать одновременно несколько файлов для воспроизведения - каждый из них он воспроизведет с того места, на котором было остановлено воспроизведение в прошлый раз. Краткое описание можно прочитать в комментариях, располагающихся в начале самого скрипта. Удачи, надеюсь, скрипт окажется вам полезен и сэкономит хотя бы немного вашего времени и нервов. mplayer.ext: #!/bin/bash # mplayer.ext - скрипт-оболочка для mplayer. # Настройки --> # Файл, в котором будет храниться информация о недосмотренных файлах # Максимальное количесво файлов, информация о которых будет храниться в $resume_info_file cleanup() die() # Возвращает идентификатор видео по имени файла if [[ "$video_name" == "" ]] # Не обрабатываем файлы DVD, т. к. в них невозможно осуществлять воспроизведение echo -n "$video_name" # Если $2 == 0, то файл помечается как просмотренный # Устанавливаем разделитель слов равным n i=0 # Пропускаем неверно сформированные записи # Если это тот файл, который мы ищем # Если видео не досмотрели до конца # Заносим изменения в файл } # Получает строку времени, на котором было приостановлено воспроизведение файла. if [[ $pos_info == "" ]] # Видео со звуком if [[ $pos_info == "" ]] echo -n "$pos_info" get_resume_pos() # Устанавливаем разделитель слов равным n for resume_info in $( /dev/null if [[ ! -e "$resume_info_file" ]] # Изменяем агрументы, переданные mplayer'у так, чтобы выбранные видеофайлы if [[ ${option:0:1} != '-' ]] # Запускаем mplayer с измененными параметрами командной строки # Получаем все файлы, которые проигрывал mplayer --> for line in `seq `echo "$files_in_output" | wc --lines`` do i=$((num-1)) start_line=${files_lines[$i]} # Генерируем имя видео по имени файла # Если файл последний then end_line=$((`cat $tmp_file | wc --lines` + 1)) # Получаем строку со временем, на котором остановилось воспроизведение # Файл проигрался до конца # Видео (для аудио отматывать не надо) set_resume_pos "$video_name" "$video_resume_time" # Получаем строку со временем, на котором остановилось воспроизведение set_resume_pos "$video_name" 0 cleanup | |
| Категория: Интересные статьи | Просмотров: 487 | |
Главная » Запоминание позиции воспроизведения файла в MPlayer
Нет, это не наш метод...