Проигрывание Mp3 файлов с помощью Vb 6

  • Автор темы Shtirlits
  • Дата начала
Статус
Закрыто для дальнейших ответов.
S

Shtirlits

#1
В поисках этого вопроса мне надоело рыскать по инету, везде пишут, что ето уже "избитый" вопрос, но кроме проигрывания WAV и AVI, при помощи VB (6) ,я ни чего не нашел, кроме тех примеров (и сотни подолбных), ссылки на которые лежат ниже, но мой VB (6) выдает на них ошибку(скорей всего они для VB.NET).Если вы знаете ответ, подскажите плиз. Желательно теми средствами которые входят в VB и Windows,
Ссылка1

http
://design.gossoudarev.com/info/multime...ogr/index.html

Ссылка2

http://visualbasic.noka.ru/?Page=articles&id=playavi#a

(те же самые AVI И WAV и то с ошибкой) все остальное примерно в том же духе (((
Заранее благодарен за любую помощь в ентом вопросе !!!
 

morpheus

скриптописец
07.08.2006
3 915
1
#2
Юзайте гугль...


ВОТ - первая же ссылка ведёт на ответ

Как проигрывать MP3 файлы на VB?

Вопрос:

Как проигрывать MP3 файлы на VB?

Ответ:

В Windows API нет функций для работы со звуковыми файлами, сжатыми по стандарту MP3. Но... Есть замечательный компонент, который называется Windows Media Player, вот он может помочь. Положите на форму контрол Windows Media Player, свойство AutoStart поставьте в True. Теперь для воспроизведения установите в свойство FileName, во время выполнения программы, имя файла для воспроизведения. И все...
Вообще-то, существуют различные OCX, которые могут воспроизвести mp3, но зачем они, если практически у всех есть Media Player.

Шатрыкин Иван
 
S

Shtirlits

#3
ты, конечно прости, Иван, но я ,буду ругаться и матом кричать !!!
Windows Media Player,вот он может помочь.
- этьо означает, что ты сам не знаешь, не пробовал!!!зачем тогда советы давать???Где пример (причем тобой опробованный!!!!)
но зачем они, если практически у всех есть Media Player.
да затем, что я хочу научиться писать СВОИ программы и научиться программировать !!!
Дополнение к заданному выше вопросу!!!!
Эту ссылку мы уже проходили, и она полная херь!MSDN тоже юзали !
Нужен пример иль какая дока для Visual Basic 6!!! а не .NET или С++ или С# VBA
Неужели в обычную HTML - страницу WMPlayer легче вставить ?! )))
В общем Ваня ДВОЙКА тебе за ответ )))
 

morpheus

скриптописец
07.08.2006
3 915
1
#4
<!--QuoteBegin-Shtirlits+9:01:2008, 10:33 -->
<span class="vbquote">(Shtirlits @ 9:01:2008, 10:33 )</span><!--QuoteEBegin-->ты, конечно прости, Иван, но я ,буду ругаться и матом кричать !!!
[snapback]92640" rel="nofollow" target="_blank[/snapback]​
[/quote]
а по сопатке, могу налупить ещё предупреждений за мат

<!--QuoteBegin-Shtirlits+9:01:2008, 10:33 -->
<span class="vbquote">(Shtirlits @ 9:01:2008, 10:33 )</span><!--QuoteEBegin-->Где пример (причем тобой опробованный!!!!)
[snapback]92640" rel="nofollow" target="_blank[/snapback]​
[/quote]
ни кто тут пример опробованный не обязан давать

<!--QuoteBegin-Shtirlits+8:01:2008, 16:46 -->
<span class="vbquote">(Shtirlits @ 8:01:2008, 16:46 )</span><!--QuoteEBegin-->[snapback]92559" rel="nofollow" target="_blank[/snapback]</div>[/quote]
Самый лучший способ - другие, насколько я понимаю ( БЕЗ API ) , бyдут просто извратом.
В этом примере расписано и разжовано всё что надо.

<!--QuoteBegin-Shtirlits+8:01:2008, 16:46 -->
<span class="vbquote">(Shtirlits @ 8:01:2008, 16:46 )</span><!--QuoteEBegin-->В общем Ваня ДВОЙКА тебе за ответ )))
[snapback]92640" rel="nofollow" target="_blank[/snapback]​
[/quote]
каков вапрос - такой и ответ
 
S

Shtirlits

#5
Мдааа, я уже трое суток ищу по инету рабочий пример,прерываясь изредка на писчу и сон , ну да ладна....
Тот пример во-первых для .NET, во-вторых он выдает мне ошибку, в третьих ,я юзал енту ссылку до тебя, спасиб конечно за труды, конечно никто мне ничем не обязан, но зачем тогда форумы нужны ???Слазил по ссылке еще раз, может чего пропустил, вроде нет - опять таже самая ошибка, типа неопределена функция или класс ((( Наверна придется искать простенький пример с API
НО я не могу поверить ,чтобы микрософтовские гении пропустили такое расширение файла , как mp3, в среде разработки VisualBasic6? Да даже рабочего примера простым wave мне не найти уже. Кстати ,в MSDN встретилась такая фраза (но опять для .NET) создайте ссылку на пространство имен System (ето как, их же там видимо не видимо ) ниже код, так на сяк случай родимого MSDN, для wave тока (((
Пример:
Код:
Public Class SoundClass
Declare Auto Function PlaySound Lib "winmm.dll" (ByVal name _
As String, ByVal hmod As Integer, ByVal flags As Integer) As Integer
' name specifies the sound file when the SND_FILENAME flag is set.
' hmod specifies an executable file handle.
' hmod must be Nothing if the SND_RESOURCE flag is not set.
' flags specifies which flags are set. 

' The PlaySound documentation lists all valid flags.
Public Const SND_SYNC = &H0		 ' play synchronously
Public Const SND_ASYNC = &H1		 ' play asynchronously
Public Const SND_FILENAME = &H20000 ' name is file name
Public Const SND_RESOURCE = &H40004 ' name is resource name or atom

Public Sub PlaySoundFile(ByVal filename As String)
' Plays a sound from filename.
PlaySound(filename, Nothing, SND_FILENAME Or SND_ASYNC)
End Sub
End Class

Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Dim SoundInst As New SoundClass()
SoundInst.PlaySoundFile("C:\ringout.wav")
End Sub
Компиляция кода
Для этого примера требуется:
Ссылка на пространство имен System.
Элемент управления Button с именем Button1.
Устойчивое программирование
PlaySound возвращает true при успешном выполнении, и false — при сбое.
Если заданный файл не существует, PlaySound воспроизводит стандартный системный звук и не возвращает ошибку.
Имя файла должно указывать на звуковой файл на вашем компьютере
P.S.:Не обижайся :blink: я, конечно, дуб в программировании, может плохо ищу, но неужели так мало людей задавалось подобными вопросами, или менять среду разработки или завязывать с программированием :D :D
 
S

Shtirlits

#6
Все , что выше и везде раскиданы примеры по инету - полная лажа, везде примеры для проигрывания wave идут неправильные, то есть с ошибками, ибо лентяи которые держать сайты, не проверяя код в примерах просто копируют (и особо шибко умные советчики делают также)))
Вывод из всего этого =:
Проигрывание mp3 файла с помощью Visual Basic 6 и его инструментов ВОЗМОЖЕН!!! ,Я сделал это!!! )))
За последние сутки, ни евши, не спавши, только прерываясь на самое необходимое (секс и иногда интернет ))) я исправил ошибки кое в каких примерах, и сделал рабочий пример, доведу до читабельного состояния, и если кому понадобиться, выложу деся, а если у кого есть рабочий пример с winmm.dll для проигрывания mp3,выложите плиз
ГЫ&ЗЫ:
При помощи API тоже можно проиграть MP3 ))) но я етим пока не занималса ))
 
S

Shtirlits

#7
Пасибо !!! Огромныя вам ПАСИБО!!! :D
Отличный пример, и самое главное работающий !!!!
Для: sax_ol
попробуем исправится, хотя вряд ли получится )))
 
S

Shtirlits

#8
Я должен сообщить пренеприятнейшее известие - я неуч !!! Чтобы понять почему MMControl не хочет проигрывать мои MP3 пришлось перелопать половину MSDN и других забугорных сайтов, а с моими познаниями в агнглийском это далось нелегко.В общем,вот что пишут в MSDN (вольный перевод :))):
MMControl поддерживает такие форматы файлов, как : MPEG(Layer1,2 вроде ),AVI and WAV .Ну и что сие означает, спросите вы, -типа мы ето знаем, а то, что MP3 принадлежит формату MPEG знаете?Вывод: проигрывание MP3 с помощью MMControl возможен! код ниже. НО, есть замечание, при первых разах когда я пробовал проиграть MP3, я забыл, что половина моих песен - это MP3 PRO !!! То есть еще более сжатых, и немного отличающиеся от обычного MP3 ,и поэтому старый добрый контрол их может не взять (( Ну и он глючный, а так работает.
Кидаем на форму MMControl1, кликаем правой кнопкой по контролу и для кнопок PLAY,PAUSE ставим галочки (Vizible,Enable) в свойствах FileName выбираете путь до файла.Все, вы гении -написали свой плеер!! :)
Код:
Private Sub Form_Load()
MMControl1.Command = "Open"
MMControl1.Command = "Play"
End Sub
Попозже выложу код для компонента WindowsMediaPlayer на сяк случай :)
 
S

Shtirlits

#9
Лана,ок, вот код для компонента WindowsMediaPlayer (wmp.dl/winmm.dll)
Добвили компонент WindowsMediaPlayer на форму, на закладке "свойства компонента" выбрали "Custom" => закладка общие => пункт "Источник или имя файла" - путь до вашего файла или плэйлиста , жмем ОК, зате RUN.Усе, плеер готов :) Спросите где код - он не нужен, но если вы хотите управлять программно этим плеером (нажимая свои кнопочки -Command1,2 т.д.), то вот вам некоторые свойства и функции этого компонента , которые находил методом проб и ошибок, да Object Browser (F2)), если вы знаете другие какие свойства, выложите,плиз , здеся.
Один из способов проиграть файл:
Код:
Private Sub Command1_Click()
WindowsMediaPlayer1.URL = "C\MyFavorit.mp3" 'Путь до вашего Mp3 или плэйлиста
End Sub
Добавьте на форму TextBox1 и кнопку Command1 для вывода информации
Прежде чем использовать это запустите ваш плэйлист, если он не запущен, то в некоторых прцедурах будут возникать ошибки, так как файла допустим еще нет, а вы уже хотите знать его имя, и его длительность,поэтому при написании своей проги добавьте обрабоку ошибок
Выводит адрес проигрываемого файла
Код:
Private Sub Command1_Click()
Text1.Text = WindowsMediaPlayer1.currentMedia.sourceURL
End Sub
Выводит имя проигрываемого плэйлиста
Код:
Private Sub Command1_Click()
Text1.Text = WindowsMediaPlayer1.currentPlaylist.Name
End Sub
Выводит исполнителя проигрываемого файла
Код:
Private Sub Command1_Click()
Text1.Text = WindowsMediaPlayer1.currentMedia.Name
End Sub
Далее свойства идут просто списком, примеры использования вы видели выше
Код:
WindowsMediaPlayer1.currentMedia.duration 'продолжительность файла в секундах
WindowsMediaPlayer1.currentMedia.durationString 'продолжительность файла в минутах
WindowsMediaPlayer1.currentPlaylist.Count 'количество песен/дорожек в плэйлисте
WindowsMediaPlayer1.Status ' у меня показывает скорость проигрывания ))
WindowsMediaPlayer1.Controls.Next 'следующая дорожка
WindowsMediaPlayer1.Controls.previous 'предыдущая дорожка
WindowsMediaPlayer1.Controls.currentPositionString 'показывет сколько времени уже проиграл файл
WindowsMediaPlayer1.settings.volume 'показывет какая сейчас громкость
WindowsMediaPlayer1.settings.volume = WindowsMediaPlayer1.settings.volume + 10 'пример увеличения громкости на десяточку
WindowsMediaPlayer1.settings.volume = mute 'выключить громкость
WindowsMediaPlayer1.settings.volume = 0 'выключить громкость, 2ой способ ))
Если узнаете способ сделать повтор и перемешивание, как и в обычном Windows Player,пишите.
Есть еще способ проиграть файл с помощью DirectX, что вроде перекликается с API ? пока не знаю :D
 
S

Shtirlits

#10
Для: Morpheus
Прошу у вас прощеньица,Вы в самом начале были правы, но у меня действительно примеры с других сайтов не работают, пока не взялся писать сам, не пойму в чем дело до сих пор.
Положите на форму контрол Windows Media Player, свойство AutoStart поставьте в True. Теперь для воспроизведения установите в свойство FileName, во время выполнения программы, имя файла для воспроизведения. И все...
оказался действительно самым простым и эфективным, просто вначале меня пугали такие слова как dll, ocx и т.п. так как я ничего в них не смыслю, и до сих пор не знаю где брать информацию о встроенных свойствах и функциях компонента. Object Browser их показывает, но не говорит нам о том ,какая функция, что делает и какое свойство за что отвечает, так, что будьте милосердны, не сердитеся на меня, а ? :)
 

morpheus

скриптописец
07.08.2006
3 915
1
#11
<!--QuoteBegin-Shtirlits+17:01:2008, 13:23 -->
<span class="vbquote">(Shtirlits @ 17:01:2008, 13:23 )</span><!--QuoteEBegin-->примеры с других сайтов не работают, пока не взялся писать сам
[snapback]93934" rel="nofollow" target="_blank[/snapback]​
[/quote]
вот это самое лучшее когда человек начинает понимать что он делает... главное не бояться и начать делать самому :D
я не обижаюсь :)
 
W

WeBsteR

#13
моно и так, но с использованием апи:
Код:
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As Long, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
Dim Temp2 As Long
Dim Temp1 As String
Dim aFile As String
Private Function GetShortName(ByVal fFileName As String) As String
Dim bufTxt As String * 261
Dim RetLen As Long
RetLen = GetShortPathName(fFileName, bufTxt, 260)
GetShortName = Left$(bufTxt, RetLen)
End Function

Private Sub Form_Load()
aFile = "D:\Music\Test.mp3" 'путь к mp3 файлу
aFile = GetShortName(aFile)
Temp1 = "play " & aFile
Temp2 = mciSendString(Temp1, 0, 0, 0)
End Sub
 
S

Shtirlits

#14
угу, ок, пасиб :) , но на примерчик с использованием команды mciSendString, уже давала выше sax_ol , но вдруг та ссылка станет нерабочей, так что лишний примерчик здесь, я думаю, не помешает, ну раз пошла такая кухня, выкладываю еще примерчик с применением API, с использованием функции mciExecute(не за бываем про короткие пути в имени файла и пробелы !!!) для полноты картины:
Код:
'Функция для проигрывания файлов в формате *.mp3
Private Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long

Private Sub Command1_Click()
Call mciExecute("play C:\moi.mp3") 'чтобы воспроизвести файл
End Sub

Private Sub Command2_Click()
Call mciExecute("close C:\moi.mp3") 'чтобы закрыть файл
End Sub
Есть еще функции sndPlaySound и PlaySound для проигрывания wav ,вызываются и объявляются аналогично mciExecute и mciSendString
Ну, кто еще какие нибудь способы знает, как проиграть MP3 в VB(6) ?Да, а как вызвать Windows Media Player и через него проиграть ?( что то связано с shell()).И еще говорят, есть способ проигрывания через DirectX (DirectSound,DirectMusic и т.д.) или рассмотренные примеры выше это оно и есть ?
 
W

WeBsteR

#15
Ну есть ещё такая библиотека функций как fmod. Очень во многих играх используется, можно проигрывать аудио, создавать 3d звук, создавать stream, добавлять различные эффекты, например реверберацию, записывать звук, проигрывать CD, работать с сэмплами, анализировать спектр и многое другое. Скачать можно на официальном сайте: http://www.fmod.org тамже есть хелп, правда на английском
 
S

Shtirlits

#16
Для: sax_ol
Вы простите новичка , но где это "ТАМ" - в лесу ?Если вы имеете в виду MSDN,то еслиб я был с английском на "ты", и хотел провести остаток своей жизни изучением сего трактата, то я бы не задавал здесь эти вопросы
Для: WeBsteR
Но ет уже идут совсем сторонние библиотеки, не так ли?
 
S

Shtirlits

#18
Для: WeBsteR
Ты уже с ней работал?И она рази не платная? И потом просто не хочется здесь разводить обсуждение про использование сторонних библиотек, а только касательно VB, но раз затронули API, то можно и его, тогда главный вопрос бы изменить :) , просто стороних компонентов много, и для этого, я думаю, можно попозже новую тему для обсуждения открыть, также как и запись mp3, с помощью VB и API
 
S

Shtirlits

#19
Для: sax_ol
Согласен:жить вредно, от этого умираешь :) У меня сложилось впечатление, почему то, что ты/вы (как вам/тебе удобнее :) ) девушка,так как девушки очень любят не отвечать на вопросы, а куда то в сторону уходить:
но где это "ТАМ" - в лесу ?
и такой нескромный вопрос - ты програмист или чем другим маешься ?
 
S

Shtirlits

#20
Блин, пятый раз пишу это сообщение, уже начал понимать, даже, что я пишу (свет обрубали :) )
Отправлять гуглить или яндексить, где нуждающися человек уже был , я считаю неккоректным и неправильным, так как человек отправляется на форум надеется получить реальную помощь от людей, у которых есть больший опыт по данному вопросу.насчет моего вопроса
такой нескромный вопрос - ты програмист или чем другим маешься ?
мне интересно, человек который отвечает, что то смыслит в этом вопросе или он от скуки развлекается.Ваша первая ссылочка была просто отличной, и теперь я в растерянности, думал вот, знающий и понимающий человек.А если всех отправлять в гугл, тогда зачем форум нужен? Повесить при входе пяток форм - запросов к поисковикам и делу конец, только тогда ж кому предупреждения ставить будете ? :)
 
Статус
Закрыто для дальнейших ответов.