A adaptação de vídeo para o LaTeX com o ffmpeg não produz o resultado esperado

2

Eu tenho tentado por semanas para incorporar alguns vídeos (criados com python-Matplotlib) na minha apresentação em Latex / Beamer, de acordo com os exemplos como este , que usa um pacote chamado media9 . A compilação de documentos não mostra erros, mas ainda assim não funciona.

Basicamente, ele usa um Flash player no PDF para reproduzir as coisas e, como tal, os vídeos que reproduzem são muito limitados (em termos de codecs suportados, extensões, etc.). Se eu seguir a documentação e converter um vídeo antigo para as especificações corretas, então funciona. No entanto, não consigo fazer funcionar para vídeos que estou criando atualmente e não posso dizer o que está causando essa diferença.

De acordo com a documentação :

Flash Player supports the efficient H.264 codec for video compression. MP4/H.264 video files can be encoded from existing video files and from numbered bitmap sequences using the ffmpeg (http://ffmpeg.org.) or avconv (http://libav.org.) command line tools. In order to allow for precise seeking within video files it is necessary to encode them with a sufficient number of key frames. The command line for recoding an existing video file video.avi into video.mp4 reads

ffmpeg -i video.avi -vf scale="trunc(iw/2)*2:trunc(ih/2)*2" -c:v libx264 -profile:v high -pix_fmt yuv420p -g 30 -r 30 video.mp4

Coisas que eu tentei:

Eu já tentei criar o vídeo do Matplotlib usando ffmpeg com as características corretas ( -pix_fmt yuv420p -g 30 -r 30 , codec=libx264 e .mp4 extension). Isso não funcionou.

Em segundo lugar, tentei criar vídeos com diferentes codificações e extensões e, em seguida, usei a linha acima (fornecida pelo autor do pacote) para convertê-los. Mas isso também não funciona.

Neste ponto, não tenho ideia do que mais fazer. Tanto quanto eu sei, eu estou seguindo todos os pontos necessários colocados pelos documentos, mas aparentemente isso não é verdade e eu não consigo descobrir o que está faltando.

Veja um exemplo de um dos meus vídeos antigos que funcionam com ffmpeg -i (depois de usar o comando acima):

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'convB_C250_txy0.mp4.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf57.83.100
  Duration: 00:00:20.83, start: 0.000000, bitrate: 11867 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1080x840, 11864 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
    Metadata:
      handler_name    : VideoHandler

E agora, um exemplo de vídeo que eu criei recentemente passou pelo mesmo comando, mas isso não funciona:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'convC1_old.mp4.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf57.83.100
  Duration: 00:00:04.13, start: 0.000000, bitrate: 226 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1080x840, 222 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
    Metadata:
      handler_name    : VideoHandler

A única diferença que vejo em ambos é a taxa de bits, que não deve fazer diferença. Mas mesmo assim não consigo corresponder ao bitrate do novo vídeo com o antigo.

Há algo que estou sentindo falta aqui?

    
por TomCho 30.01.2018 / 05:47

0 respostas