Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Воспроизведение музыкальных файлов в VB 
:(
    Опции темы
Mick Winder
  Дата 15.11.2004, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 15.10.2004
Где: Москва Рязанка

Репутация: нет
Всего: -1



Доброго вечера, народ!!!
В данном подфоруме я впервые, что не удивительно, т.к. только сегодня решил начать изучать Visual Basic... (А так я дельфист...) Потому начну задавать детсадовские вопросы, так что помогите разобраться в номом для меня языке программирования... Пожелайте мне удачи! smile
Мне нужно для с помощью какой либо клавиши заставить проиграть музыкальный файл формата mp3...
Написал такой код:

Private Sub Form_Load()
Player1.DeviceType = "WaveAudio"
End Sub

Private Sub Command1_Click()
Player1.FileName = "F:\nz.mp3"
Player1.Command = "Open"
Player1.Command = "Sound"
Player1.Command = "Close"
End Sub

Почему-то не проигрывает... Почему? smile
PM MAIL   Вверх
boevik
Дата 15.11.2004, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 12
Всего: 35



А жто за компонента Player?


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
Mick Winder
Дата 16.11.2004, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 15.10.2004
Где: Москва Рязанка

Репутация: нет
Всего: -1



Это не компонента... Это имя компоненты MMControl, взятая из Microsoft Multimedia Control 6.0
PM MAIL   Вверх
boevik
Дата 16.11.2004, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 12
Всего: 35



Mick Winder, а он умеет играть mp3?
wav файлы проигрывает без проблем.


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
Mick Winder
Дата 16.11.2004, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 15.10.2004
Где: Москва Рязанка

Репутация: нет
Всего: -1



Теоретически должен проигрывать и wav, и mp3... но чего-то не то... не играет...
PM MAIL   Вверх
Сувор
Дата 16.11.2004, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 7.6.2004

Репутация: нет
Всего: нет



Забудь про MMControl и подключи Windows Media Player -все играет и проблем меньше.
PM MAIL   Вверх
amt
Дата 16.11.2004, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 249
Регистрация: 26.10.2004
Где: г. Волгоград

Репутация: 3
Всего: 3



Mick Winder, я согласен с Сувор

Используй MediaPlayer из компоненты Windows Media Player
Вот пример кода который у меня работает

Код

Private Sub Form_Load()
MediaPlayer1.Visible = False
MediaPlayer1.FileName = "filePath\fileName.mp3"
End Sub


Если нужно управлять воспроизведение файла сделай MediaPlayer1.Visible = True
Может не стоит заморачиваться?
Удачи!


--------------------
С точки зрения банальной эрудиции не каждый индивидуум способен игнорировать тенденции парадоксальных эмоций.
PM MAIL   Вверх
Mick Winder
Дата 17.11.2004, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 15.10.2004
Где: Москва Рязанка

Репутация: нет
Всего: -1



Спасибо всем!!!
PM MAIL   Вверх
Антикатод
Дата 19.11.2004, 08:56 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А можно так (или как нибудь еще) проигрывать одновременно несколько звуков (знаю, что теоретически нет, но практически)? smile

Оочень надо. Зачем? Для того чтобы сделать "драм-машину" (если она так называется). Короче, по клавиша жмем; и получаются ударные партии.

Знаю, что очень в втему. smile
  Вверх
amt
Дата 19.11.2004, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 249
Регистрация: 26.10.2004
Где: г. Волгоград

Репутация: 3
Всего: 3



Можно в форме разместить несколько Windows MediaPlayer и каждый будет играть свой mp3 файл. Я пробовал с двумя.
--------------------
С точки зрения банальной эрудиции не каждый индивидуум способен игнорировать тенденции парадоксальных эмоций.
PM MAIL   Вверх
amt
Дата 20.11.2004, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 249
Регистрация: 26.10.2004
Где: г. Волгоград

Репутация: 3
Всего: 3



Антикатод

Цитата
А можно так (или как нибудь еще) проигрывать одновременно несколько звуков (знаю, что теоретически нет, но практически)? 

Оочень надо. Зачем? Для того чтобы сделать "драм-машину" (если она так называется). Короче, по клавиша жмем; и получаются ударные партии.

Знаю, что очень в втему


Если тебе нужно проигрывать несколько mp3 файлов одновременно могу предложить следующее:
Создай проект с формой.
Размести в ней Windows Media Player.
Копируй его в буфер.
Вставь его из буфера в пустое место формы.
Программа спросит у тебя хочешь ли ты создать контейнер.
Соглашайся.
Проигрыватели будут иметь имена
MediaPlayer1(0)
MediaPlayer1(1)
С индексом 1 можешь смело удалять.
Дальше добавь в форму несколько кнопок (у меня в примере четыре) и запиши следующий код.
У меня класно работает.

Код

Private Sub Form_Load()
Load MediaPlayer1(3)
Load MediaPlayer1(2)
Load MediaPlayer1(1)
MediaPlayer1(0).Visible = False
Command1.Caption = "Play"
Command2.Caption = "Play"
Command3.Caption = "Play"
Command4.Caption = "Play"
End Sub

Private Sub Command1_Click()
If MediaPlayer1(0).PlayState = mpPlaying Then
   Command1.Caption = "Play"
   MediaPlayer1(0).Stop
   Exit Sub
   End If
Command1.Caption = "Stop"
MediaPlayer1(0).FileName = "путь к файлу1"
End Sub

Private Sub Command2_Click()
If MediaPlayer1(1).PlayState = mpPlaying Then
   Command2.Caption = "Play"
   MediaPlayer1(1).Stop
   Exit Sub
   End If
Command2.Caption = "Stop"
MediaPlayer1(1).FileName = " путь к файлу 2"
End Sub

Private Sub Command3_Click()
If MediaPlayer1(2).PlayState = mpPlaying Then
   Command3.Caption = "Play"
   MediaPlayer1(2).Stop
   Exit Sub
   End If
Command3.Caption = "Stop"
MediaPlayer1(2).Visible = False
MediaPlayer1(2).FileName = " путь к файлу 3"
End Sub

Private Sub Command4_Click()
If MediaPlayer1(3).PlayState = mpPlaying Then
   Command4.Caption = "Play"
   MediaPlayer1(3).Stop
   Exit Sub
   End If
Command4.Caption = "Stop"
MediaPlayer1(3).Visible = False
MediaPlayer1(3).FileName = " путь к файлу 4"
End Sub

Private Sub MediaPlayer1_PlayStateChange(Index As Integer, ByVal OldState As Long, ByVal NewState As Long)
If MediaPlayer1(0).PlayState = mpStopped Then Command1.Caption = "Play"
If MediaPlayer1(1).PlayState = mpStopped Then Command2.Caption = "Play"
If MediaPlayer1(2).PlayState = mpStopped Then Command3.Caption = "Play"
If MediaPlayer1(3).PlayState = mpStopped Then Command4.Caption = "Play"
End Sub

Если я че не так понял в твоем вопросе – пиши (может еще че придумаю).
При желании можно написать код чтобы запускать/выключать проигрыватели нажатием клавиш на клаве.

PS
Если нужно много Player-ов то лучше создать контейнер для кнопок (также как и для проигрывателей)
Тогда код сократиться. При этом стоит объявить как одномерный текстовый массив кокую-нибудь переменную (fileName) и записать в этот массив все пути к mp3.

Тогда код будет выглядеть примерно так:

Код

Private Sub Command1_Click(Index As Integer и т.д.)
If MediaPlayer1(Index).PlayState = mpPlaying Then
   Command1(Index).Caption = "Play"
   MediaPlayer1(Index).Stop
   Exit Sub
   End If
Command1(Index).Caption = "Stop"
MediaPlayer1(Index).Visible = False
MediaPlayer1(Index).FileName = filerName(Index)
End Sub

Private Sub MediaPlayer1_PlayStateChange(Index As Integer, ByVal OldState As Long, ByVal NewState As Long)
If MediaPlayer1(Index).PlayState = mpStopped Then Command1(Index).Caption = "Play"
End Sub


(Этот код не проверял, но должен работать если я в синтаксисе не наделал ошибок)
Дальше можно записать код, вызывающий событие нажатия той или иной кнопки Command при нажатии соответствующей клавиши на клаве.
Кстати, что бы не перегружать память, может имеет смысл загружать Player-ы не при Form_Load(), а при Command_Click(). Тогда нужно выгружать Player-ы после окончания проигрывания файлов.
Короче: можно много чего придумать.
Удачи!

--------------------
С точки зрения банальной эрудиции не каждый индивидуум способен игнорировать тенденции парадоксальных эмоций.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

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

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0474 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.