Vídeos gravados para iPhone são revertidos em sistemas Windows

4

Estou gravando vídeos no iPhone e fazendo o upload deles no meu servidor Linux. Os usuários podem ver esses vídeos no site. Se os usuários estiverem vendo vídeos no mac ou no iDevices, o vídeo parece bem, mas quando os usuários veem esse vídeo nos sistemas Windows, esses vídeos estão sendo rotacionados.

Eu estou supondo que isso é por causa da bandeira de alguns apple no vídeo gravado que os sistemas Windows não são capazes de ler. Posso gravar vídeos de alguma forma para que eles não sejam girados nos sistemas Windows? Ou existe alguma forma de eu poder re-codificar vídeos com orientação de interface apropriada usando o FFmpeg?

Estou aberto ao modo FFmpeg ou iOS.

    
por Saurabh 01.03.2013 / 14:41

1 resposta

6

Você não pode alterar a maneira como a câmera do iOS grava vídeos. Ele define um sinalizador de rotação e, se você quiser que o vídeo seja exibido corretamente no OS X e no Windows (e em outros players), será necessário:

  • Remova o sinalizador de rotação. Agora seu vídeo é paisagem, mas ainda está errado.
  • Codifique novamente o vídeo, girando-o.

Faça o download do ffmpeg (uma versão estática para o seu sistema operacional é boa).

Você precisa do filtro transpose , por exemplo

ffmpeg -i portrait.mov \
-c:v libx264 -filter:v "transpose=1" \
-c:a copy \
-metadata:s:v:0 rotate=0 out.mp4

Algumas observações:

  • Aqui, transpose=1 girará em 90 °. Se o seu vídeo está de cabeça para baixo, você precisa combinar as opções. Você pode usar -filter:v "transpose=2,transpose=2" ou outros. Veja aqui: Como virar um vídeo em 180 ° (vertical / de cabeça para baixo) com FFmpeg?

  • A opção -metadata:s:v:0 rotate=0 garante que os metadados de rotação no primeiro fluxo de vídeo estejam configurados para 0 novamente (era em 90 antes), portanto, seu vídeo agora é exibido bem no OS X e em outros sistemas operacionais.

  • Naturalmente, a transposição irá recodificar o vídeo e você perderá qualidade. Adicione a opção -crf após -c:v libx264 para definir o Fator de taxa constante , que controla a qualidade. Use valores mais baixos para obter melhor qualidade. 23 é, na verdade, o padrão, então você não precisa especificá-lo, mas você pode querer escolher algo tão baixo quanto 18 se o vídeo acabar parecendo ruim, por exemplo, -c:v libx264 -crf 18 .

  • Em alguns casos, você pode querer apenas remover o sinalizador de rotação, mas manter o fluxo de bits do vídeo original intacto. Para fazer isso, substitua -c:v libx264 -filter:v "transpose=1" por -c:v copy .

  • Confira o guia de codificação x264 para saber mais.

por 01.03.2013 / 15:20