áudio da linha de comando com mpg123 - como salvar a posição no áudio e começar a partir dessa localização na próxima vez?

4

Estou pensando em usar o mpg123 como um player de audiobook. Não consigo encontrar nenhum outro bom audiobook para Linux, e acho que o mpg123 pode ser minha melhor opção.

Meus audiolivros são organizados por diretórios e os nomes das faixas são numerados (por exemplo, Track-01.mp3, Track-02.mp3, etc.).

O que estou procurando é uma maneira de salvar o último local tocado (a faixa e a posição dentro da faixa) quando eu parar de ouvir e, em seguida, ser capaz de iniciar o mpg123 naquele local do audiolivro da próxima vez que eu escutar.

Seria ideal ter essas informações de "último local" salvas em um arquivo de texto no diretório. Dessa forma, eu poderia iniciar cada audiobook no último local usando o arquivo de texto armazenado no diretório desse audiobook.

Um recurso de favoritos semelhante seria bom também. Seria quase a mesma implementação, parece. As informações de "último local" podem ser salvas em um arquivo de texto chamado, por exemplo, "último" e cada marcador poderia ser salvo em um arquivo de texto chamado bookmark.N (onde N simplesmente incrementa).

Uma implementação trivial é possível, talvez como um simples script bash? Eu não sou um desenvolvedor.

    
por MountainX 21.04.2012 / 21:42

3 respostas

1

Thomas Orgis, um desenvolvedor e mantenedor do mpg123, acabou de implementar essa funcionalidade no mpg123 (como um script chamado 'conplay') a meu pedido.

Sua descrição é:

This little wrapper runs mpg123 on a given directory (hand in '.' for the current one), playing all *.mp[123] files therein in terminal control mode. The extra trick is that a playlist file (conplay.m3u) is read and updated (created) with the position you left playback at (via 'q' key), to return on next invokation.

The name stands for CONtinued PLAYback. What did you think?;-)

Eu acho que é brilhante! Faz exatamente o que eu pedi na minha pergunta acima. Eu tenho usado o dia todo e funciona perfeitamente. Eu não poderia estar mais feliz!

Você pode obtê-lo no link

Obrigado Thomas!

    
por 24.04.2012 / 06:21
2

Você pode utilizar a saída de tela de mplayer para produzir um arquivo de saída contendo os tempos (eles são enviados a uma taxa de aproximadamente 10 por segundo). Para evitar arquivos de saída grandes , esse script alterna entre dois arquivos de log, com sufixos de 0 ou 1. Eles são excluídos ou gravados de forma alternativa para. Bloqueio de uma falha, deve existir apenas um log após o mplaye parar de reproduzir esse áudio em particular.

Esse log restante é processado pelo fragmento sed , que o reduz apenas para o último registro de data e hora, que está em um formato de segundos decimais, e grava em um arquivo com sufixo .last (e remove o log).

Aqui está o script

file=~/test.mp3
mplayer "$file" 2>&1 |tee <( 
  awk -v"RS=\r" -v"recs=500" -v"file=$file" '
  { prev = extn
    para = int(NR/recs)
    extn = para%2
    print $2 > file"."extn
    if( prev!=extn ) {close(file"."prev)
        system("rm -f " "\""file"."prev"\"") }}')

# On exiting mplayer, create the  '.last' file           
sed -n '/^[.0-9]\+/p' "$file".[01] |
sed -n '$p' > "$file".last
rm -f "$file".[01]

Para iniciar mplayer na posição indicada última , execute o seguinte comando.

mplayer -ss $(cat "$file".last) "$file"
    
por 22.04.2012 / 02:07
0

Embora eu ache o parser de saída do mplayer do @Peter.O bastante sexy, sugiro que você tente mpd , o tocador de música daemon? É um player de música muito capaz e um backend de playlist (sem interface embutida); por padrão, lembrará do último estado de reprodução (volume, faixa, posição de faixa, se a faixa estava sendo reproduzida / pausada, etc), portanto a reprodução será retomada assim que o daemon iniciar, presumivelmente durante a inicialização .

Existem vários front-ends de console e GUI - o cliente do console mpc é muito simplista; ncmpcpp bastante avançado e gmpc é um bom cliente baseado em GTK2.

Embora seja mais volumoso do que ter um script simples, ele ajuda você com listas de reprodução, favoritos, etc., enquanto ainda oferece facilidade de uso e uma variedade de front-ends.

    
por 23.04.2012 / 13:46