Как проигрываать mp3 циклично?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Олег Козлов
Обычный пользователь
Обычный пользователь
 
Сообщения: 52
Зарегистрирован: 26.05.2005 (Чт) 15:56
Откуда: Нижний Тагил

Как проигрываать mp3 циклично?

Сообщение Олег Козлов » 07.06.2005 (Вт) 20:40

Declare Function mciExecute _
Lib "winmm.dll" _
(ByVal lpstrCommand As String) As Long

Public Function PlayMusic(MusicFile As String)
'Проигрывание звукового файла
Call mciExecute("play " & MusicFile)
End Function

Public Function
CloseMusic(MusicFile As String)
'Закрывает звуковой файл
Call mciExecute("close " & MusicFile)
End Function

----------------

А как проигрывать mp3 циклично? (Фоновый звук - нужно для "Кто хочет стать миллионером?" - все, наверное, представляют). Очень важно, чтобы стыка не было слышно.

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 08.06.2005 (Ср) 17:09

Чтобы не было слышно стыка нужно для начала сделать композицию трековой. То есть, чтобы не было четко выраженного начала и конца. Надеюсь ясно выразился? :roll: Для цикличности нужно периодически проверять или закончилось проигрывание, и если закончилось, запускать по новой. Как это сделать на winmm.dll право не знаю. А вот на DirectShow без проблем. Так что если хочешь, могу выложить пример :)
То, что для одних константа, для других только переменная...

Олег Козлов
Обычный пользователь
Обычный пользователь
 
Сообщения: 52
Зарегистрирован: 26.05.2005 (Чт) 15:56
Откуда: Нижний Тагил

Сообщение Олег Козлов » 08.06.2005 (Ср) 17:13

Все, что угодно, лиж бы не было лишних OCX/DLL (инсталлятор растолстеет) и чтобы одновременно можно было проигрывать другие звуки.

А с трековым mp3 все нормально - у меня конец переходит в начало, т.е. если паузы не бует, то шва слышно не будет. Я имел в виду, чтобы не было паузы между повторениями.

schalexey
Обычный пользователь
Обычный пользователь
 
Сообщения: 96
Зарегистрирован: 18.02.2005 (Пт) 17:41
Откуда: Сургут

Сообщение schalexey » 08.06.2005 (Ср) 18:41

Олег Козлов он у тебя играет вобще... а то вроде там так грузяться файлы:
Код: Выделить всё
Call mciExecute("load " & MusicFile & " ALIAS " & Alias)
Call mciExecute("play " & Alias)


Вот ток при открытии не помню что писать надо вроде Loop или нет...

Олег Козлов
Обычный пользователь
Обычный пользователь
 
Сообщения: 52
Зарегистрирован: 26.05.2005 (Чт) 15:56
Откуда: Нижний Тагил

Сообщение Олег Козлов » 08.06.2005 (Ср) 20:35

Если без load, а сразу play, то играет. А че там насчет loop????

schalexey
Обычный пользователь
Обычный пользователь
 
Сообщения: 96
Зарегистрирован: 18.02.2005 (Пт) 17:41
Откуда: Сургут

Сообщение schalexey » 08.06.2005 (Ср) 20:40

[b]Олег Козлов[/b не помню... или
mciExecute("play " & Alias & " repeat")
поэкспериментируй..

Олег Козлов
Обычный пользователь
Обычный пользователь
 
Сообщения: 52
Зарегистрирован: 26.05.2005 (Чт) 15:56
Откуда: Нижний Тагил

Сообщение Олег Козлов » 08.06.2005 (Ср) 20:41

ладно. попробую...

Олег Козлов
Обычный пользователь
Обычный пользователь
 
Сообщения: 52
Зарегистрирован: 26.05.2005 (Чт) 15:56
Откуда: Нижний Тагил

Сообщение Олег Козлов » 08.06.2005 (Ср) 20:49

Работает: Call mciExecute("play " & MP3 & " repeat"), но между повторами есть небольшая пауза, т.е. слышен шов. А как убрать эту паузу?

Файл mp3-фона приложен... (54 Кб)
Вложения
1.zip
(52.92 Кб) Скачиваний: 31

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 08.06.2005 (Ср) 21:15

Просто у тебя плохой MP3 файл.
Можешь сделать так:

Код: Выделить всё
If MCI.Position = MCI.Length - 300 Then Call PlayMusic
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 09.06.2005 (Чт) 10:49

Ага... BV, ты тоже использовал универсальный VB-класс для работы с MCI? Вот откуда уши Easy Player'а растут :D
Моду создают модоки, а распространяют модозвоны.

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 09.06.2005 (Чт) 12:48

Нет. Я написал свой класс. Но он жестко зависим от кода в модулях и форме...

EasyPlayer в своём текущем виде прекратил своё существование. Далее он будет делаться либо на BASS.DLL, либо на FMOD.DLL, либо на к.л. другой библиотеке. В общем будет существенно изменён.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 18.06.2005 (Сб) 22:18

Всё дело в том что файл *.mp3
Я твой файл декомпилировал, немножко подредактировал
Теперь через sndPlaySound отлично всё работает :D :D :D
8)
З.Ы.:Файл прилагается :)
Вложения
1.rar
(647.67 Кб) Скачиваний: 17
Если всё делать своими ручками, они скоро отвалятся !

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 18.06.2005 (Сб) 23:39

2 Kovu

Ты случайно не с другой игры этот звук взял? Что-то много соответствия :wink:
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 19.06.2005 (Вс) 10:25

Нет я просто перегнал звук Олег Козлов в *.wav и немножко над ним поработал 8) 8) 8)
З.Ы.:Борис.... Моисеев? :D :P :P
Если всё делать своими ручками, они скоро отвалятся !

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 19.06.2005 (Вс) 13:28

2 Kovu

А по шее не хочешь за подобные "шутки"? :evil:
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 19.06.2005 (Вс) 13:58

Нееееееее моя шея не для того :D
Между прочим это был ответ на чей-то сарказм :evil:
Если всё делать своими ручками, они скоро отвалятся !

Дмитрий_pro
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 20.06.2005 (Пн) 15:21
Откуда: Косторма

Сообщение Дмитрий_pro » 20.06.2005 (Пн) 16:08

Возможно, Вы избегаете стандартных контролов, но в MMControl эта фишечка :) давно проверена
К людям надо относиться мягче, а к себе шерше!

Олег Козлов
Обычный пользователь
Обычный пользователь
 
Сообщения: 52
Зарегистрирован: 26.05.2005 (Чт) 15:56
Откуда: Нижний Тагил

Сообщение Олег Козлов » 20.06.2005 (Пн) 18:38

Дмитрий про писал:
Возможно, Вы избегаете стандартных контролов, но в MMControl эта фишечка давно проверена

MMControl в инсталлятор при распространении проги вставлять - нет! Итак инсталлятор с VB-шными прогами охренительный, а тут еще больше будет.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 183

    TopList