¿hay alguna manera de cambiar el tamaño del búfer predeterminado en la transmisión MediaPlayer
?cambiar el tamaño del búfer en MediaPlayer
Respuesta
El tamaño de la memoria intermedia está copiado en el firmware. Todo lo que puede hacer es controlar cuánto se llena el búfer, e incluso eso es solo en porcentajes.
¡Lo siento!
El problema aparece cuando se transmite contenido en vivo, por ejemplo: radio por Internet en vivo. Como contenido en vivo no puedo calcular nada porque la longitud de la pista es infinita y los métodos onBuffering en MediaPlayer nunca se llaman.
Mi intención es establecer un búfer en función del factor de velocidad de bits para optimizar los recursos y aumentarlo para evitar las desconexiones 3G. Bueno, realmente no puedo evitar las desconexiones 3G, pero quiero decir que puedo hacer que esta conexión sea más larga para mantener la transmisión más activa para el usuario final.
Así que creo que puedo codificar un proxy Java para conectarme a contenido en vivo y establecer mi propio tamaño de búfer dependiendo de la tasa de bits, luego pasar este proxy como url en MediaPlayer y reproducir el contenido.
Pero antes de comenzar a codificar esto, quiero saber si hay otro método u otro truco mejor que pueda aplicar a MediaPlayer para resolver este problema.
Hola Josh, ¿cómo resolviste el problema, usaste un proxy de transmisión? – burakk
Esto puede ser no del todo relevantes para su problema específico, pero tal vez alguien más se verá favorecido por la siguiente:
Sólo necesito saber el tamaño de la memoria intermedia está. Supongo que es una cantidad fija de bytes, en lugar de una cantidad fija de tiempo de reproducción.
Para obtener una estimación del tamaño del búfer de audio/video, puede implementar un OnBufferingUpdateListener para detectar cuándo el búfer está completamente lleno y usar TrafficStats para determinar cuántos bytes ha consumido su transmisión entre el inicio del flujo y el búfer llenándose Esto debería ser un indicador del tamaño de la memoria intermedia utiliza MediaPlayer ...
¿no es triste que tengamos que recurrir a esta basura para realizar tareas básicas? – StackOverflowed
buen consejo, gracias. votacion – sandalone
El tamaño se establece en marcos/base/media/libstagefright/include/NuCachedSource2.h
kDefaultHighWaterThreshold y kDefaultLowWaterThreshold subió entre Android 2.3.7 y Android 4.0.4 el tamaño del búfer creció por el factor 8, como se indica en este hilo Android - MediaPlayer Buffer Size in ICS 4.0
Se necesitaría una ROM personalizada.
Android 2.3.7
enum {
kPageSize = 65536,
kHighWaterThreshold = 5 * 1024 * 1024,
kLowWaterThreshold = 512 * 1024,
// Read data after a 15 sec timeout whether we're actively
// fetching or not.
kKeepAliveIntervalUs = 15000000,
};
Android 4.0.4
enum {
kPageSize = 65536,
kDefaultHighWaterThreshold = 20 * 1024 * 1024,
kDefaultLowWaterThreshold = 4 * 1024 * 1024,
// Read data after a 15 sec timeout whether we're actively
// fetching or not.
kDefaultKeepAliveIntervalUs = 15000000,
};
Si importa este tema, entonces tal vez usted está interesado en el informe de error https://code.google.com/p/android/issues/detail?id=29870
- 1. Android - Tamaño del búfer de MediaPlayer en ICS 4.0
- 2. Cómo cambiar el tamaño del búfer de E/S kernel
- 3. Cómo cambiar el tamaño del búfer con boost :: iostreams?
- 4. Tamaño del búfer en el servicio WCF
- 5. ¿Cuál es el tamaño del búfer en BufferedReader?
- 6. Cálculo del tamaño de un sprintf() búfer
- 7. ASP.NET MVC 4 WebAPI (beta): cómo cambiar el tamaño máximo del búfer de respuesta
- 8. pasando el búfer char a las funciones y obteniendo el tamaño del búfer
- 9. Tamaño máximo del búfer del zócalo del iPhone
- 10. cambiar el tamaño del texto (tamaño de fuente) al cambiar el tamaño de la ventana?
- 11. Cómo expandir el tamaño del búfer de entrada de pyserial
- 12. Android: Cómo cambiar el tamaño del RadioButton
- 13. Desactivar ventana del navegador Cambiar el tamaño
- 14. Cambiar el tamaño del elemento div
- 15. Javascript: ¿cómo cambiar el tamaño del marco?
- 16. Cómo cargar archivos en el búfer y cambiar al búfer en el inicio en Emacs
- 17. jScrollPane cambiar el tamaño
- 18. Cómo configuro el tamaño del búfer y el tamaño máximo del mensaje en la API web de ASP.NET
- 19. jqplot cambiar el tamaño de la tabla al cambiar el tamaño del navegador
- 20. Obtener ListBox para cambiar el tamaño con la ventana, pero no cambiar el tamaño del contenido
- 21. Android USB Host API: Transferencia mayor tamaño del búfer
- 22. impulso dinámicamente tamaño asio :: :: búfer
- 23. ¿Cómo cambiar el tamaño del botón del archivo de entrada?
- 24. Configuración del mensaje máximo y el tamaño del búfer para WCF webhttp
- 25. cambiar dinámicamente el tamaño div en función del tamaño de la ventana del navegador
- 26. Cambiar el tamaño del cuadro amarillo en Eclipse y mantenerlo del tamaño
- 27. Tamaño óptimo de lectura del búfer de archivos?
- 28. Cambiar el tamaño del texto en un UIButton
- 29. Cambiar el tamaño de fuente del código en WebStorm IDE
- 30. Cómo cambiar el tamaño del texto de correlación en ggpairs()
No realmente/solo Como vi en el Código de Google, hay un Método 'public booleansetParameter (int key, int value)' que te permite hacer esto si conoces el valor de la clave (los tengo para dispositivos RK).Desafortunadamente no puedo encontrar una forma de llamar a este método (aunque es público), pero lo encontraré, ¡debe haber una forma de hacerlo! – bluewhile
@bluewhile ¿encontró la forma de hacer esto? – w2lame
No, terminé llorando porque perdí varias grandes ofertas solo por la ignorancia de Google. – bluewhile