Problema de desempenho com o FFMPEG no RaspberryPi 3

1

Problema: FFMPEG GPU / Aceleração de hardware não está ativada no RPI. O FFPlay é agitado, irregular e leva quase 100% da CPU.

Descrição: O streaming de vídeo dos arquivos MPEG4 é muito lento (o streaming de vídeo está sendo reproduzido como uma apresentação de slides), além de consumir entre 95% e 97%. O consumo da CPU aumenta com o aumento do tamanho da tela. Outras ferramentas no RPI, como o Webbrowser integrado, mostram os mesmos arquivos MPEG4 lisos, de fato o Webbrowser mostra bem o vídeo de qualidade HD (720p) e com cerca de 30-35% de CPU.

Ambiente: RPI3, FFMPEG. O FFMEG é compilado com o decodificador MMAL habilitado e confirmado. Passos do link "do Johnanath são usados.

Justificativa: O motivo para acelerar o decodificador FFMEG MMAL no RPI 3 é que estamos usando a chamada de vídeo PJSIP. O PJSIP usa o FFMPEG e também é slow s (acreditamos que pelo mesmo motivo o FFMEG é lento) para uma chamada de vídeo.

Configuração e testes: Como comentários de johnathan, habilitei h264_mmal e h264_omx para decodificação e codificação de vídeo, respectivamente, durante a configuração do ffmpeg. Aqui abaixo estão os procedimentos seguidos no rpi3:

  • Download da resolução de 1080p do arquivo de vídeo mp4.
  • Seguiu o procedimento acima para instalar o ffmpeg
  • Executou os seguintes comandos:

    1) ffmpeg -f -i test.mp4 -s 320*240 -c:v h264_omx test_h264_mmal.mp4

    2) ffplay -vcodec h264_mmal test.mp4

    3) ffplay -vcodec h264_mmal test_h264_mmal.mp4 (com resolução diferente, como 320 * 240, 640 * 480)

    4) Defina o valor de gpu_mem para 128 e 256

Abaixo está a configuração no ffmpeg:

$ ffmpeg -decoders | grep h264
ffmpeg version git-2017-05-05-3c085c1 Copyright (c) 2000-2017 the FFmpeg developers
  built with gcc 4.9.2 (Raspbian 4.9.2-10)
  configuration: --prefix=/usr --enable-mmal --enable-omx --enable-omx-rpi --enable-decoder=h264_mmal --enable-decoder=mpeg2_mmal --enable-encoder=h264_omx --enable-encoder=h264_omx --enable-libx264 --enable-nonfree --enable-gpl --enable-avresample --enable-shared --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libzvbi
  libavutil      55. 61.100 / 55. 61.100
  libavcodec     57. 94.101 / 57. 94.101
  libavformat    57. 72.101 / 57. 72.101
  libavdevice    57.  7.100 / 57.  7.100
  libavfilter     6. 88.100 /  6. 88.100
  libavresample   3.  6.  0 /  3.  6.  0
  libswscale      4.  7.101 /  4.  7.101
  libswresample   2.  8.100 /  2.  8.100
  libpostproc    54.  6.100 / 54.  6.100
 VFS..D h264                 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
 V..... h264_mmal            h264 (mmal) (codec h264)
 V....D h264_vdpau           H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (VDPAU acceleration) (codec h264)

Resultados do Teste: Quando o ffplay é usado, vemos a imagem do Vídeo Jittery deslizar uma apresentação de slides com quase 100% da CPU.

Nota: Quando o streaming de vídeo HD no RPI3 usa o navegador padrão e o chrome funciona bem com 30-35% de CPU.

Há mais alguma coisa precisa ser cuidada, ou qualquer ajuda é muito apreciada, pois estou preso a essa questão por mais de uma semana.

    
por user73636 09.05.2017 / 10:33

0 respostas