как сделать чтоб плеер читал не только mp3 формат но и друге
|
|
BM_GORA | Дата: Воскресенье, 24.06.2012, 19:20 | Сообщение # 1 |
Лейтенант
Группа: Пользователи
Сообщений: 44
Статус: Offline
| как сделать чтоб плеер читал не только mp3 формат но и друге к примеру wave ну и т.д. и еще один вопрос, как подключить к этому плееру возможность воспроизводить видео, так же различных форматов, что так сказать нужно впихнуть в плеер и куда )
|
|
| |
xaramamburu | Дата: Понедельник, 25.06.2012, 21:51 | Сообщение # 2 |
Полковник
Группа: Администраторы
Сообщений: 240
Статус: Offline
| BM_GORA, В данном варианте проигрыватель должен воспроизводить файлы следующих форматов MP3/MP2/MP1/OGG/WAV/AIFF; В процедуре открытия файла нужно либо убрать строчку OpenDialog1.Filter := 'mp3|*.mp3'; //фильтр для файлов, либо добавить в нее фильтр для остальных форматов. Для поддержки других форматов необходимо подключать дополнительные библиотеки (BASS_DSHOW - поддержка видео, BASSMIDI - поддержка MIDI, BASSWMA - поддержка WMA и т.д.), которые можно скачать с официального сайта http://www.un4seen.com/ . Примеры их подключения и использования идут вместе с библиотеками. К сожалению целью этих уроков не было создание еще одно WInAmp или AIMP, а всего лишь демонстрация работы с библиотекой BASS. Поэтому, что впихнуть в плеер и куда вам придется искать самому т.к. готовый исходный код вам вряд ли кто то выложит.)))))))))))))
|
|
| |
BM_GORA | Дата: Понедельник, 25.06.2012, 23:22 | Сообщение # 3 |
Лейтенант
Группа: Пользователи
Сообщений: 44
Статус: Offline
| ясно ) спс )
|
|
| |
Filo$oF | Дата: Вторник, 03.07.2012, 09:24 | Сообщение # 4 |
Лейтенант
Группа: Пользователи
Сообщений: 61
Статус: Offline
| xaramamburu
Ответьте , если знаете решение. Проблема следующая. Я подключаю сторонние библиотеки для воспроизведения mp4 и прочих форматов не входящих в стандартный bass. Всё воспроизводит и проигрывает. Файлы формата mp4 спокойно листаются кнопками на плеере (следующий, предыдущий трек). Но при автоматическом переходе по окончанию трека, выскакивает ошибка и выделяется строка
Code Image4.Left:=round(((Image3.Width-Image4.Width)/BASS_ChannelGetLength(channel, 0))*bass_channelGetPosition(channel,0))+Image3.left;
Вот скрин ошибки. http://cs309729.userapi.com/v309729233/cf3/Svbpns4BT8k.jpgДобавлено (03.07.2012, 09:24) --------------------------------------------- А с mp3 всё работает нормально.
|
|
| |
xaramamburu | Дата: Среда, 04.07.2012, 20:16 | Сообщение # 5 |
Полковник
Группа: Администраторы
Сообщений: 240
Статус: Offline
| Filo$oF,
Вот что по этому поводу говорит интернет: Invalid floating point operation (Недопустимая операция с плавающей запятой) .
Возможные причины сообщения:
• аргумент функций TRUNC или ROUND не может быть преобразован в целое число, находящееся внутри диапазона типа LONGINT (от -2147483648 до +2147483647); • отрицательный аргумент функции SQRT (извлечение квадратного корня); • аргумент функции LN (логарифм) равен нулю или имеет отрицательное значение; • деление на 0; • произошло переполнение стека сопроцессора.
Проверяйте значения функций BASS_ChannelGetLength(channel, 0) и bass_channelGetPosition(channel,0), возможно деление на ноль.
|
|
| |
Filo$oF | Дата: Среда, 04.07.2012, 21:54 | Сообщение # 6 |
Лейтенант
Группа: Пользователи
Сообщений: 61
Статус: Offline
| xaramamburu Получается, что в момент переходя BASS_ChannelGetLength(channel, 0) равно нулю? Остальное я что-то не совсем понял. Буду разбираться
|
|
| |
xaramamburu | Дата: Среда, 04.07.2012, 22:47 | Сообщение # 7 |
Полковник
Группа: Администраторы
Сообщений: 240
Статус: Offline
| Filo$oF, Я сказал, что возможно равно 0. Попробуйте закомментировать пока строку с ошибкой, а значение функции BASS_ChannelGetLength(channel, 0) и bass_channelGetPosition(channel,0) вывести например в Label и посмотреть чему равны значения этих функции. )))))))))
|
|
| |
Filo$oF | Дата: Четверг, 05.07.2012, 00:24 | Сообщение # 8 |
Лейтенант
Группа: Пользователи
Сообщений: 61
Статус: Offline
| Вобщем так, запускал несколько раз программу и крутил один файл mp4. bass_channelGetPosition(channel,0) - выдаёт всегда разное значение. То есть первые четыре не меняются одни, а четыре другие всегда меняются. Но равным нулю не было. Ошибка всё равно вылетает та же и выделяет строку, которой я вывожу bass_channelGetPosition(channel,0) в label. BASS_ChannelGetLength(channel, 0) - не меняется.
В общем, даже без вывода в label ругается на эти две строки BASS_ChannelGetLength(channel, 0) и bass_channelGetPosition(channel,0)
|
|
| |
xaramamburu | Дата: Четверг, 05.07.2012, 11:13 | Сообщение # 9 |
Полковник
Группа: Администраторы
Сообщений: 240
Статус: Offline
| Filo$oF, Не очень понятно на, что именно ругается на bass_channelGetPosition(channel,0) или на BASS_ChannelGetLength(channel, 0) или на обе вместе. Скорее всего когда файл заканчивается эти функции принимают какие-то непонятные значения, что бы понять надо тестировать сам проект. Но здесь я могу посоветовать следующее: 1. Попробуйте в место: //если время проигрывания равно длине песни по времени, if BASS_ChannelGetPosition(channel, 0)=BASS_ChannelGetLength(channel, 0) then в событии OnTime таймера использовать: //если канал остановлен, if BASS_ChannelIsActive(channel)=BASS_ACTIVE_STOPPED then Возможно заработает. 2. Используйте обработку исключительных ситуаций try...except...end, try...finally...end При возникновении ошибки в except пропишите выбор следующего файла, освободив перед этим канал. Хотя вариант конечно корявый, но думаю, что работоспособный.
|
|
| |
Filo$oF | Дата: Четверг, 05.07.2012, 16:18 | Сообщение # 10 |
Лейтенант
Группа: Пользователи
Сообщений: 61
Статус: Offline
| xaramamburu
Использовал
//если канал остановлен, if BASS_ChannelIsActive(channel)=BASS_ACTIVE_STOPPED then
И всё заработало нормально. Спасибо большое.
Invalid floating point operation - эта ошибка вылазила на то, что стояло первым. Например, если сперва в label выводится BASS_ChannelGetLength(channel, 0) то и будет выделяться эта строка и наоборот.
|
|
| |
|