elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  seek bar para reproductor de audio
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: seek bar para reproductor de audio  (Leído 8,344 veces)
CH4ØZ

Desconectado Desconectado

Mensajes: 108



Ver Perfil
seek bar para reproductor de audio
« en: 30 Septiembre 2009, 00:47 am »

hola les comento que estoy haciendo un reproductor de audio utilizando Windows Media Player (WMP) ya que me provee de visualizaciones y es mas facil de usar, pero los botones, comandos, etc. los diseño yo y al diseñar la seek bar con un slider no encontre la forma de conectarla al WMP :S
Mi idea era hacer una seek bar como la del reproductor, es decir si uno hace click en X lugar la cancion se adelante hasta el mismo y que avanze a medida q el tema se reproduce, gracias.


En línea

no me juzguen si no me conocen
seba123neo
Moderador
***
Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: seek bar para reproductor de audio
« Respuesta #1 en: 30 Septiembre 2009, 01:27 am »

Hola , tenes que enganchar la propiedad .Value del slider con la propiedad .Controls.currentPosition del windows media, aca te dejo un codigo asi nomas lo hice fijate si te sirve:

Código
  1. Private Sub Slider1_Change()
  2.    WindowsMediaPlayer1.Controls.currentPosition = Slider1.Value
  3. End Sub
  4.  
  5. Private Sub Slider1_Scroll()
  6.    Call Slider1_Change
  7. End Sub
  8.  
  9. Private Sub WindowsMediaPlayer1_OpenStateChange(ByVal NewState As Long)
  10.    Slider1.Min = 0
  11.    Slider1.Max = WindowsMediaPlayer1.currentMedia.duration
  12. End Sub

el slider cambia los valores segun la duraccion total del video y si moves el slider te mueve el video..

saludos.



En línea

CH4ØZ

Desconectado Desconectado

Mensajes: 108



Ver Perfil
Re: seek bar para reproductor de audio
« Respuesta #2 en: 30 Septiembre 2009, 01:39 am »

primero q nada gracias por la respuesta porque me sirvio
pero no entiendo por que salta un error "Variable de tipo Object o la variale del bloque With no está establecida"

Código
  1. Slider1.Max = WindowsMediaPlayer1.currentMedia.duration

el error aparece cuando yo cargo el archivo de musica.
podria ser que el error sea producido ya que este evento ocurre antes que el archivo este completamente cargado???

« Última modificación: 30 Septiembre 2009, 01:44 am por the_chaoz » En línea

no me juzguen si no me conocen
seba123neo
Moderador
***
Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: seek bar para reproductor de audio
« Respuesta #3 en: 30 Septiembre 2009, 01:54 am »

pone el codigo que tenes para ver lo que estas haciendo...como lo cargas y demas..
En línea

CH4ØZ

Desconectado Desconectado

Mensajes: 108



Ver Perfil
Re: seek bar para reproductor de audio
« Respuesta #4 en: 30 Septiembre 2009, 02:32 am »

Código
  1. Dim var As Integer
  2. Dim vol As Integer
  3.  
  4. Private Sub Form_load()
  5.  
  6. Me.Caption = "Chaoz Player"
  7. WMP.uiMode = "none"
  8. MV.ForeColor = &HE0E0E0
  9. MV.BackColor = &HE0E0E0
  10. WMP.settings.volume = 100
  11.  
  12. End Sub
  13.  
  14. Private Sub Image1_Click()
  15.  
  16. If Image1.BorderStyle = 0 Then
  17. Image1.BorderStyle = 1
  18. End If
  19.  
  20. WMP.Controls.previous
  21. WMP.Controls.play
  22.  
  23. Timer1.Enabled = True
  24.  
  25. End Sub
  26.  
  27. Private Sub Image10_Click()
  28.  
  29. If Image10.BorderStyle = 0 Then
  30. Image10.BorderStyle = 1
  31. End If
  32.  
  33. WMP.settings.volume = vol
  34.  
  35. Timer1.Enabled = True
  36.  
  37. End Sub
  38.  
  39. Private Sub Image11_Click()
  40.  
  41. If Image11.BorderStyle = 0 Then
  42. Image11.BorderStyle = 1
  43. End If
  44.  
  45. WMP.fullScreen = True
  46.  
  47. Timer1.Enabled = True
  48.  
  49. End Sub
  50.  
  51. Private Sub Image2_Click()
  52.  
  53. If Image2.BorderStyle = 0 Then
  54. Image2.BorderStyle = 1
  55. End If
  56.  
  57. WMP.Controls.play
  58.  
  59. Timer1.Enabled = True
  60.  
  61. End Sub
  62.  
  63. Private Sub Image3_Click()
  64.  
  65. If Image3.BorderStyle = 0 Then
  66. Image3.BorderStyle = 1
  67. End If
  68.  
  69. WMP.Controls.Next
  70.  
  71. Timer1.Enabled = True
  72.  
  73. End Sub
  74.  
  75. Private Sub Image4_Click()
  76.  
  77. If Image4.BorderStyle = 0 Then
  78. Image4.BorderStyle = 1
  79. End If
  80.  
  81. WMP.Controls.stop
  82.  
  83. Timer1.Enabled = True
  84.  
  85. End Sub
  86.  
  87. Private Sub Image5_Click()
  88.  
  89. If Image5.BorderStyle = 0 Then
  90. Image5.BorderStyle = 1
  91. End If
  92.  
  93. On Error Resume Next
  94. CommonDialog1.Filter = "Todos los Archivos|*.mp3;*.mid;*.wav| Archivos MP3 (*.mp3)|*.mp3| Archivos MIDI (*.mid)|*.mid| Archivos de audio de Windows (*.wav)|*.wav"
  95. CommonDialog1.ShowOpen
  96.  
  97. WMP.URL = CommonDialog1.FileName
  98.  
  99. WMP.Controls.stop
  100.  
  101. Label1.Caption = CommonDialog1.FileTitle
  102.  
  103. End Sub
  104.  
  105. Private Sub Image6_Click()
  106.  
  107. If Image6.BorderStyle = 0 Then
  108. Image6.BorderStyle = 1
  109. End If
  110.  
  111. WMP.Controls.pause
  112.  
  113. Timer1.Enabled = True
  114.  
  115. End Sub
  116.  
  117. Private Sub Image7_Click()
  118.  
  119. If Image7.BorderStyle = 0 Then
  120. Image7.BorderStyle = 1
  121. End If
  122.  
  123. Timer1.Enabled = True
  124.  
  125. End Sub
  126.  
  127. Private Sub Image7_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  128.  
  129. If Image7.BorderStyle = 0 Then
  130. Image7.BorderStyle = 1
  131. End If
  132.  
  133. WMP.Controls.fastForward
  134.  
  135. End Sub
  136.  
  137. Private Sub Image7_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
  138.  
  139. WMP.Controls.play
  140.  
  141. End Sub
  142.  
  143. Private Sub Image8_Click()
  144.  
  145. If Image8.BorderStyle = 0 Then
  146. Image8.BorderStyle = 1
  147. End If
  148.  
  149. Timer1.Enabled = True
  150.  
  151. End Sub
  152.  
  153. Private Sub Image8_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  154.  
  155. If Image8.BorderStyle = 0 Then
  156. Image8.BorderStyle = 1
  157. End If
  158.  
  159. WMP.Controls.fastReverse
  160.  
  161. End Sub
  162.  
  163. Private Sub Image8_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
  164.  
  165. WMP.Controls.play
  166.  
  167. End Sub
  168.  
  169. Private Sub Image9_Click()
  170.  
  171. If Image9.BorderStyle = 0 Then
  172. Image9.BorderStyle = 1
  173. End If
  174.  
  175. vol = WMP.settings.volume
  176. WMP.settings.volume = 0
  177.  
  178. Timer1.Enabled = True
  179.  
  180. End Sub
  181.  
  182. Private Sub MV_ValueChanged()
  183.  
  184. MV.Value = vol
  185. WMP.settings.volume = MV.Value
  186.  
  187. End Sub
  188.  
  189. Private Sub Timer1_Timer()
  190.  
  191. If Image1.BorderStyle = 1 Then
  192. Image1.BorderStyle = 0
  193. End If
  194.  
  195. If Image2.BorderStyle = 1 Then
  196. Image2.BorderStyle = 0
  197. End If
  198.  
  199. If Image3.BorderStyle = 1 Then
  200. Image3.BorderStyle = 0
  201. End If
  202.  
  203. If Image4.BorderStyle = 1 Then
  204. Image4.BorderStyle = 0
  205. End If
  206.  
  207. If Image5.BorderStyle = 1 Then
  208. Image5.BorderStyle = 0
  209. End If
  210.  
  211. If Image6.BorderStyle = 1 Then
  212. Image6.BorderStyle = 0
  213. End If
  214.  
  215. If Image7.BorderStyle = 1 Then
  216. Image7.BorderStyle = 0
  217. End If
  218.  
  219. If Image8.BorderStyle = 1 Then
  220. Image8.BorderStyle = 0
  221. End If
  222.  
  223. If Image9.BorderStyle = 1 Then
  224. Image9.BorderStyle = 0
  225. End If
  226.  
  227. If Image10.BorderStyle = 1 Then
  228. Image10.BorderStyle = 0
  229. End If
  230.  
  231. If Image11.BorderStyle = 1 Then
  232. Image11.BorderStyle = 0
  233. End If
  234.  
  235. Timer1.Enabled = False
  236.  
  237.  
  238. End Sub
  239.  
  240. Private Sub Timer2_Timer()
  241.  
  242. If Label1.Left = -4500 Then
  243. Label1.Left = 3000
  244. Else
  245.    If Not Label1.Caption = "" Then
  246.    Label1.Left = Label1.Left - 10
  247.    End If
  248. End If
  249.  
  250. If WMP.settings.volume = 0 Then
  251. Image10.Visible = True
  252. Image9.Visible = False
  253. Else
  254. Image10.Visible = False
  255. Image9.Visible = True
  256. End If
  257.  
  258. End Sub
  259.  
  260. Private Sub Slider_Change()
  261.  
  262. WMP.Controls.currentPosition = Slider.Value
  263.  
  264. End Sub
  265.  
  266. Private Sub Slider_Scroll()
  267.  
  268. Call Slider_Change
  269.  
  270. End Sub
  271.  
  272. Private Sub WMP_OpenStateChange(ByVal NewState As Long)
  273.  
  274. Slider.Min = 0
  275.  
  276. Slider.Max = WMP.currentMedia.duration
  277.  
  278. End Sub
  279.  
  280.  

WMP = WindowsMediaPlayer1
Slider= Slider1

y perdon si hay cosas que esten hechas de una forma por ahi ineficiente o desprolija pero fue la forma mediante la cual logre hacer lo que queria.

PD: se aceptan sujerencias para mejorar el codigo

PD2: lo que pense que podia causar el error (comentario anterior) no es xq cambie de lugar la sentencia, para que se iniciara mucho despues de cargado el archivo y sigue sucediendo lo mismo.
« Última modificación: 30 Septiembre 2009, 02:43 am por the_chaoz » En línea

no me juzguen si no me conocen
seba123neo
Moderador
***
Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: seek bar para reproductor de audio
« Respuesta #5 en: 30 Septiembre 2009, 03:42 am »

el codigo se puede acortar muchismo usando matriz de controles de imagenes para los controles....pregunta ¿ a vos te anda reproducir un mp3 ? porque a mi no me anda y tira el error que comentas, pero si cargo un video o un .wav que no sea mp3 me anda bien, no puedo reproducir mp3 con el windows media dice que me falta un codec...

saludos.
En línea

CH4ØZ

Desconectado Desconectado

Mensajes: 108



Ver Perfil
Re: seek bar para reproductor de audio
« Respuesta #6 en: 30 Septiembre 2009, 05:21 am »

sisi, si yo a ese codigo le saco todo esto:
Código
  1. Slider.Max = WMP.currentMedia.duration
me anda perfecto
pero no entendi eso de acortar el codigo usando matrizes de los controles
En línea

no me juzguen si no me conocen
BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: seek bar para reproductor de audio
« Respuesta #7 en: 30 Septiembre 2009, 05:38 am »

sisi, si yo a ese codigo le saco todo esto:
Código
  1. Slider.Max = WMP.currentMedia.duration
me anda perfecto
pero no entendi eso de acortar el codigo usando matrizes de los controles


las matrices de controles son controles con el mismo NOMBRe pero con un identificadar unico llamado index de tipo entero

un ejemplo es este

1.- Crea un control X (que no sea linea u otro no tienen dichas opciones)
2.- Copea ese control con el comando copiar y pegalo nuevamente, te aparece un mensaje que te dice si deseas crear una serie de controles tipo matriz responde que si
    Alternativa, un poco mas laboriosa: puede dibujar otro control, hubica en propiedades la propiedad index y ponle un Cero 0 y en el otro control ponle 1 y cambiale su nombre al del control con matriz Cero
3.- entra en el codigo fuente de uno de los dos controles, es decir dale doble click a uno de los dos para ir al proceso determinado, escribe lo siguiente:

Código
  1.  
  2. Select case index
  3. case 0
  4.  msgbox "Objecto con matriz Cero"
  5. case 1
  6.  inputbox "Holaaaaa matriz uno","Holaaaaa matriz uno","Holaaaaa matriz uno"
  7. case 2
  8.  debug.printf "Holaaaaa matriz dos"
  9. etc
  10. case else
  11.  msgbox "Este mensaje JAmas deberia aparecer almenos que se modifique la cantidad de controles con matriz y este sea mayor a 3 objetos"
  12. end select ' No recuerdo si si es end select con esto que me meti a C++ ya no recuerdo bien xP
  13.  
  14.  

los objetos con arreglo, matriz... que al dado caso tienen un mismo nombre pero diferente indexaciòn (index) comparten el mismo PROCESO y por obvias razones el mismo NOMBRE y deben ser del MISMO TIPO es decir matriz de textbox, command buton o inclusive clases (que al dado caso todo control seria una clase).

La particularidad de los procesos con matriz es que tienen una opcion o variante llamada index de tipo entero y los otro NO

Ejemplo:

Código
  1.  
  2. ' proceso de un objeto SIN MATRIZ
  3. private sub text1_click()
  4. end sub
  5. 'proceso de un objeto Matrizado, TODOS los objetos con el mismo nombre usaran este proceso y cada objeto serà identificado por index
  6. private sub text1_click(index as integer)
  7. end sub
  8.  
  9.  

P.D.: No tenia nada que hacer asi que me parecio buena idea explicarte esto xP

Dulces Lunas!¡.
En línea

The Dark Shadow is my passion.
CH4ØZ

Desconectado Desconectado

Mensajes: 108



Ver Perfil
Re: seek bar para reproductor de audio
« Respuesta #8 en: 30 Septiembre 2009, 05:44 am »

gracias x la respuesta voy a tratar de aplicarla a ese codigo
pregunta:
las matrices hacen que el programa use menos recursos, corra mas rapido o algo asi, o simplemente es para simplificar el codigo???
En línea

no me juzguen si no me conocen
BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: seek bar para reproductor de audio
« Respuesta #9 en: 30 Septiembre 2009, 06:13 am »

gracias x la respuesta voy a tratar de aplicarla a ese codigo
pregunta:
las matrices hacen que el programa use menos recursos, corra mas rapido o algo asi, o simplemente es para simplificar el codigo???

Solopor mencionarte algo que se me paso:

Las matrizes son contigus y los controles independientes No
Es decir contiguas en memoria una tras otra
El usar matrices Disminuye las lineas de programaciòn y algo que debe tener el programador en cuenta es que menor sea la cantidad de lineas mucho mejor
El usarmatrices disminuye el peso del programa final y por consiguiente usa menos memoria por si solo (Exepto cuando carga archivos externos a el ejecutable final como por ejemplo juegos como el Need for speed que carga los objetos como archivos de musica de archivos externos a el exe del juego)

En rendimiento si hay algo pero en tu programa esto la verdad no importa ya que tu programa es solo una manejador del windows media player el cual realisa todo el trabajo, en otros aspectos si mejora todo

P.D. usa MCISendString, MCIExecute  o MCICommand para reproducir multimedios

Ejemplo SUPER Basico:

Código
  1. mcisendstring("play c:\musica.mp3",0,0,0)
  2.  

Se puede usar un alias para manipular el multimedio pero es cosa que desees usar el mci en lugar del WMP

MciSendStringm MCIcommand y MCIExecute  son APIS de windows como Optativa mciGetErrorString

Dulces Lunas!¡.
« Última modificación: 30 Septiembre 2009, 06:18 am por BlackZeroX » En línea

The Dark Shadow is my passion.
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Reproductor de audio [Consulta]
Desarrollo Web
Shamaroot 2 2,446 Último mensaje 30 Enero 2012, 20:55 pm
por Shamaroot
Actualizar audio reproductor DVD integrado en TV OKI?
Multimedia
nichihack 3 6,930 Último mensaje 7 Abril 2013, 11:31 am
por Songoku
BZR Player, el reproductor de audio para Windows que más formatos soporta
Noticias
wolfbcn 2 1,611 Último mensaje 16 Julio 2013, 04:29 am
por Luna71c0
reproductor de audio mp3 en java y imagenes gif que se paran al hacer stop o pau
Java
XhanaX 0 2,028 Último mensaje 22 Mayo 2016, 18:39 pm
por XhanaX
Reproductor web de audio en flash
Multimedia
r32 0 2,230 Último mensaje 11 Mayo 2019, 16:00 pm
por r32
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines