Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Apple no reproduce los videos #1740

Open
rauldam opened this issue Mar 7, 2025 · 4 comments
Open

Apple no reproduce los videos #1740

rauldam opened this issue Mar 7, 2025 · 4 comments

Comments

@rauldam
Copy link

rauldam commented Mar 7, 2025

Buenas tardes Pedro,

Mira después de cambiar de dispositivo a uno con Hardware encoders tanto en h264 como en h265 y realizar una serie de test sobre varios live servers tales como youtube, nginx rtmp, mediamtx y odyx, me ocurre un problema que lo veo raro, porque todos los dispositivos Android, Microsoft y Ubuntu son capaces de ver el stream sin problemas es mas lo puedo incluso almacenar en formato mp4 y visualizarlo ondemand, pero los dispositivos Apple no, solo obtengo audio, tanto en iphone como en macs (Intel y gama M), paso por el analizador de medios del video, y me devuelve o bien es un H264 Main profile con level 3.1 o 4.1 (depende de como lo configure) osea me devuelve todo correctamente, ara bien si la misma maquina que hace el stream lo configuro para que use el encoder obligatoriamente via Software, realizo el mismo procediminto stream to nginx rtmp, guardo el video en mp4 y lo visualizo, todos los dispositivos lo reproducen sin ningun tipo de problema tanto apple como microsoft, android y ubuntu (usando la misma configuración que en Hardware, la unica diferencia cuando lo paso por el analizador de video este me devuelve que es un Baseline Constrained Profile level 3.1 H264, eso intuyo porque el encoder hardware esta mas limitado y solo tiene ese perfil) pero lo dicho lo reproduce sin problemas, y era pues a ver si te ha pasado a ti o alguien mas ha comentado algo.. porque es algo muy extraño.

Gracias.

@pedroSG94
Copy link
Owner

Hola,

Me puedes pasar un fichero de ejemplo que no te funcione y los parámetros usando para configurar la app para obtenerlo?

@rauldam
Copy link
Author

rauldam commented Mar 11, 2025

Buenas tardes Pedro, por supuesto mira, aqui te dejo todo, estoy creando así:

val genericStream: RtmpStream by lazy {
RtmpStream(applicationContext, this, Camera2Source(applicationContext),MicrophoneSource(MediaRecorder.AudioSource.VOICE_PERFORMANCE)).apply {
setVideoCodec(VideoCodec.H264)
setAudioCodec(AudioCodec.AAC)
getGlInterface().autoHandleOrientation = true
getStreamClient().setCheckServerAlive(true)
setTimestampMode(TimestampMode.BUFFER,TimestampMode.BUFFER)
val audio = (audioSource as MicrophoneSource)
audio.microphoneVolume = 0.01f

    }
}

Como parametros los siguietnes:

val width = 1920
val height = 1080
val vBitrate = 7500 * 1000
private var rotation = 0
private val sampleRate = 48000
private val isStereo = false
private val aBitrate = 64000

y el prepare de la siguiente forma:

genericStream.forceCodecType(CodecUtil.CodecType.HARDWARE, CodecUtil.CodecType.FIRST_COMPATIBLE_FOUND)
genericStream.prepareVideo(width, height, vBitrate, 30, 1,rotation, MediaCodecInfo.CodecProfileLevel.AVCProfileMain, MediaCodecInfo.CodecProfileLevel.AVCLevel41) && genericStream.prepareAudio(sampleRate, isStereo, aBitrate, true, true)

Me selecciona el siguiente encoder:

Name: c2.rk.avc.encoder
Type: video/avc
Max instances: 32
----- Encoder info -----
Complexity range: 0 - 0
Quality range: 0 - 0
CBR supported: false
VBR supported: true
CQ supported: false


----- Video info -----
Supported colors:
2130708361
2135033992
19
21
20
39
Profile: 1, level: 32768
Profile: 2, level: 32768
Profile: 8, level: 32768
Bitrate range: 1 - 40000000
Frame rate range: 0 - 960
Width range: 144 - 7680

Estoy atacando un nginx RTMP, aqui te dejo el enlace del video que acabo de grabar
Formato MP4: https://justet.es/record/orangepi-11-Mar-25-15:46:56.mp4 (este es obteniendo en server usando ffmpeg haciendo basicamente un ffmpeg -i input.flv -c copy -a copy -movflags +faststart output.mp4)
Formato FLV: https://justet.es/record/orangepi-11-Mar-25-15:46:56.flv (el que envíamos directamente desde rootencoder)

Como podrás observar tanto en windows, linux y android (tanto navegador como reproductor) funciona perfectamente, pero en dispositivos apple solo hay audio tanto iOS como Mac)

Si lanzo a Youtube tanto en H265, como en H264 funciona perfectamente.

Si necesitas cualquier cosa mas para analizar me dices!
PD: El link tiene 24 horas de vida solamente

@pedroSG94
Copy link
Owner

Hola,

Por lo que puedo ver es un problema con la decodificación por hardware en macOS y iOS. Si la desactivas en VLC ambos videos se reproducen correctamente.
Ajustes > Entrada / codecs (agranda la ventana a lo ancho que quizás está oculto a la derecha) > deshabilita decodificación por hardware
Por lo que he visto si grabas con rootencoder directamente en vez de streamear si que funciona. Confirma eso en tu caso y si funciona podemos ver posibles soluciones. Una de ellas puede ser cambiar el comando ffmpeg para arreglarlo.

También deberias confirmar que si usas ffmpeg para stremear con un fichero a tu nginx el flv resultante funcione.

@rauldam
Copy link
Author

rauldam commented Mar 11, 2025

Buenas Pedro, voy hacer la prueba de la grabación voy a editar la app para añadir el boton de grabación y grabar y pruebo a reproducir en el mac y en el iphone.

Respecto a que si hago stream dsde ffmpeg, si que funciona, osea es como hemos funcionado hasta ahora, usando ffmpeg recoger el flujo de rtsp y stream rtmp y sin problemas en todos los dispositivos, y desde OBS también hemos probado y sin problemas.

Si hago un ffmpeg -i entrada.flv -vcodec libx264.... output.mp4 si que funciona el video, pero claro me rehace todo el video volviendolo a codificar etc etc, gastando muchos recursos sobretodo en videos que suelen ser de 90 min, por varios a la vez.

Te dejo aqui un enlace de un video que hay de hoy en el server grabado dsd ffmpeg: https://justet.es/record/info%2540padel-ux.com-11-Mar-25-12:30:28.mp4

EDIT

Acabo de realizar una grabación interna y sin problema, lo reproduce en cualquier lado, tanto android, iphone, linux, windows y mac sin problemas asi que es el stream solamente, te adjunto el video que he grabado en local.

20250311_170736.mp4

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants