Rodar um vídeo com ffmpeg é lento

0

Estou usando o ffmpeg para girar um vídeo em 90 graus para inserir este código

ffmpeg -i in.mp4 -vf "transcode=1" out.mp4

Isso é tão lento quanto a re-codificação. Eu adicionei -c copiar para torná-lo rápido, mas eu tive um erro que duas funções não podem usar ao mesmo tempo.

ffmpeg -i in.mp4 -c copy -vf "transcode=1" out.mp4
    
por makgun 02.07.2015 / 12:53

3 respostas

2

A razão pela qual é lento não é por causa da rotação, é porque você reencode o vídeo.

Quando você não especifica um codec de vídeo de saída, o padrão para mp4 é H.264 (libx264), que, dependendo da resolução e do hardware, pode ser lento.

Eu vejo que você tenta contornar isso especificando "-c copy", mas você não pode: girar o vídeo significa modificá-lo, então não há como copiar o stream H.264. A reencodificação não é uma opção no seu caso.

Você pode tentar com uma das predefinições mais rápidas:

ffmpeg -i in.mp4 -vf "transcode=1" -vcodec libx264 -preset veryfast -acodec copy out.mp4

Mas a qualidade / tamanho do arquivo vai sofrer.

Veja link , há uma resposta interessante sobre como alterar os metadados para que os jogadores podem rodar o vídeo.

    
por 02.07.2015 / 15:01
1

Estou sugerindo rotate em vez de transcode .

ffmpeg -i input_video -vf "rotate=PI/2" output_video

Veja também aqui e here para mais informações.

Espero que isso ajude!

    
por 02.07.2015 / 14:19
1
ffmpeg -i in.mp4 -c copy -metadata:s:v:0 rotate=90 out.mp4

Isso funcionou para mim, mas não funciona em todos os players de vídeo. Mas é tão rápido que outros comandos. Apenas muda a bandeira de rotação. (Nota ângulo especial não pode trabalhar com isso).

    
por 02.07.2015 / 15:42