LINUX.ORG.RU

PCM Transport - просто аудиоплеер под линукс

 , ,


0

1

Привет всем!

Я сделал небольшой аудиоплеер под линукс для себя, минималистичный, локальный, с некоторыми ностальгическими фичами типа левел метра в духе моего старого панасоник кобры, дисплея как в старом CD плеере и т.п.

Основной формат flac реализован референсно, с качеством Bit-perfect, остальные через ffmpeg (мне не хочется делать много зависимостей). Поддерживается довольно много форматов:

*.flac
*.wav
*.wave
*.aif
*.aiff
*.ape
*.wv
*.bwf
*.au
*.snd
*.caf
*.tak
*.tta
*.mp3
*.m4a
*.aac
*.ogg
*.oga
*.opus
*.wma
*.asf
*.xwma
*.oma
*.aa3
*.at3
*.mpc
*.mp+
*.mpp

А также:

*.cue
*.m3u
*.m3u8

Что бы быть честным, признаю, что я использовал ИИ для помощи.

Мне было бы интересно услышать мнения и отзывы, а если это кому то понравится - это для меня самое приятное.

Плеер естественно открытый, GNU General Public License v3.0.

Для быстрого теста есть AppImage - в AppImage работает все кроме выставления приоритета реального времени (приоритет выставляется в собранной версии).

Нативная сборка работает лучше – на выходе файл 1мб размера, очень минималистичный )))

Надеюсь, что не нарушил правил данного форума )

Страница моего проекта

Сам я постоянный пользователь линукс уже лет 8, и фанат музыки )



Последнее исправление: hobbit (всего исправлений: 3)
Ответ на: комментарий от Mishahack

симулятор видеомагнитофона

Идея интересная кстати. Я часто думаю, что мне не хватает этих вот видео кассет из моей юности и моего старого видака )

Другое дело, что данный плеер изначально задумывался как плеер для качественного аудио воспроизведения, видео вообще не вписывается в концепт ))

andrey23512
() автор топика
Ответ на: комментарий от anonymous

Программеры разные бывают. Я, например, регулярно натыкаюсь на раздутые комбайны там, где хватило бы чего-то минималистичного, но работающего хорошо.

Как тут, кстати, не вспомнить Nero4Linux, в которой оставили ровно одну функцию: запись дисков. И работала она исключительно надёжно. Я по крайней мере сравнивал с тогдашней k3b, и сравнение было не в пользу последней, увы. А самое смешное, что Nero Burning ROM для Windows от тех же авторов и в тоже время уже была как раз страшенно раздутым комбайном.

hobbit ★★★★★
()

На всякий случай напоминаю, что п.27 офтопик-листа звучит как

Темы вида «Я спросил у LLM, и вот что она мне ответила».

Если автор пишет «я использовал ИИ для помощи» и прикладывает ссылку на гитхаб – это к п.27 отношения не имеет. Так что не надо писать репорты на эту тему.

А вот если кто-нибудь попробует эти исходники собрать (в README список зависимостей и инструкция по сборке есть), запустить и поделиться впечатлениями – это интересно.

hobbit ★★★★★
()
Ответ на: комментарий от andrey23512

Я тоже согласен, что видеоплееры – это тема отдельная. Особенно если интерфейс проигрывателя отсылает к чему-то классическому – видеопроигрыватель должен быть отдельным, с визуальным закосом либо под видеомагнитофон…

…либо под проигрыватель лазерных дисков! Технология эта, к сожалению, просуществовала недолго и даже с видеомагнитофонами не смогла толком конкурировать, до появления DVD. У нас в Рязани приборный завод выпускал такие. Не пошло. Так же, как и в целом по миру.

hobbit ★★★★★
()

а оно умеет в gapless playback?

UPD: всё, нашё на гитхабе:

Same-format gapless playback where possible

ad0c
()
Последнее исправление: ad0c (всего исправлений: 2)

Чего то не хватало в других плеерах? Неплохо было бы сделать плеер который играет музыку с рутрекеров*. Сам поддерживает актуальный каталог, сам качает что надо, если надо.

theurs ★★
()
Последнее исправление: theurs (всего исправлений: 1)
Ответ на: комментарий от hobbit

https://fastpic.org/view/127/2026/0709/_143bc745c7c4c6ca38ba3bcee7aaba41.png.html

бунта под всл2, собралось по инструкции, закинул плэйлист - играет, не сразу въехал, что лист плеера очищается сам если выбираешь «открыть» что-то еще

мда, уже конечно не к плееру относится а к davfs2, ну какое оно тормозное если ручками тыкать в песни

а вообще имеет место для жизни, устал от комбайнов, прям как в старом добром кассетнике, что закинул то играет

Morin ★★★★★
()
Последнее исправление: Morin (всего исправлений: 2)

Страница моего проекта: If you enjoy PCM Transport, you can buy the author a cup of coffee

Как-то не по-нашему. Я думаю, было бы больше сочувствующих, если бы «0,5 liter of vodka».

Zaruba
()
Ответ на: комментарий от pihter

Я всегда не любил , когда плей лист пухнет, если открываешь что то новое … как это проиходит в некоторых плеера (первый приходящий на ум vlc).

Мне нравится простая логика как в CD плеере - диск вставил - он играет - без хвостов.

andrey23512
() автор топика
Ответ на: комментарий от hobbit

Собрал на Gentoo без особых усилий.

mkdir build & cd build

cmake ..

make 

Что с ходу не хватает(мне): Сортировки по клику на заголовок, открытия из командной строки файлов разных типов, не только flac, открытие m3u(из командной строки в том числе), открытия каталогов(рекурсивно конечно), запоминание последнего открытого не помешало бы, чтобы продолжить слушать «вставленную прошлый раз кассету». Киллерфичей могла бы стать корректная работа с cue. Не комбайнов с корректной работой cue я не встречал.

А так - симпатичненько, как проигрыватель по папке\файлу, вполне может заменить для меня тот же strawberry. Для этого нужна хотя бы минимальная возможность, чтобы открыть из командной строки произвольный файл\каталог.

Это всё для ТС(автора) конечно пишу, просто на комментарий ответил, а не на пост.

Loki13 ★★★★★
()
Последнее исправление: Loki13 (всего исправлений: 5)
Ответ на: комментарий от Loki13

Loki13, спасибо за обратную связь!

запоминание последнего открытого не помешало бы

сейчас сделано запоминание последнего каталога от куда открывали, т.е. нажав открыть попадаем в последний каталог от куда открывали в последний раз. Сделать опционально запоминание последней «кассеты» тоже можно в дальнейшем - тут все понятно.

открытие m3u

сейчас должно все работать, кроме сетевых адресов. Пока плеер в принципе не играет сетевые адреса. Что то еще не работает при открытии m3u?

Киллерфичей могла бы стать корректная работа с cue"

скажите пожалуйста что именно сейчас у вас не работает при открытии cue?

По поводу командной строки, плеер все же про GTK интерфейс в первую очередь, но ваши мысли я услышал, спасибо.

andrey23512
() автор топика
Ответ на: комментарий от Loki13

Хотел еще добавить, что в m3u и cue часто указывают *.wav, в то время как файлы де факто лежат другие (flac, ape и т.п.), понятно что плеер спотыкается, если пытается открыть, но файла на диске нет.

Я не уверен, что пытаться подправлять / угадывать что имелось ввиду - в таком случае - это правильное решение. Все же логично что бы файлы указывались верно, а если указываются wav - то это осознанно.

Но зато сейчас есть «угадывание» расхождения в названиях файла в cue, если расширение файла в другом регистре , например файл на диске flac , а в cue FLAC, плеер не должен споткнуться.

andrey23512
() автор топика
Ответ на: комментарий от Loki13

открытия каталогов(рекурсивно конечно)

Тут есть вопрос надо ли… ? Так как, представим себе ситуацию, мы выбираем открыть каталоги рекурсивно, а там , как у меня, 19677 файлов .. Это будет тяжело. По сути это импорт библиотеки, а не просто открыть между делом пару файлов.

Это в некотором роде изменит идеологию плеера, превращая его в комбайн, в который мы загружаем библиотеку, то что мне обычно не нравится как раз. Я долго пользовался jriver, и этот подход - когда мы имеем дело с «библиотекой» меня всегда в нем отталкивал. Ну и закрытый код, платность и т.п. :)

andrey23512
() автор топика
Ответ на: комментарий от pihter

Ну тут два варианта: либо делать две разные команды «Open» и «Add», либо выносить это поведение в настройки.

Вариант с двумя разными командами мне кажется более интуитивно понятным.

hobbit ★★★★★
()
Ответ на: комментарий от andrey23512

Я скорее для случаев, когда хочется открыть каталог альбома, лежащий в каталоге исполнителя. Иногда он лежит на уровень глубже или даже в 2-3 каталогах. И именно каталог, сейчас надо зайти в каталог и выделить всё, а потом открыть.

А так можно было бы повесить на ФМ и по ПКМ на каталоге делать «Открыть в». Я часто скачал торрент с новым альбомом, нажал баблкликом, открылся ФМ, и вот хочется этот каталог(или хотя бы выделить все файлы и открыть список) удобно в сабже открыть после этого.

Loki13 ★★★★★
()
Ответ на: комментарий от andrey23512

Хотел еще добавить, что в m3u и cue часто указывают *.wav, в то время как файлы де факто лежат другие (flac, ape и т.п.), понятно что плеер спотыкается, если пытается открыть, но файла на диске нет.

Да, так и было. Файл - ape, а в cue был wav. Тогда тут без вопросов.

Loki13 ★★★★★
()
Ответ на: комментарий от andrey23512

сейчас должно все работать, кроме сетевых адресов. Пока плеер в принципе не играет сетевые адреса. Что то еще не работает при открытии m3u?

Да, мой тоже промах, у меня m3u был с http ссылками на радио. Оно конечно flac, но понятно, что это не к этому проигрывателю.

Хотя не, с m3u не так просто, вот такой m3u у меня не сработал, хотя все файлы лежат рядом с этим m3u

01 - Вступление.mp3
02 - Колхозный панк.mp3
03 - Плуги-вуги.mp3
04 - Патриот.mp3
05 - Наркоман.mp3
06 - Банка.mp3
07 - Попец.mp3
08 - Местные.mp3
09 - Утопленник.mp3
10 - Пасха.mp3

Дело было в том, что m3u файл был в кодировке Windows-1251. Не знаю насколько это по стандарту, но ситуация не редкая в старых альбомах. cue я тоже частенько встречал в этой кодировке и многие проигрыватели с ней глючили.

Loki13 ★★★★★
()
Последнее исправление: Loki13 (всего исправлений: 3)
Ответ на: комментарий от andrey23512

А что скажете насчет сортировки? А то совсем как-то рандомно идут треки.

https://s6.iimage.su/s/14/gQ37GKXxFuzcHNBAQMTs3Rnw9qHaSAfvRFU7GBz7j.png

Да, не рандомно, а по тому как отсортировал диалог открытия файлов, но сортировку всё же хотелось бы в заголовке.

Loki13 ★★★★★
()
Последнее исправление: Loki13 (всего исправлений: 3)
Ответ на: комментарий от Loki13

А что скажете насчет сортировки?

По идеи, чаще всего востребована случайная сортировка - это классический подход, еще со времен старых CD плееров.

Мне кажется, это можно повесить на кнопку Repeat (через чередование режимов), что бы не нагромождать интерфейс.

Идея делать сортировку по клику на title/artist/source - это мне кажется больше такой путь офисных таблиц, чем плеера :) Но тут просто нужно подумать, как лучше.

По поводу открытия сетевых адресов, интернет радио - я понимаю, что для многих это важно, и держу это в голове.

m3u файл был в кодировке Windows-1251

01 - Вступление.mp3 02 - Колхозный панк.mp3 03 - Плуги-вуги.mp3 04 - Патриот.mp3 05 - Наркоман.mp3 06 - Банка.mp3 07 - Попец.mp3 08 - Местные.mp3 09 - Утопленник.mp3 10 - Пасха.mp3

Да, это и правда определенная ситуация, которую я не продумал.

Было бы классно, если бы вы выложили куда нибудь, я бы скачал и изучил, просто у меня вроде нет такого примера под рукой. Или можно ссылку на торрент :)

Вариант с двумя разными командами мне кажется более интуитивно понятным.

Мне в принципе не очень нравится идея импорта папок. Это усложняет (в папках могут быть и файлы cue / m3u - и все для одного альбома, т.е. нужно отсекать дубли) логику, папок может быть очень много - тысячи (гипотетически делать ограничение что открываем не больше 10 папок тоже глупо) - но мало дает, на мой взгляд. Ну т.е. есть плееры которые заточены на работу с библиотеками, именно импортируем библиотеку, чаще всего там организация вся идет через мета теги, часто идет авто мониторинг изменений в библиотеке - в итоге жизнь превращается в обслуживание этой библиотеки, упорядочивание мета тегов (разница в одной букве в исполнителе приводит к 2 исполнителям) - все это мне не близко :)

andrey23512
() автор топика
Ответ на: комментарий от andrey23512

Было бы классно, если бы вы выложили куда нибудь, я бы скачал и изучил, просто у меня вроде нет такого примера под рукой. Или можно ссылку на торрент :)

Так можете взять любой m3u написать в него имя любого файла на русском и сохранить в кодировке Windows-1251. И положить в один каталог.

Ну т.е. есть плееры которые заточены на работу с библиотеками, именно импортируем библиотеку, чаще всего там организация вся идет через мета теги, часто идет авто мониторинг изменений в библиотеке - в итоге жизнь превращается в обслуживание этой библиотеки,

Я тут соглашусь. Но вот по-быстрому послушать скачанный альбом(или несколько альбомов даже, типа загрузил всю металлику и слушаешь пол дня), часто удобно именно открытием каталога, а на выбором вручную всех файлов в нём. Насчет дублей, тут да, есть нюанс. Возможно вариантом будет при открытии каталога m3u не открывать, а только аудио файлы.

Loki13 ★★★★★
()
Последнее исправление: Loki13 (всего исправлений: 1)

Очень странный проект. Возникает много замечаний в голове:

  • Высказывание «использовал ИИ для помощи» довольно много на себе вытягивает - лично для меня репозиторий выглядит как «целиком нагенерированный нейронкой», но я в детектива играть не собираюсь, это всё на твоей совести. Я в этом плане могу быть неправ и принимать отсутствие атомных коммитов или неконсистентность оформления кода как маркеры работы ллм вместо неопытности разработчика.

  • Выбор gtk+3 и C++17 очень странный. Почему не C и gtk+? Почему не C++ и gtkmm?

  • Закос UI под hifi интерфейс это хорошая идея, но тогда чего так некрасиво? Гуй мб наполовину хайфай, а другая половина - голые гэтэка виджеты. Расположение элементов напоминает винамп, но результат проигрывает в исполнении софтине, которой ~28 лет.

  • Добавил всякие басы итд в dsp, а банального эквалайзера не видно. А вот в винампе есть!

  • Хорошо бы иметь набор визуализаций на выбор - имхо, одна из самых интересных запчастей аудиоплеера для программирования. Если программируешь сам, офк. Да, в винампе их ассортимент.

  • Название неудачное, «PCM Transport» звучит как утилита, библиотека или плагин для DAW. Уверен в названии? В начале жизни проекта его легче всего сменить - вон с minetest ребята сколько лет яйца мяли, им оно после переименования долго аукается.

Bfgeshka ★★★★★
()
Ответ на: комментарий от Bfgeshka

вон с minetest ребята сколько лет яйца мяли, им оно после переименования долго аукается

Расскажите-ка чем оно им аукается. Я впервые слышу что переименование в Luanti понесло какие то последствия. А вот мне аукнулось. Так как luanti ( который сам хоть и можно поставить из репозитория дистрибутива) это теперь просто движок, саму игру надо докачивать отдельно с единственного их сервера. А он в России представьте себе не работает, заблокирован.

Mishahack
()
Последнее исправление: Mishahack (всего исправлений: 2)
Ответ на: комментарий от anonymous

А можно узнать время выполнения ls -R в данной директории?

Это не лучший пример, хотя ценю юмор :)

Обычно импорт в плеер такой библиотеки занимает минут 15 (так же мы получим огромный список файлов, многие артисты будут криво отображаться, дублироваться и т.п.), на сколько помню - это же не получение списка ls…

А если хочется просто получить список … то чем плохо просто нажать open (увидеть список) и в проводнике выбрать нужный альбом? (разницы по сути никакой)

andrey23512
() автор топика
Ответ на: комментарий от Mishahack

Расскажите-ка чем оно им аукается.

Нужно было перелопачивать вокруг всей инфраструктуры - переименовывать на форумах, в социалочках, в коде. Я узнал о новом имени на лоре/опеннете. Уверен в том, что все старожилы никуда не делись и продолжают учавствовать; но также в том, что ряд казуальных людей куда-то потерялся, не найдя старый проект.

Проблема не в том, что переименовали в Лунтика, а в том, что у них на это годы ушли. Я всегда считал, что minetest это нелепое название для относительно зрелого и популярного проекта. Почему оно так долго задержалось - неизвестно, но в таком деле нужно не тянуть.

Bfgeshka ★★★★★
()

Ещё одной важной вещи не хватает.

Для регистрации приложения в системе в качестве проигрывателя MPRIS (Media Player Remote Interfacing Specification) вам необходимо занять определенное имя на системной шине D-Bus и реализовать обязательные интерфейсы.

После этого виджеты рабочего стола (KDE, GNOME) и утилиты вроде playerctl автоматически распознают ваше приложение как плеер.

Без этого не работает управление мультимедиа кнопками клавиатуры и DE(в моем случае это noctalia shell) не могут увидеть что проигрыватель запущен.

Loki13 ★★★★★
()
Ответ на: комментарий от Loki13

Я в вашем проигрывателе для себя это(MPRIS + Multimedia keys) навайбкодил(Composer 2.5).

Branch: cursor/mpris-media-keys
Commit: 833a85b — Add MPRIS control and multimedia keyboard support.

Included (5 files):

CMakeLists.txt
include/pcmtp/mpris/MprisService.hpp (new)
src/mpris/MprisService.cpp (new)
include/pcmtp/gui/GtkPlayerWindow.hpp
src/gui/GtkPlayerWindow.cpp

Могу сделать PR.

Loki13 ★★★★★
()
Последнее исправление: Loki13 (всего исправлений: 1)
Ответ на: комментарий от Loki13

Спасибо! Делайте PR — посмотрю diff и протестирую интеграцию с текущей версией.

на счет обложек, имхо, приоритет должен быть примерно такой:

Cover.jpg cover.jpg Folder.jpg folder.jpg Front.jpg front.jpg

И расширения

jpg JPG jpeg JPEG png PNG tif TIF

andrey23512
() автор топика
Ответ на: комментарий от andrey23512

Добавлю доп имена в приоритет и расширения. И сделаю PR после этого, скорее всего уже завтра. Это мне ещё форк же надо на гитхабе для PR делать, я не очень часто это делаю, придется повозится. Но учитывая что проект мне понравился и я уже рассматриваю плеер как основной, то вероятно будут и другие PR от меня в будущем по мере использования.

Loki13 ★★★★★
()
Ответ на: комментарий от Wapieth

Так чтобы простых, где открыл каталог и оно играе, не так и много. Вот комбайнов, тех да, тех много. Ну либо полные обрезки по типу гномового(вроде там такой был) проигрывателя, где даже плейлиста толком нет.

Loki13 ★★★★★
()
Ответ на: комментарий от Loki13

Без этого не работает управление мультимедиа кнопками клавиатуры и DE(в моем случае это noctalia shell) не могут увидеть что проигрыватель запущен.

Вообще, можно глобальными клавишами сделать и всё будет. Но сделать мприс плагин будет лучше, да.

Bfgeshka ★★★★★
()
Ответ на: комментарий от Bfgeshka

Глобальными клавишами решится только пол задачи. Я наговновайбкодил себе уже полноценный MPRIS и даже отладил(там были нюансы, которые можно упустить). У меня в Noctalia shell теперь из сабжа и управляется и обложку показывает в виджете и управление полностью рабочее из виджета. Теперь осталось причесать и PR закинуть.

Loki13 ★★★★★
()
Ответ на: комментарий от andrey23512

https://github.com/andreyberestov/pcm-transport/pull/1

Нет конечно, не вмешивается. Только при переключении треков и само переключение.

Проигрывание меня полностью устраивает, туда не лезу.

Loki13 ★★★★★
()
Последнее исправление: Loki13 (всего исправлений: 1)
Ответ на: комментарий от Loki13

Спасибо. Там еще пара полировочных моментов и оптимизация )

p.s. текущую версию я проверил у себя на xfce, все работает! (конечно в xfce все урезано)

andrey23512
() автор топика
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария