Estou tentando alterar a taxa de quadros de um vídeo MP4 (é um vídeo GoPro de 120fps, quero reproduzi-lo a 30fps para um efeito de câmera lenta).
Estou usando o avconv para isso:
avconv -i SourceMovie.mp4 -vf setpts=4.0*PTS -r 30 DestMovie.mp4
Isso tecnicamente funciona, mas recodifica o filme. Além de lento, é obviamente um problema de qualidade. Tecnicamente, deve haver uma maneira de definir os fps no cabeçalho do vídeo, como posso mudar isso? (Qualquer ferramenta que não seja o avconv também funcionaria.)
video
avconv
video-conversion
EboMike
fonte
fonte
MP4Box -add source.mp4#video -raw 1 -new test
) e depois salve-o como um MP4 novamente (MP4Box -add test_track1.h264:fps=30 -new dest.mp4
). Você também pode adicionar uma faixa de áudio (via #audio).-single
opção para o primeiro comando.MP4Box -single 1 -raw 1 SourceMovie.mp4
cria apenas um arquivo emSourceMovie_track1.h264
vez de dois.Alterar a taxa de quadros no cabeçalho do vídeo (contêiner) não afeta o fluxo de vídeo (ou fluxo de áudio). A recodificação é a única opção.
Os fluxos de vídeo têm registros de data e hora e, na maioria dos vídeos, os quadros são interdependentes entre si devido à compactação entre quadros. Alguns players podem acelerar e desacelerar o vídeo, mas não por comandos incorporados ou algo assim. Nenhum jogador pode alterar a taxa de quadros em tempo real quando um comando de contêiner solicitar. O arquivo de vídeo ficará fora da especificação (ou seja, não segue os padrões) e 99,9% dos jogadores se recusarão a cumpri-lo. É completamente impossível fazer o que você deseja sem recodificar. Claro que você pode esperar com a recodificação até a última etapa da sua edição.
fonte
Caso sua principal intenção seja reproduzi-lo em câmera lenta, e não manter o arquivo como MP4, você pode usar a ferramenta MKVmerge GUI para remuxá-lo para um contêiner Matroska que pode alterar facilmente a taxa de quadros. Remuxar é muito melhor do que reencodificar, porque apenas altera os metadados, e não o próprio fluxo.
Primeiro você instala o pacote
Então você inicia o MKVmerge GUI. Você será confrontado com uma janela como esta
Basta pressionar o botão Adicionar e selecionar seu arquivo ou até mesmo arrastar e soltar o arquivo na área "Arquivos de entrada". Nesse ponto, você poderá selecionar o fluxo de vídeo em seu vídeo. Você também pode excluir outros fluxos, pois eles atrapalharão de qualquer maneira.
Depois de selecioná-lo, você verá as guias inferiores se tornando ativas:
Mude para "Formatar ações específicas"
Você pode ver que existe um campo "FPS", no qual é possível inserir o valor de quadros por segundo. Parecia que você estava planejando desacelerar as coisas quatro vezes, então cerca de 7 quadros por segundo seria o seu objetivo. Você também pode usar a opção "Esticar por".
Depois disso, você pode alterar o nome do arquivo de saída (se desejar) e pressionar "Iniciar muxing".
O programa será executado e você deverá ter seu arquivo.
fonte
Eu também queria diminuir a velocidade dos meus filmes de 120 FPS para 30 FPS. Eu criei um script que faz isso alterando o andamento do som e modificando o FPS diretamente no contêiner MP4. As seguintes ferramentas são necessárias:
O script usado para a conversão está aqui:
Este script cria uma cópia do MP4 com _slow postfix.
fonte