Pergunta

Eu estou procurando uma maneira de rodar vídeos tiradas com o meu Nexus 4 no meu Debian Wheezy sytem.Os vídeos são filmados em modo retrato, e eu gostaria de girá-los para o modo de paisagem.De preferência, a rotação é acionada por linha de comandos.

Eu encontrei várias perguntas anteriores que estão insinuando uma boa solução, mas eu não consigo gerenciar para começar a trabalhar.

Para começar, havia a esta pergunta:Rotação vídeos com o FFmpeg

Mas indica que o ffmpeg é ultrapassada e que eu deveria usar o avconv.Eu encontrei esta questão, detalhando o caminho para avançar.https://askubuntu.com/questions/269429/how-can-i-rotate-video-by-180-degrees-with-avconv

Isso me fez usando o seguinte comando:

avconv -i original.mp4 -vf "transpose=1" -codec:v libx264 -preset slow -crf 25 -codec:a copy flipped.mp4

No entanto, este é demasiado lento (último teste me levou mais de 6 horas para menos de 3 minutos de filmagens) e não resultar em um filme jogável.Também tenho um erro no log de saída de que os estados Mb Taxa de > nível de limite.

Há um problema aqui com a re-codificação?Devo primeiro re-codificar os vídeos do meu telefone para outro, mais "viável" codificação antes de aplicar as rotações?Ou eu estou faltando outro ponto importante?

Foi útil?

Solução

Se você quiser apenas alterar os metadados, que mediaplayers que considere a bandeira reproduzir o arquivo rodado, tentar algo como:

ffmpeg -i input.mp4 -c copy -metadata:s:v:0 rotate=90 output.mp4

como encontrado em outros lugares, no stackoverflow.

Outras dicas

Rotação=0 fixa o meu problema.Eu comecei a gravação de vídeo no modo de retrato, percebi o meu erro e imediatamente vire meu telefone para o modo de paisagem para continuar a gravação.O meu iphone tinha marcado o vídeo, retrato em todo o vídeo.

ffmpeg -i input.mp4 -c copy -metadata:s:v:0 rotate=0 output.mp4

Fixa-lo.

FFmpeg e programas semelhantes alterar os metadados mesmo com o -map_metadata opção. exiftool pode ler a matriz de rotação e a rotação da bandeira, e desde a versão 10.89 também escrevê-lo como descrito abaixo.

Para obter a verdadeira perdas (incl.metadados) de rotação, eu não conseguia encontrar uma solução, então eu peguei um editor hexadecimal (por exemplo, HxD), e analisadas as rodadas de arquivos de vídeo.

Verdadeiro sem perdas de rotação de MP4:

  • abrir mp4 com editor hexadecimal e pesquise vide para encontrar os metadados da faixa de vídeo
  • algumas linhas acima (para meus arquivos, principalmente, 9, às vezes 12) você deve ver trak...\tkhd
  • entre lá deve ser um @ o sinal (HEX 40)
  • em duas linhas antes de a matriz de rotação é armazenado
  • nenhuma rotação:

    00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    40
    
  • 180°:

    FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    40
    
  • 90° cw:

    00 00 00 00 00 01 00 00 00 00 00 00 FF FF 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    40 
    
  • 90° ccw:

    00 00 00 00 FF FF 00 00 00 00 00 00 00 01 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    40
    

Alterar o arquivo como você precisa dele, e ele deve ser rodado em players com suporte a rotação de bandeira (a maioria dos atuais jogadores).

Caso o seu vídeo contém áudio estéreo, esta é, obviamente, não mudaram, então no caso de você deseja que o som para coincidir com rotação de vídeo (180°), você precisa mudar os canais esquerdo e direito.

Há várias coisas que você já tocou na sua pergunta:

  1. Não há quase nenhuma chance de que você será capaz de capaz de rodar sem reencoding.A exceção a essa regra (codec MJPEG) já foi apontado, mas é improvável que você está usando-o, então, ele vai além do escopo desta questão.Vou mencionar que a razão para esta habilidade é que o JPEG podem ser convertidos através de metadados.Assim, se você vai ser capaz de encontrar um recipiente que tem os metadados de rotação, você vai ser capaz de girar, mas não existem (ou são ampla o suficiente) até agora.
  2. Se ele teve o seu horário para girar e reencode 3 minutos do vídeo, então o problema pode estar em um enorme resolução.E eu quero dizer enorme!Você pode fornecer a saída do avprobe original.mp4 para que possa ser apurada.
  3. Extensão versus FFmpeg debates são muito contraproducente (você pode ver que a quantidade de fud postado aqui já).Basicamente o que aconteceu foi uma divisão do projeto com alguns desenvolvedores indo para um lado e outros de outro, o fato de que o FFmpeg projeto tem conseguido manter o nome é apenas uma obra do acaso e não faz sentido a chamada de um projecto de originais e outro de um garfo.As diferenças entre os projetos, estão, principalmente, no desenvolvimento de estilo e a filosofia.Se você haveria de caracterizar o FFmpeg como o mais Aberto de Origem e a Extensão como mais Software Livre, você não estaria tudo o que de errado.As pessoas racionais esperança de que, eventualmente, os desenvolvedores irão vir a seus sentidos, e talvez não mesclar os projetos, mas colaborar para a maior medida.Quando o Ubuntu saiu originalmente, em cada Debian GNU/Linux bate-papo, havia enormes mensagens ao longo da linha de "o Ubuntu NÃO é a Debian!!!!!!!", mas agora a situação se acalmou e ambos os lados estão muito felizes um com o outro.

Esta resposta é simplesmente um resumo dos comentários fornecidos pelo LordNeckbeard.

Rotação sem codificação

Rotação sem re-codificação não é possível, a menos que:

  • a entrada é MJPEG
  • você girar sobre reprodução

Rodar com codificação usando o correto ffmpeg

Para compreender corretamente as etapas necessárias para isso, deve começar por ler ou, pelo menos, deslizando esta pergunta:

Quais são as diferenças e semelhanças entre o ffmpeg, extensão, e o avconv?

Resumo:o avconv é um fork do ffmpeg, mantenedor do debian escolheu o avconv, você tem que compilar o correto ffmpeg de origem.

O próximo passo seria compilar o correto ffmpeg da fonte como está detalhado aqui:

Guia de compilação do ffmpeg para a Debian

O passo final é usando os comandos encontrados em outros posts:

Como virar um vídeo de 180° (vertical/de cabeça para baixo) com o FFmpeg? ou Rotação vídeos com o FFmpeg

Resumo:ffmpeg -vfilters "girar=90" -i input.mp4 saída.mp4

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top