Перейти к содержанию

Final Audio - Эмоции в каждом прослушивании

sale50feb.webp

komplekti_dec122024.webp

sale50feb.webp

friends_club.webp

sale50feb.webp

aurian_jan23.jpg

Рекомендуемые сообщения

web600x750.zip "портретный" вариант.

2017_07_03_140146.png

 

"ландшафтный" вариант, теперь и на классике что-то видно.

2017_07_02_212510.png

 

Сейчас слушаю Motorhead - рассинхронизации нет, может у браузеров от большого количества альбомов в плейлисте крышу срывало? UP. Пока писал, вернулся на страницу плейера - ползунок в конце застрял. Открыл Драгошу (он был закрыт), ввёл адрес, подключился - тоже самое, ползунок в конце, время идёт за концом трека. Через некоторое время (в обоих браузерах) ползунок отмораживается и переходит на следующий трек с накопленным рассинхроном.

Изменено пользователем AleXH

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@IgorA, Доброго дня. Как ваш плеер linux соотносится с oss4? Будет он работать? И что делать с /etc/asound.conf? Удалять?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@grigoxyr, поддержка OSS в linux плеере будет позже. Доступная консольная версия выводит только через ALSA. В OSS asound.conf не используется, поэтому можно его не трогать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Игорь, (запрос) в web API добавить команды:

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

2. возврата полного пути выбранного трека.

Изменено пользователем AleXH

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@AleXH, вот вариант для тестирования переходов и с добавленными командами.

1. Добавление в плейлист: команда Get_Playlist вместо GetPlaylist.

2. возврат полного пути выбранного трека: GetPath?album=индекс_альбома&song=индекс_трека

 

Пример функции, выдающей окошко с путем выбранного трека:

function GetPath()
{
 $.getJSON('?GetPath&album='+CurrentAlbum+'&song='+CurrentSong, ParsePath);
}
function ParsePath(data)
{
alert(data.Path);
}

ap2web_x32.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@IgorA, постоянное обновление убирать? За доработку спасибо, info по треку проверил, работает :yes: С Get_Playlist пока не вкурил как прикрутить, буду думать.

Изменено пользователем AleXH

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@AleXH, да, постоянное обновление не требуется.

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

Проверить можно, просто поменяв в актуальном скрипте GetPlaylist на Get_Playlist. Но плейлист после этого будет только увеличиваться.

ap2web2_x32.zip

Поделиться сообщением


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

Это я понял сразу по красноречивому названию функции ) пока не понял как реализовать совместное проживание обоих вариантов.

 

 

Не формируется список дисков по нажатию bPlus, по bOpen всё ок. Что и как сделано:

 

функции GetPlaylist (Get_Playlist) вызываются взависимости от переданного аргумента, смотря какая кнопка её вызывала - bOpen или bPlus, а налогично с 2-мя функциями GetPlaylists и Get_Playlists. Правки минимальные, позиционирование строк в скрипте должно практически совпадать

Изменено пользователем AleXH

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@AleXH, просто нужен еще переключатель режима или альтернативный вызов панели папок или альтернативный выход из нее, что позволит различить операции полного обновления плейлиста и добавления в него и вызывать соответственно GetPlaylis или Get_Playlist.

Если делать для ПК, можно повторить вариант с удержанием клавиши Shift для добавления вместо замены при завершении выбора папки.

Тогда надо поменять два вызова onselectPlaylist (в скрипте и в html разметке) на onselectPlaylist(event), а в функции написать:


function onselectPlaylist(e)
{
...
if(e.shiftKey)
 $.getJSON('?Get_Playlist&playlist=' + PlaylistIndex, ParseAlbums);
else
 $.getJSON('?GetPlaylist&playlist=' + PlaylistIndex, ParseAlbums);
...
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дело не в этом - если просто заменить по скрипту (3 замены) GetPlaylist на Get_Playlist, то нажатие на bOpen не выводит список дисков. Или я чего-то пока не понял... Я использовал такое решение:

FlagNewPlaylist ? $.getJSON('?GetPlaylist&playlist=' + PlaylistIndex, ParseAlbums) : $.getJSON('?Get_Playlist&playlist=' + PlaylistIndex, ParseAlbums);

состояние флага передаётся в js в качестве аргумента onselectPlaylist(true/false) и далее запоминается в FlagNewPlaylist и юзается по коду далее.

Изменено пользователем AleXH

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дело не в этом - если просто заметить по скрипту (3 замены) GetPlaylist на Get_Playlist, то нажатие на bOpen не выводит список дисков. Или я чего-то пока не понял...

GetPlaylist, который получает список альбомов и который нужно заменять, вызывается только в функции onselectPlaylist. В остальных случаях вызывается функция GetPlaylists, которая получает список сохраненных плейлистов и доступных дисков. Ее заменять не надо.

Изменено пользователем IgorA

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Взлетело, спасибо :) Игорь, а как сделать поиск или фильтр с подсветкой в списке альбомов? Например альбомов много в плейлисте и нужно найти альбом, содержащий в названии какое-либо слово.

 

 

2017_07_04_085022.png

Изменено пользователем AleXH

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Игорь, а как сделать поиск или фильтр с подсветкой в списке альбомов? Например альбомов много в плейлисте и нужно найти альбом, содержащий в названии какое-либо слово.

Как вариант, поменять библиотеку zepto.js на совместимую по интерфейсу jquery, подключить jquery-ui, и использовать autocomplete combobox для списка альбомов.

Пример с исходным кодом здесь:

http://jqueryui.com/autocomplete/#combobox

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посмотрел, спасибо. Победить не смогу - сложно для меня.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@AleXH, вот совсем компактный пример, использующий дополнительно готовые стили и скрипты от Infragistics:

1.html

Изменено пользователем IgorA

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Игорь, спасибо, помедитирую. Сделал так:

function NextCommand()
{
document.getElementById('progress').value = 0;
Playing ? $.getJSON('?Next', ParsePlay) : $.getJSON('?Pause', ParseStd);
}

- ожидал, что перейдёт на следующий трек и состояние паузы сохранится, но почему-то всё равно стартует воспроизведение...

 

Новый концепт интерфейса, редизайн кнопок.

2017_07_04_180816.png

Изменено пользователем AleXH

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сделал так:

function NextCommand()
{
document.getElementById('progress').value = 0;
Playing ? $.getJSON('?Next', ParsePlay) : $.getJSON('?Pause', ParseStd);
}

- ожидал, что перейдёт на следующий трек и состояние паузы сохранится, но почему-то всё равно стартует воспроизведение...

Для движка Play сбрасывает паузу, поэтому ее надо восстанавливать.

Чтобы по Next сохранилось состояние паузы надо в конец ParsePlay вместо UpdateState добавить:

if (Paused)
$.getJSON('?Pause', ParseStd);
else
UpdateState();

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

что-то у меня желание 2-е булевые из-за отдельных кнопок play и pause после "выламывания" кнопки паузы, заменить на статус из 3-х состояний: 0 - stop, 1 - pause, 2 - play, а то будет как-то по албански продолжать использовать 2-е булевые с запрещённым состоянием.

 

Игорь, а сам "двигатель" поддерживает переходы в состоянии паузы, или он стартует автоматом и его нужно принудительно ставить на паузу после каждого перехода? - Посмотрел на обилие Playing и захотелось оставить всё как есть.

Изменено пользователем AleXH

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@AleXH, ставить на паузу нужно, но чтобы пауза сохранялась при переключениях треков достаточно сделать исправление, о котором сказано в моем предыдущем сообщении.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Игорь, я спрашивал о механизме работы самого сервера - при переключении происходит автостарт воспроизведения или нет? Если нет, то зачем его ставить на паузу, если он уже на паузе?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, фраза из сообщения выше "Для движка Play сбрасывает паузу" как раз и означает, что в сервере и плеере обработка команд смены трека и воспроизведения автоматически сбрасывает состояние паузы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Выход при переключении треков в общем случае нельзя удержать на реальной паузе и снять с нее позже, так как там останется в буфере "мусор" от прежнего трека. Поэтому использованное решение c переходом через "Stop-Play" достаточно оптимально.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Даже в случае единого образа? - Там же треки вообще условны.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Даже если переключение трека отрабатывается как перемотка внутри образа, буфер в любом случае потребуется сбросить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...

Важная информация

Пользуясь форумом вы соглашаетесь с нашими Условия использования.