command line audio avec mpg123 – comment save la position dans l'audio et commencer à partir de cet endroit la prochaine fois?

Je pense utiliser mpg123 comme un lecteur de livre audio. Je ne trouve pas d'autres bons lecteurs de livres audio pour Linux, et je pense que mpg123 peut être ma meilleure option.

Mes livres audio sont organisés par directorys et les noms des pistes sont numérotés (par exemple, Track-01.mp3, Track-02.mp3, etc.).

Ce que je cherche est une façon de sauvegarder le dernier location joué (la piste et la position dans la piste) lorsque j'arrête d'écouter, puis de pouvoir commencer mpg123 à cet endroit dans le livre audio la prochaine fois que j'écoute.

Il serait idéal d'avoir cette info "dernier location" enregistrée dans un file text dans le directory. De cette façon, je pourrais commencer chaque livre audio au dernier endroit en utilisant le file text stocké dans le directory de ce livre audio.

Une fonctionnalité de signet similaire serait bien aussi. Ce serait presque la même mise en œuvre, semble-t-il. L'information "dernier location" pourrait être sauvegardée dans un file text nommé par exemple "last" et chaque signet pourrait être enregistré dans un file text nommé bookmark.N (où N incrémente simplement).

Une implémentation sortingviale est-elle possible, peut-être comme un simple script bash? Je ne suis pas un développeur.

Vous pouvez utiliser la sortie écran de mplayer pour produire un file de sortie contenant les time (ils sont émis à un taux d'environ 10 par seconde). Pour empêcher les files de sortie volumineux, ce script bascule entre 2 files journaux, avec un suffixe 0 ou 1. Ils sont alternativement supprimés ou écrits dans. Sauf erreur, il ne devrait y avoir qu'un seul journal après que mplaye a cessé de jouer ce son particulier.

Ce log restant est ensuite traité par l'extrait sed qui le réduit au dernier timestamp, qui est dans un format décimalisé secondes, et l'écrit dans un file, suffixe .last (et supprime le journal).

Voici le 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] 

Pour démarrer mplayer à la dernière position indiquée, exécutez la command suivante.

 mplayer -ss $(cat "$file".last) "$file" 

Thomas Orgis, développeur et mainteneur de mpg123, vient d'implémenter cette fonctionnalité dans mpg123 (sous la forme d'un script appelé 'conplay') à ma request.

Sa description est:

Ce petit wrapper exécute mpg123 sur un directory donné (main dans '.' Pour l'actuel), jouant tous les files * .mp [123] dans le mode de contrôle terminal. Le truc supplémentaire est qu'un file de list de lecture (conplay.m3u) est lu et mis à jour (créé) avec la position où vous avez laissé la lecture à (via la touche 'q'), pour revenir à l'invocation suivante.

Le nom est synonyme de PLAYback CONTIENT. Qu'as-tu pensé?;-)

Je pense que c'est génial! Il fait exactement ce que j'ai demandé dans ma question ci-dessus. Je l'ai utilisé toute la journée et cela fonctionne parfaitement. Je ne pourrais pas être plus heureux!

Vous pouvez l'get à partir de http://mpg123.org/snapshot

Merci Thomas!

Bien que je trouve l'parsingur de sortie mplayer de @ Peter.O assez sexy, puis-je vous suggérer d'essayer mpd , le démon du lecteur de musique? C'est un lecteur de musique très performant et un backend de playlist (sans frontal embedded); il mémorisera par défaut le dernier état de lecture (volume, piste, position de la piste , si la piste était en cours de lecture / pause, etc.), donc la lecture reprendra après le démarrage du démon, vraisemblablement au démarrage.

Il y a plusieurs consoles ainsi que des interfaces charts – le client de la console mpc est très simplist; ncmpcpp nous assez avancé, et gmpc est un bon client GTK2.

Bien qu'il soit plus volumineux que d'avoir un script simple, il vous aide avec des lists de lecture, des favoris, etc. tout en offrant une facilité d'utilisation et une variété de frontends.