ffmpeg: como criar um vídeo h.264 entrelaçado?

1

Eu gostaria de converter um vídeo de entrada não entrelaçado de alta qualidade em um formato H.264 / MP4 de menor qualidade, mas mais distribuível. A saída deve ter algumas restrições - em particular: deve ser entrelaçada !

Eu tentei o seguinte comando, onde mandelbrot é um sinônimo para a entrada de alta qualidade:

ffmpeg -hide_banner \
    -t 10 -y \
    -f lavfi \
    -i anullsrc=r=48k:cl=stereo \
    -f lavfi \
    -i mandelbrot=r=50:size=1920x1080 \
    -vf 'interlace=scan=tff:lowpass=complex,format=yuv420p' \
    -codec:a aac \
    -b:a 128k \
    -aac_coder twoloop \
    -codec:v libx264 \
    -preset veryfast \
    -tune animation \
    -profile:v high \
    -crf 35 \
    -level 5.2 \
    -x264opts interlaced=1 \
    -shortest \
    mandelbrot.mp4

Meu ffmpeg é ffmpeg version 3.4.2-2 .

No entanto, não tenho certeza se a linha de comando está correta.

  • libx264 não detecta uma entrada entrelaçada por si só. Eu tenho que inserir -x264opts interlaced=1 .
  • Outros faqs dizem algo sobre -flags +ilme+ildct ...

Você pode confirmar meus parâmetros? Muito obrigado.

    
por Thomas R. 30.07.2018 / 12:15

2 respostas

1

x264 via ffmpeg pode definir o modo entrelaçado de duas maneiras:

1) via param particular, por exemplo, -x264opts (ou -x264-params ) interlaced=1

2) ou via flag genérico libavcodec, -flags +ildct

    
por 30.07.2018 / 14:48
0

Finalmente consegui excelentes resultados com

ffmpeg \
 -y \
 -hide_banner \
 -i "${INPUT_FILE}" \
 \
 [... audio ...]\
 \
 -vf tinterlace=interleave_top,fieldorder=tff \
 -crf 28 \
 -preset placebo \
 [... more video ...]\
 -codec:v libx264 \
 \
 -f mp4 \
 -flags +ildct+ilme \
 [... more muxing ...]\
 \
 "${OUTPUT_FILE}"
    
por 26.09.2018 / 18:45