6 votos

MPlayer: su sistema es demasiado lento para jugar esto!

Sólo traté de reproducir 1080p de vídeo AVCHD archivo grabado a 60 FPS con mi Sony DSLR en mi Ubuntu 12.04 de la estación de trabajo, y para mi sorpresa MPlayer no fue capaz de reproducir el vídeo sin problemas. He copiado el archivo a un disco duro local.

El vídeo se reproduce más lento de lo que debería y el A-V desync sigue creciendo de manera constante (alrededor de 1 segundo de desync por cada 10 segundos de reproducción). Uno de los 8 hilos de CPU se dispara a 100%.

Me preguntaba si esto es de esperar en mi hardware. Es un poco difícil de creer, teniendo en cuenta que mi T60 portátil reproduce el vídeo bien, así que tengo la sospecha de problemas de software.

Estación de trabajo especificaciones:

  • CPU: procesador Intel Quad Core i7-920 @2.67 GHz
  • GPU: Nvidia GeForce 9600 GSO 512
  • RAM: 8Gb
  • Compiz si funciona bien, aunque he desactivado para esta prueba (no hay mejora en la reproducción de vídeo)
  • El sistema es generalmente la velocidad del rayo y sensible.
  • Jugando un MP4 con h264 1080p corriente a 30 FPS funciona bien.
root@jefe:~# glxinfo | grep direct
direct rendering: Yes

root@jefe:~# glxinfo | grep proveedor
servidor glx proveedor de la cadena: NVIDIA Corporation
cliente glx proveedor de la cadena: NVIDIA Corporation
OpenGL proveedor de la cadena: NVIDIA Corporation


Mplayer salida:

valprj@jefe:~$ mplayer 00006.MTS 
MPlayer svn r34540 (Ubuntu), construido con gcc-4.6 (C) 2000-2012 Equipo MPlayer
mplayer: no se pudo conectar a la toma
mplayer: No existe el fichero o el directorio
No se pudo abrir el soporte LIRC. Usted no será capaz de utilizar su control remoto.

Jugando 00006.MTS.
libavformat versión 53.21.1 (externo)
El desajuste de la cabecera de la versión 53.19.0
TS formato de archivo detectado.
VIDEO H264(pid=4113) A52 AUDIO(pid=4352) SUB Teletexto(pid=4608) PROGRAMA N. 1
FPS parece ser: 59.940060
Cargar subtítulos en ./
==========================================================================
La apertura de decodificador de vídeo: [ffmpeg] FFmpeg del libavcodec códec de familia
libavcodec versión 53.35.0 (externo)
El desajuste de la cabecera de la versión 53.32.2
Selecciona el códec de vídeo: [ffh264] vfm: ffmpeg (FFmpeg H. 264)
==========================================================================
==========================================================================
La apertura de decodificador de audio: [ffmpeg] FFmpeg/libavcodec decodificadores de audio
AUDIO: 48000 Hz, 2 canales, s16le, 256.0 kbit/16.67% (proporción: 32000->192000)
Selecciona el codec de audio: [ffac3] afm: ffmpeg (FFmpeg AC-3)
==========================================================================
AO: [alsa] 48000Hz 2ch s16le (2 bytes por muestra)
Inicio de la reproducción...
No Compatible PixelFormat 61
No Compatible PixelFormat 53
No Compatible PixelFormat 81
La película de Aspecto 1.78:1 - prescaling para corregir el aspecto de la película.
VO: [vdpau] 1920x1080 => 1920x1080 Plana YV12 
R: 6.6 V: 6.1-V: 0.496 ct: -0.017 453/453 96% 10% 0.6% 221 0 


************************************************
 **** Su sistema es demasiado LENTO para jugar este! ****
************************************************

Las posibles razones, problemas, soluciones:
- Los más comunes: rota/buggy _audio_ conductor
 - Intentar -ao sdl o el uso de la OSS, la emulación de ALSA.
 - Experimentar con diferentes valores para la sincronización automática, 30 es un buen comienzo.
- Lenta salida de vídeo
 - Tratar de una manera diferente -vo conductor (-vo help para obtener una lista) o intentar -framedrop!
- CPU lenta
 - No trate de jugar un gran reproductor de DVD/DivX en una CPU lenta! Pruebe algunos de los lavdopts,
 por ejemplo,- vfm ffmpeg -lavdopts lowres=1:rápido:skiploopfilter=todos.
Roto el archivo
 - Pruebe varias combinaciones de nobps -ni-forceidx -mc 0.
- Lento medios de comunicación (NFS/SMB monta, DVD, VCD, etc)
 - Intentar -cache 8192.
- ¿Es usted el uso de la caché de jugar un no-entrelazado archivo AVI?
 - Intentar -nocache.
Leer DOCS/HTML/en/video.html para la optimización de los/speedup consejos.
Si nada de esto te ayuda, leer DOCS/HTML/en/bugreports.html.

R: 7.8 V: 7.2 A-V: 0.602 ct: -0.017 520/520 97% 10% 0.6% 286 0 
[h264 @ 0x7fe0a0468380]ocultar 136 CC, 136 AC, 136 MV errores
R: 17.1 V: 15.6-V: 1.495 ct: -0.017 1022/1022 97% 9% 0.6% 779 0 

Salir... (Dejar De Fumar)


Cosas que he probado

  • Jugando con -vc ffh264vdpau ayudado un poco. El desync relación se convirtió en 1 segundo de desync por 34 segundos de reproducción, y la velocidad del vídeo es casi correcto. El uso de la CPU descendió significativamente (20% más alto de cpu hilo). Sin embargo, todavía se me pone la:

    Su sistema es demasiado LENTO para jugar este!

    mensaje de MPlayer.

  • Jugando con -lavdopts skiploopfilter=all el vídeo se reproduzca correctamente. La CPU se cierne en torno al 93% y Un-V sync se cierne alrededor de 0.263 s


Pregunta

Así que mi pregunta es esta: ¿diría usted que es razonable para mplayer tener esta cantidad de problemas con la reproducción de video que en mi hardware, o la figura que no es un problema de software aquí? Tal vez el driver de nvidia?

Cualquier idea se agradece!

9voto

BuddyLuvve Puntos 51

No estoy seguro si usted sigue necesitando ayuda, pero lo posteo para los futuros usuarios... Creo que el problema que tienes es la que configuración de predeterminada de que mplayer utiliza sólo un núcleo de procesador... Trate de pasar el "-lavdopts hilos = n" opción (donde n es el número de hebras a utilizar).

mplayer -lavdopts threads=4 00006.MTS

3voto

joeytwiddle Puntos 263

TLDR? Asegurarse de que su frecuencia de la CPU gobernador no está siendo alterado por algún demonio o evento de secuencia de comandos (por ejemplo, una secuencia de comandos de administración de energía).

Historia (aburrido)

He tenido este problema en dos diferentes sistemas Ubuntu, especialmente a la hora de reproducir h264/x264 videos. La reproducción de vídeo se ralentiza, mientras que el audio se sigue de forma normal. A veces se capta por sí mismo, pero a veces se tarda más de 30 segundos antes de que eso suceda!

El uso de un gráfico en tiempo real del uso de la CPU, me di cuenta de que el uso de CPU es mucho mayor cuando se produce el problema (al menos como una proporción de la frecuencia de la corriente, de la cual soy por desgracia, no seguimiento).

Una solución temporal es interactuar con MPlayer, provocando que ponerse al día con bastante rapidez, utilizando uno de los métodos siguientes:

  • Cambiar la velocidad de reproducción presionando [ entonces ]
  • Interruptor in/out de la pantalla completa presionando F dos veces
  • Rebobinado y avance de viento pulsando a la Izquierda luego a la Derecha

Pero curiosamente cuando me escribió un guión para enviar las claves de forma automática, la solución no cuajó como se esperaba! Parece real la interacción física con el teclado era necesario...

La causa: el gobernador powersave!

Finalmente, he encontrado que el problema tiene que ver con el gobernador de CPU. Parece que el guión /etc/pm/power.d/cpu_frequency (en mi Ubuntu 12.04) es de forma intermitente ajuste de la frecuencia gobernador powersave, a pesar de que yo permanezca conectado a la alimentación de CA. (Esto puede ser debido a un error de software o de hardware, por ejemplo, un cutre cable de alimentación.)

Poco después (a veces en segundos, a veces minutos) la secuencia de comandos establece que el gobernador de nuevo a ondemand, por lo que puede no ser fácil de detectar esta sucediendo! (Me detecta mediante la adición de algunas de registro en la secuencia de comandos: echo "[$(date)] $0 was run with args $*" >> /tmp/cpu_frequency.log)

Solución temporal (bueno para las pruebas)

Al principio trabajé en torno al problema mediante la ejecución de esta pequeña secuencia de comandos en un terminal mientras ve un vídeo:

while true; do cpufreq-set -c 0 -g performance ; cpufreq-set -c 1 -g performance ; sleep 2; done  

Este script requiere que usted tiene el paquete cpufrequtils instalado: sudo apt-get install cpufrequtils.

Simplemente se asegura de que la CPU va a correr a toda velocidad en todo momento, cumplir cada 2 segundos. (Muy de vez en cuando podría ver de a/V perder la sincronización por un momento, pero luego se coge para arriba.)

Como se puede ver, que el guión fue escrito por dos núcleos. Pero he adaptado esta secuencia de comandos para trabajar para cualquier número de núcleos:

#!/bin/bash
while [[ 1 ]]
do
  for CPUFREQ in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
  do
    [ -f $CPUFREQ ] || continue
    echo -n performance > $CPUFREQ
  done
  sleep 2
done

Esto hace exactamente la misma cosa, y no requiere que el cpufrequtils paquete, pero no es un one-liner.

Solución permanente

En lugar de usar una de esas secuencias de comandos de arriba, por el contrario, podemos hacer la solución más permanente, mediante la desactivación de la secuencia de comandos que está causando problemas.

Una manera de hacerlo es quitar el molesto secuencia de comandos:

sudo rm  /etc/pm/power.d/cpu_frequency

Pero de una forma menos destructiva " sería editar el script. Simplemente añadir dos líneas en algún lugar cerca de la parte superior del archivo:

# <date_here> Disabled by <your_name> to assist mplayer A/V sync
exit 0

Pero cuidado, esta solución permanente significa que la secuencia de comandos no interruptor de ahorro de energía cuando realmente están desconectados de la alimentación de CA, por lo que la batería no dure tanto como de costumbre!

(Aunque en mi sistema, una Asus X453M, en realidad no interruptor de ahorro de energía de forma permanente hasta que la carga de la batería había caído muy bajo, de todos modos.)

Espero que esto ayude. Este problema fue muy frustrante para mí!

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: