4

По умолчанию mplayer отображает текущее местоположение в видео в секундах, что является менее чем бесполезным. Пример:

A:4086.2 V:4086.2 A-V:  0.000 ct:  0.039   0/  0 17%  2%  2.1% 3 0 
  ^--------^----- This is the current location in seconds.

Ну и что с того? Mplayer имеет ужасные настройки по умолчанию. Что еще нового? Но mplayer легко настраивается до мельчайших деталей, поэтому должен быть способ изменить эту строку и поместить туда любую информацию, которая вам нужна. Я просмотрел справочную страницу и не могу найти вариант, который это сделает. Идеальное поведение:

A:1:08:06.2 V:1:08:06.2 A-V:  0.000 ct:  0.039   0/  0 17%  2%  2.1% 3 0 
  ^-----------^----- This is the current location in hours:minutes:seconds.

Кто-нибудь нашел способ сделать это?

2 ответа2

3

Давайте посмотрим на исходный код mplayer, mplayer.c:

...
// Audio time
if (mpctx->sh_audio) {
    saddf(line, &pos, width, "A:%6.1f ", a_pos);
    if (!sh_video) {
        float len = demuxer_get_time_length(mpctx->demuxer);
        saddf(line, &pos, width, "(");
        sadd_hhmmssf(line, &pos, width, a_pos);
        saddf(line, &pos, width, ") of %.1f (", len);
        sadd_hhmmssf(line, &pos, width, len);
        saddf(line, &pos, width, ") ");
    }
}

// Video time
if (sh_video)
    saddf(line, &pos, width, "V:%6.1f ", sh_video->pts);

// A-V sync
if (mpctx->sh_audio && sh_video)
    saddf(line, &pos, width, "A-V:%7.3f ct:%7.3f ", a_v, corr);
...

Как видите, только if (mpctx->sh_audio) AND if (!sh_video) тогда как только для аудио вызовет sadd_hhmmssf() который выведет формат чч: мм: сс в стандартный вывод. Но mpctx->sh_audio && sh_video тогда как аудио + видео не будет.

Поэтому, если вы вызовете команду mplayer с опцией -novideo , она будет включать формат чч: мм: сс :

[xiaobai@xiaobai example]$ mplayer -novideo example.mkv
MPlayer SVN-r37391-5.1.1 (C) 2000-2015 MPlayer Team
...
Video: no video
Position: 58 %
A:  90.5 (01:30.4) of 145.4 (02:25.4)  0.0% 

[MPlayer-dev-eng] [PATCH] общее время для файлов только для аудио объяснил происхождение только аудио:

прикрепленный патч заставляет MPlayer отображать общее время в строке состояния только для аудио файлов. Я думаю, что это полезно только для аудио, так как

1) строка состояния все еще довольно мала

2) вы не можете просто активировать экранное меню, чтобы найти общее время

Из этого объяснения мы знаем, что OSD можно активировать для достижения той же цели. Так что теперь просто прочитайте man mplayer и найдите ключевое слово OSD:

      ...
      o
           Toggle OSD states: none / seek / seek + timer / seek + timer + total time.
      ...
      P
           Show progression bar, elapsed time and total duration on the OSD.
      ...
   -osdlevel <0-3> (MPlayer only)
          Specifies which mode the OSD should start in.
             0    subtitles only
             1    volume + seek (default)
             2    volume + seek + timer + percentage
             3    volume + seek + timer + percentage + total time
      ...

Это означает, что нажатие P переключит текущее время / общее время на лету или вызовет mplayer -osdlevel 3 file чтобы последовательно отобразить текущее время / общее время:

[ОБНОВИТЬ]

Имейте в виду, что есть 4 состояния, если вы постоянно нажимаете o:

  1. Текущее время
  2. текущее время / общее время (действует как -osdlevel 3)
  3. Экранное меню включено (пока нет времени, но нажмите P , чтобы разрешить)
  4. Экранное меню отключено (нажатие P ничего не сделает)

По неизвестной причине -novideo прежнему принимает ключ o и вводит только 2 состояния, т.е. включено OSD и отключает OSD. Ошибка возникает, если вы нажмете o, чтобы включить OSD, а затем нажмите P, и это покажет 00:00:00/ общее время.

0

Моим собственным решением было переключение на форк mplayer под названием mpv, который по умолчанию обрабатывает отображение времени терминала в реальном времени. Кажется, что серьезное развитие mplayer полностью зашло в тупик, поэтому mpv стал лучше во всех отношениях. Он стал моим основным медиаплеером.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .