Вопрос или проблема
Мне интересно, существует ли команда, которую я могу установить, чтобы воспроизвести аудиофайл из терминала, или я могу сделать это с помощью Python или какого-либо другого кода? Я просто хочу ввести команду, чтобы звук проигрывался до окончания, а затем вернуться к командной строке. Я не хочу графический интерфейс.
Да, вы можете сделать это с помощью многих инструментов командной строки, таких как mpg123
, aplay
, cvlc
и mplayer
, но я предлагаю использовать команду play
. Чтобы установить её:
sudo apt install sox
А для воспроизведения специальных форматов, таких как mp3
, нужно установить соответствующие библиотеки:
sudo apt install libsox-fmt-mp3
И чтобы использовать её:
play music.mp3
Если вы хотите использовать её с полным набором библиотек, вам нужно установить пакет libsox-fmt-all
:
sudo apt install libsox-fmt-all
Используйте Gstreamer, он должен быть предустановлен. Он есть в текущей версии Ubuntu Live Media.
gst-play-1.0 /usr/share/sounds/Yaru/stereo/system-ready.oga
Я сравнил это с несколькими другими ответами здесь: https://askubuntu.com/a/1511952/40581
Системы на базе Pipewire, такие как Kubuntu 24.04, могут использовать pw-play
, который уже установлен в базовой операционной системе.
Вы можете сделать то же самое с помощью другого инструмента под названием mpg123, чтобы установить его,
sudo apt install mpg123
а затем использовать его следующим образом,
mpg123 file.mp3
paplay оказался более подходящим вариантом для меня, так как он имел самый понятный и стабильный (не изменяется при перезагрузке) способ выбора звукового устройства. И он установлен по умолчанию.
Чтобы посмотреть доступные устройства, используйте
pactl list | grep Name
Я не уверен, что это всегда будет так, но обычно нужные вам устройства будут содержать слово “output” и не будут содержать слово “monitor” (которое является виртуальным устройством ввода, созданным на основе выходного устройства).
В моем случае, устройство, которое я использую, это мой HDMI экран, называется “alsa_output.pci-0000_00_03.0.hdmi-stereo”. Найдите то, которое вам нужно, и в результате у вас будет команда:
paplay --d="alsa_output.pci-0000_00_03.0.hdmi-stereo" filename.ogg
Вы можете использовать cvlc (консольный VLC):
для воспроизведения аудиофайла: cvlc file.wave
для воспроизведения аудиопотока: cvlc https://qurango.net/radio/tarateel
Вы также можете запланировать выполнение файла или аудиопотока в crontab с некоторыми настройками:
Используйте настройки среды pulseaudio:
env | grep -E 'XDG_RUNTIME_DIR|PULSE'
для добавления в crontab с помощью cvlc:
0 9 * * * XDG_RUNTIME_DIR=/run/user/1000 PULSE_SERVER=/run/user/1000/pulse/native DISPLAY=:0 cvlc https://qurango.net/radio/tarateel
или вы можете сохранить это в shell-файл и запланировать его в crontab:
Создайте shell-скрипт play-radio.sh
со следующим содержимым:
#!/bin/bash
export DISPLAY=:0
export XDG_RUNTIME_DIR=/run/user/1000
export PULSE_SERVER=/run/user/1000/pulse/native
cvlc https://qurango.net/radio/tarateel
и сделайте его исполняемым: chmod +x play_radio.sh
затем добавьте его в crontab:
0 9 * * * /path/to/play_radio.sh
.
Ответ или решение
Чтобы воспроизвести аудиофайл из терминала без применения графического интерфейса, существует множество командных инструментов и программных решений, которые могут быть использованы в различных системах Linux. Рассмотрим несколько из них, подходящих как для простых, так и для специальных случаев.
Использование sox
и команды play
Одним из наиболее универсальных инструментов является sox
, который предоставляет команду play
для проигрывания аудиофайлов. Вот шаги для использования этого инструмента:
-
Установка
sox
:sudo apt install sox
-
Установка поддержки форматов, например, MP3:
sudo apt install libsox-fmt-mp3
-
Команда воспроизведения:
play music.mp3
Если вам нужно поддерживать все возможные форматы файлов, установите пакет libsox-fmt-all
.
sudo apt install libsox-fmt-all
Использование GStreamer
GStreamer может быть уже предустановлен на современных дистрибутивах Ubuntu. Чтобы воспроизвести звук, выполните команду:
gst-play-1.0 /usr/share/sounds/Yaru/stereo/system-ready.oga
Использование pw-play
на системах PipeWire
Используйте pw-play
, если ваша система основана на PipeWire, например, Kubuntu 24.04:
pw-play filename.wav
Использование mpg123
для MP3 файлов
Для воспроизведения MP3-файлов используется mpg123
, который можно установить командой:
sudo apt install mpg123
И выполните:
mpg123 file.mp3
Использование paplay
в системах с PulseAudio
Команда paplay
обеспечивает стабильный выбор устройств воспроизведения. Чтобы узнать доступные устройства, выполните:
pactl list | grep Name
Затем можно воспроизвести файл с указанием устройств:
paplay --d="alsa_output.pci-0000_00_03.0.hdmi-stereo" filename.ogg
Использование VLC в режиме консоли (cvlc
)
VLC также предоставляет возможность воспроизведения аудиофайлов через командную строку:
- Для файла:
cvlc file.wave
- Для потокового вещания:
cvlc https://example.com/stream
Можно автоматизировать воспроизведение через cron, применив скрипт bash для установок окружения PulseAudio и его выполнения по расписанию.
Заключение
В зависимости от ваших нужд и конфигурации операционной системы, выбирайте инструменты с учётом поддерживаемых форматов и доступных библиотек. Надёжность, простота использования, совместимость с системой и поддержка требуемых форматов являются ключевыми факторами при выборе решения в командной строке для проигрывания аудио.