Вопрос или проблема
Я ищу терминальный музыкальный плеер. mpg321/mpg123
вполне меня устраивает, но он не может проигрывать всю мою музыкальную директорию (которая содержит вложенные директории). cmus
кажется немного избыточным, так как в нем много функций, которые я никогда не использую.
Мне просто нужна программа, в которую я могу передать свою музыкальную директорию и, возможно, флаг --random
, и тогда она будет проигрывать всё в случайном порядке. Может кто-нибудь подсказать, какие варианты у меня есть?
Вы легко можете обернуть скрипт, используя find и rl (пакет randomize-lines на Debian).
Что-то вроде:
find "$1" -type f -name *.mp3 | rl | while read FILE; do mpg123 "$FILE"; done
Я использую gst123 как командный плеер. Укажите его на родительскую директорию, и он будет перемешивать файлы в ней и в дочерних директориях с флагом -z. Я запускаю его так.
gst123 -z ~/Music
Есть moc – Музыка в консоли. Это проще, чем mpd, но поставляется с встроенным интерфейсом ncurses. Вы можете использовать TUI на ncurses с mocp или напрямую обращаться к серверу.
Конечно, он не может делать все те классные вещи, которые может делать mpd, такие как сетевой стриминг, одновременный вывод на разные устройства и т. д. Но как простой консольный плеер на локальной машине он довольно полезен. Он работает без первоначальной конфигурации, в отличие от mpd. Сервер запускается автоматически, когда вызывается mocp без параметров, или его можно запустить вручную.
запустите сервер
mocp -S
скажите серверу добавить (-a) музыкальную папку в плейлист
и включить перемешивание (-o shuffle)
и начать воспроизведение (-p)
mocp -o shuffle -p -a ~/mymusicfolder
У меня 9.2 ГБ flac-файлов, и ему нужно всего 6 секунд, чтобы загрузить их с диска SATA 1.
С моего SSD SATA 2 это мгновенно.
Мой вывод – alsa. (Не нужно было настраивать)
Вы можете попробовать MPD, он состоит из серверной части и отдельного интерфейса (который может, но не обязательно должен работать на той же машине). Существуют несколько отличных клиентов командной строки для него (см. http://mpd.wikia.com/wiki/Clients)
Я просто использую mplayer. Я сгенерировал список файлов из своих музыкальных папок, и mplayer может взять этот файл в качестве плейлиста и воспроизвести его в случайном порядке.
Я потратил некоторое время, экспериментируя с различными минималистичными музыкальными плеерами, и сегодня особенно склоняюсь к относительно недавнему xmms2, потомку (в некотором роде) доброго старого музыкального плеера xmms.
Это надежное клиент-серверное приложение, designed to run full-featured from the command line or from multiple graphical clients, play practically any music encoding available, manage music collections while taking up as little processor time as possible.
С помощью этого скрипта ваша музыкальная библиотека будет воспроизводиться случайным образом, без повторения каких-либо песен, пока все они не будут проиграны.
История проигранных песен записывается в файл *. Sh.his
. Эта история автоматически сбрасывается, если вы добавляете песню в музыкальную библиотеку или уже прослушали все песни из вашей библиотеки, создавая новый случайный список каждый раз. Когда угодно вы можете сбросить историю, удалив файл *. Sh.his
.
#!/bin/bash
#-----------------------------------INFO----------------------------------------------------------
#С помощью этого скрипта ваша музыкальная библиотека будет воспроизводиться случайным образом, без повторения каких-либо песен, пока все они не будут проиграны.
#История проигранных песен записывается в файл "*. Sh.his".
#Эта история автоматически сбрасывается, если вы добавляете песню в музыкальную библиотеку или уже прослушали все песни из вашей библиотеки,
#создавая новый случайный список каждый раз. Когда угодно вы можете сбросить историю, удалив файл "*. Sh.his".
#Нажмите "q", чтобы пропустить песню
#Нажмите "p", чтобы паузировать песню и возобновить её
#------------------------------CONFIGURATION------------------------------------------------------
#Пакет mplayer необходим (Для debian/Ubuntu/Mint: "$ apt-get install mplayer")
#Выберите путь к вашей музыкальной библиотеке (все вложенные папки будут включены в поиск файлов .mp3):
path="/media/Datos/Música/Music/"
#-------------------------------------------------------------------------------------------------
while true
do
cadena=$(find "$path" -iname '*.mp3') #поиск медиафайлов
nmedia=$(echo "$cadena" | wc -l)
if [ -f "$0.his" ] #файл существует
then
value=$(<"$0.his") #Читаем файл
if [[ ( $(echo "$value" | sed -n 1p) != $nmedia ) || ( $(echo "$value" | sed -n 2p) == 0 ) ]] #условия сброса файла
then
listrand=$(seq 1 $nmedia | shuf)
index=$nmedia
else #без условий сброса файла
nmedia=$(echo "$value" | sed -n 1p)
index=$(echo "$value" | sed -n 2p)
listrand=$(echo "$value" | sed -n 3p)
listrand=$(echo "$listrand" | sed s/" "/\\n/g)
fi
else #файл не существует
listrand=$(seq 1 $nmedia | shuf)
index=$nmedia
fi
nrand=$(echo "$listrand" | sed -n "$index"p) #выбор случайного числа
cadena=$(echo "$cadena" | sed -n "$nrand"p) #выбор песни с случайным номером
index=$((index-1)) #запись файла
echo $nmedia > "$0.his"
echo $index >> "$0.his"
echo $listrand >> "$0.his"
mplayer "$cadena" #воспроизведение медиафайла
done
exit 0
Следуя идеи @Daniele-Santi, следующий код перемешивает ваши mp3-файлы и добавляет их в плейлист audacious. Полезно.
find . -name \*.mp3 | sort -R | while read FILE; do audacious -e "$FILE"; done
Ответ или решение
Минималистичный терминальный музыкальный плеер для случайного воспроизведения всех ваших файлов
Если вы ищете простой и минималистичный терминальный музыкальный плеер, который позволит воспроизводить все ваши музыкальные файлы в случайном порядке, у вас есть несколько отличных вариантов. Ниже представлены наиболее подходящие решения, которые удовлетворят ваши требования.
1. Использование gst123
gst123 — это простой и удобный командный плеер, который поддерживает воспроизведение музыки из каталогов и их подкаталогов. С помощью флага -z
он сможет случайным образом воспроизводить все аудиофайлы. Вот пример команды:
gst123 -z ~/Music
2. moc (Music On Console)
moc — еще один хороший выбор для терминального воспроизведения музыки. Это простой, но мощный инструмент, который работает без необходимости предварительной настройки. Чтобы запустить сервер, используйте:
mocp -S
Затем добавьте папку с музыкой в плейлист и включите случайное воспроизведение:
mocp -o shuffle -p -a ~/mymusicfolder
3. Скрипт на Bash с использованием find и mplayer
Если вы настои с создание собственного простого решения, можно написать скрипт на Bash, который будет использовать команду find
для поиска всех ваших MP3 файлов и воспроизводить их в случайном порядке через mplayer
. Вот пример такого скрипта:
#!/bin/bash
# Укажите путь к вашей музыкальной папке
path="/media/Datos/Música/Music/"
while true
do
files=( $(find "$path" -iname '*.mp3') )
random_file=${files[$RANDOM % ${#files[@]}]}
mplayer "$random_file"
done
Этот скрипт будет бесконечно воспроизводить случайные файлы вашей музыкальной библиотеки.
4. Для Audacious
Еще один интересный вариант — использовать Audacious с командами терминала для добавления музыки в плейлист:
find . -name *.mp3 | sort -R | while read FILE; do audacious -e "$FILE"; done
Этот метод позволяет вам использовать уже спроектированный графический плеер, если вы когда-либо захотите переключиться на более расширенные функции, такие как визуализаторы и плейлисты.
Заключение
Каждый из предложенных вариантов имеет свои особенности и преимущества. Выбор между ними зависит от ваших предпочтений и потребностей. Если вы ищете простоту, gst123
и moc
— отличные варианты. Для более кастомизированного подхода подойдёт использование скрипта на Bash. Не забывайте, что все решения позволяют вам наслаждаться вашей музыкальной коллекцией в случайном порядке, что является важным требованием.