Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Регулировка громкости Добавлено: 02.09.07 13:04  

Автор вопроса:  Mr.Smile | ICQ: 427682013 
Привет всем, кто читает эту тему!
При использовании компонента ActiveMovie control type library у меня возникли проблемы с регулировкой уровня громкости. Например, на 50% уже ничего не слышно. :( Помогите сделать регулировку по нормальному. Например, как в Winamp.

Заранее благодарен.

Вот, собственно, код (Form1 (добавить HScroll1), Module1):
Form1.frm
Option Explicit

Private Sub Form_Activate()
  'Change the file path of your mp3 in here.
  DirectShow_Load_Media "C:\WINDOWS\Media\Windows XP - запуск.wav" 'Ваш звуковой файл
  'You don't need to do this part, but it's nice to be
  'able to control it.
  '------------------------------------------------
  DirectShow_Volume 100
  '------------------------------------------------

  DirectShow_Play
End Sub

Private Sub Form_Unload(Cancel As Integer)
  DirectShow_Stop
  DirectShow_Shutdown
End Sub

Private Sub HScroll1_Change()
    DirectShow_Volume HScroll1.Value
End Sub

Private Sub HScroll1_Scroll()
    DirectShow_Volume HScroll1.Value
End Sub


Module1.bas
Option Explicit

Private Const MAX_VOLUME As Long = 100

Public DirectShow_Control As IMediaControl
Public DirectShow_Position As IMediaPosition
Public DirectShow_Audio As IBasicAudio

Public Function DirectShow_Load_Media(File_Name As String) As Boolean
 On Error GoTo Error_Handler
  If Right(File_Name, 4) = ".mp3" Or Right(File_Name, 4) = ".wav" Then
  Set DirectShow_Control = New FilgraphManager
  DirectShow_Control.RenderFile (File_Name)
  Set DirectShow_Audio = DirectShow_Control
  DirectShow_Audio.Volume = 0
  DirectShow_Audio.Balance = 0
  Set DirectShow_Position = DirectShow_Control
  DirectShow_Position.Rate = 1
  DirectShow_Position.CurrentPosition = 0
 Else
  GoTo Error_Handler
 End If
 DirectShow_Load_Media = True
 Exit Function
Error_Handler:
 DirectShow_Load_Media = False
End Function

Public Function DirectShow_Play() As Boolean
 On Error GoTo Error_Handler
 DirectShow_Control.Run
 DirectShow_Play = True
 Exit Function
Error_Handler:
 DirectShow_Play = False
End Function

Public Function DirectShow_Stop() As Boolean
 On Error GoTo Error_Handler
 DirectShow_Control.Stop
 DirectShow_Position.CurrentPosition = 0
 DirectShow_Stop = True
 Exit Function
Error_Handler:
 DirectShow_Stop = False
End Function

Public Function DirectShow_Volume(ByVal Volume As Long) As Boolean
 On Error GoTo Error_Handler
 If Volume >= MAX_VOLUME Then Volume = MAX_VOLUME
 If Volume <= 0 Then Volume = 0
 DirectShow_Audio.Volume = (Volume * MAX_VOLUME) - 10000
 DirectShow_Volume = True
 Exit Function
Error_Handler:
 DirectShow_Volume = False
End Function

Public Sub DirectShow_Shutdown()
 Set DirectShow_Audio = Nothing
 Set DirectShow_Control = Nothing
 Set DirectShow_Position = Nothing
End Sub

Ответить

  Ответы Всего ответов: 9  

Номер ответа: 1
Автор ответа:
 Игорь



ICQ: 457394129 

Вопросов: 52
Ответов: 133
 Профиль | | #1 Добавлено: 02.09.07 18:50
Вот я выложил пример:
http://slil.ru/24806363

Ответить

Номер ответа: 2
Автор ответа:
 Игорь



ICQ: 457394129 

Вопросов: 52
Ответов: 133
 Профиль | | #2 Добавлено: 02.09.07 18:51
Просто заместо конкретных значений впишешь обращение к зачению скрола!

Ответить

Номер ответа: 3
Автор ответа:
 Mr.Smile



ICQ: 427682013 

Вопросов: 14
Ответов: 464
 Профиль | | #3 Добавлено: 02.09.07 20:02
2Игорь
Спасибо за пример. Но дело в том, что мне необходимо правильно менять громкость в ActiveMovie control type library, а не в Windows.

Ответить

Номер ответа: 4
Автор ответа:
 Игорь



ICQ: 457394129 

Вопросов: 52
Ответов: 133
 Профиль | | #4 Добавлено: 03.09.07 10:33
Поесть ты хочешь менять громкость не изменяя её в звуковой панели? Как в WinAMP!

Ответить

Номер ответа: 5
Автор ответа:
 Mr.Smile



ICQ: 427682013 

Вопросов: 14
Ответов: 464
 Профиль | | #5 Добавлено: 03.09.07 14:54
Поесть ты хочешь менять громкость не изменяя её в звуковой панели? Как в WinAMP!
Верно; если ты опробовал код, то возможно заметил, что громкость меняется не в Windows (Панель управления->Звуки и аудиоустройства) а в ActiveMovie control type library. Но меняется она неправильно. На ~50% уже не слышно звука. Вот я и прошу помощи исправить это.

Ответить

Номер ответа: 6
Автор ответа:
 Mr.Smile



ICQ: 427682013 

Вопросов: 14
Ответов: 464
 Профиль | | #6 Добавлено: 03.09.07 15:23
P.S. ActiveMovie control type library - библиотека quartz.dll. Добавляется в Project->References...->ActiveMovie control type library (поставить галочку)
Она воспроизводит звук, и это в ней мне нужно научиться праильно изменять громкость воспроизводимого ею-же звукового файла.

Ответить

Номер ответа: 7
Автор ответа:
 Игорь



ICQ: 457394129 

Вопросов: 52
Ответов: 133
 Профиль | | #7 Добавлено: 03.09.07 16:55
Когда я выделяю ету dll ку то ВБ пишет что не может её загрузить!

Ответить

Номер ответа: 8
Автор ответа:
 Mr.Smile



ICQ: 427682013 

Вопросов: 14
Ответов: 464
 Профиль | | #8 Добавлено: 03.09.07 20:08
Это нехорошо. У меня всё работает; возможно, она у тебя пропатчена или повреждена. Ничего поделать не могу. :(

Ответить

Номер ответа: 9
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #9
Добавлено: 09.09.07 09:08
Поесть ты хочешь менять громкость не изменяя её в звуковой панели? Как в WinAMP!

Ммм... Еда!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам