Existem muitos players de áudio e vídeo, mas gostaria de usar uma ferramenta para muitos propósitos. Então, gostaria de usar ffplay
como reprodutor 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?
Tentei usar:
ffplay *.mp3
mas sem sucesso, aparece um erro como este:
Argument "audiofileB.mp3" provided as input filename, but "audiofileA.mp3" was already specified.
Resposta
ffplay
parece suportar apenas um único arquivo de entrada, então você precisará usar o código para percorrer uma lista de arquivos de entrada (e possivelmente para embaralhá-los ); assumindo totalmente coreutils
(para shuf
), talvez algo como:
find musicdir -type f -name "*.mp3" | shuf | while read f; do ffplay -autoexit -- "$f"; done
Isso, é claro, quebrará horrivelmente se houver espaços ou novas linhas nos nomes dos arquivos.
(Meu reprodutor de música atual é bastante semelhante, find ~/music -type f -name "*.mp3" | mpg123 --shuffle -Z --list -
)
Comentários
Resposta
Eu encontrei este tópico enquanto escrevia uma GUI FFplay no Lazarus / FPC. Ele já podia reproduzir uma lista de arquivos descartados e pular para o arquivo anterior / seguinte, mas tive que encerrar o processo ffmpeg e criar um novo a cada vez. Eu estava tentando adicionar a capacidade de reproduzir uma lista de arquivos inteira. A solução alternativa mais simples que encontrei até o momento foi, é claro, 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 desta forma:
"ffplay -f concat -safe 0 -i flist.txt -autoexit"
que é a mesma sintaxe que uso para concatenar arquivos com FFMPeg.
Agora estou procurando uma maneira adequada de adicionar um atraso se os arquivos forem arquivos de imagem…
-autoexit
sinalizador parece relevante para esse problema.-autoexit
resolveu esse problema. Agora eu tenho outro que pode ser resolvido usando-nodisp
… isso irá desativar a visualização da forma de onda e coisas semelhantes. Isso evitará a criação de uma nova janela e roubar o foco do aplicativo de trabalho atual (este era um comportamento muito irritante). gostaria de incluir esta opção em sua resposta, como uma opção possível para resolver o comportamento irritante.