use o ffplay para reproduzir uma lista de arquivos de áudio

1

Existem muitos players de áudio e vídeo, mas eu gostaria de usar uma ferramenta para muitas propostas. Então eu gostaria de usar o ffplay como player de áudio e vídeo.

Para reproduzir um arquivo, o comando é assim.

ffplay path_to_audio_file.mp3

mas como reproduzir uma lista de arquivos de áudio ou uma lista de vídeos?

Eu tentei usar:

ffplay *.mp3

mas sem sucesso, isso me dá um erro assim:

Argument 'audiofileB.mp3' provided as input filename, but 'audiofileA.mp3' was already specified.

    
por Scantlight 09.04.2016 / 01:08

2 respostas

4

ffplay parece suportar apenas um único arquivo de entrada, portanto, será necessário usar o código para percorrer uma lista de arquivos de entrada (e, possivelmente, misturá-los); supondo que coreutils (por shuf ), talvez algo como:

find musicdir -type f -name "*.mp3" | shuf | while read f; do ffplay -autoexit -- "$f"; done

Isso, é claro, irá quebrar horrivelmente se houver espaços ou novas linhas nos nomes de arquivos.

(Meu tocador de música atual é bastante semelhante, find ~/music -type f -name "*.mp3" | mpg123 --shuffle -Z --list - )

    
por 09.04.2016 / 01:52
1

Encontrei este tópico enquanto escrevia uma GUI do FFplay no Lazarus / FPC. Ele já poderia jogar uma lista de arquivos perdidos e pular para o próximo arquivo / anterior, mas eu tive que matar o processo ffmpeg e criar um novo sempre. Eu estava tentando adicionar a capacidade de reproduzir uma lista inteira de arquivos. A solução mais simples que encontrei até o momento foi, naturalmente, usar -autoexit e criar um arquivo de lista de reprodução com este código Pascal:

begin
      AssignFile(tfOut, C_FNAME);
      try
        rewrite(tfOut);
        for i:= 0 to Fichiers.Items.Count - 1 do
        if Fichiers.Selected[i] then
        begin
          writeln(tfOut, 'file ' + #39 + conv(Fichiers.Items[i]) + #39)
        end;
        CloseFile(tfOut);
      except
        on E: EInOutError do
        ShowMessage ('File error')
      end;
  end;

Então, lendo assim:

'ffplay -f concat -safe 0 -i flist.txt -autoexit'

que é a mesma sintaxe que eu uso para concatenar arquivos com o FFMPeg.

Agora estou procurando uma maneira correta de adicionar um atraso se os arquivos forem arquivos de imagem…

    
por 23.04.2017 / 16:37