Gravo algumas horas de vídeo todos os dias, as quais coloco na fila para codificação ffmpeg
. Como uso a veryslow
predefinição x265
, uma única hora de vídeo pode levar até 20 horas ou mais para codificar.
Como meu computador está trabalhando dia e noite, estou me perguntando se ffmpeg
há uma maneira de pausar e retomar a codificação? Estou usando Terminal
para o OS X.
Nesse caso, também posso continuar codificando mesmo após desligar o Terminal e reiniciar o computador? Acho que a sessão do Terminal é restaurada quando você faz login novamente no OS X, pelo menos o histórico do Terminal é.
ffmpeg
para com um erro (decode_band_types: Input buffer exhausted before END element found
ouInvalid NAL unit size
eError writing trailer
/Protocol error
). Talvez esteja relacionado ao salto no tempo, não sei.Não parecia possível em 30 de setembro de 2015 . Eu sugeriria segmentar o arquivo de origem, codificar os segmentos e depois costurar os arquivos resultantes.
Este não é um recurso real de pausa / retomada, mas a divisão fragmentada permitirá que você faça uma pausa na codificação.
Uma visão geral aproximada dos comandos a serem emitidos:
Quebrar o arquivo completo em partes
Isso deve criar file000.mp4, file001.mp4 e assim por diante. Por causa de como o segmentador funciona - ele só corta nos quadros I - esses arquivos não duram exatamente
n
segundos e a parte do vídeo pode não ser reproduzida corretamente, mas os dados estão todos lá e você pode converter cada uma das partes, por exemploVoltar a juntar as partes codificadas
Crie um arquivo de texto e coloque o nome de cada arquivo renderizado como este
E corra
fonte
No Windows, pressionar a tecla "Pausar / Interromper" (a tecla superior direita) fará uma pausa. Enter será retomado.
Se não funcionar, clique na janela do prompt de comando para focar.
fonte
Sugiro que, em vez de pausar, você dê ao processo de codificação a menor prioridade do sistema (também conhecida como " renice "), para que você possa trabalhar diariamente confortavelmente e a codificação ocorrerá em segundo plano com os recursos não utilizados do sistema. Portanto, sua codificação ocorrerá sem interrupções, 24 horas por dia, 7 dias por semana, sem interrupções, sem entrar em conflito com o dia de trabalho
Como o AFAIK OSX não possui o comando pidof, você precisa saber o número do processo ffmpeg (PID)
então, você pode renomear o processo para ocioso segundo plano com
se necessário, você também pode renomear o processo para uma prioridade mais agressiva em primeiro plano
fonte
Suspender o Encadeamento também funciona no Windows, não com o ctrl+ Z, mas no gerenciador de recursos, você também pode continuar lá.
fonte
(Isso para Linux)
Como todos sabem, pressionar 'q' encerra o arquivo de gravação.
O ffplay tem a possibilidade 'p'. Por que ffmpeg não tem a mesma coisa? Talvez porque possa levar à dessincronização entre vídeo e áudio? ...
Eu apenas codifico ffmpeg para x264-aac-mkv com crf (23) e sempre com as mesmas condições de vídeo, 'encerro' (q) as gravações e uno todos os segmentos em um diretório específico, onde este script reside, a 1 arquivo no modo streamcopy com este script bash:
Depois disso, verifico o vídeo mesclado resultante e o colo em outro diretório. Os segmentos são removidos do diretório de mesclagem.
Mas um botão 'Pausar e Continuar' sem problemas seria bem-vindo;)
fonte
Isso é apenas uma ideia, mas se você tiver algum orçamento, seria uma boa ideia atualizar o processador (para Intel de 8a geração) ou, melhor ainda, a placa de vídeo (para NVIDIA GTX 1050 ou superior) para codificar h.265 / HEVC com aceleração de hardware em vez de CPU intensiva
x265
. Sua codificação de vídeo será concluída em muito menos de 20 horas, economizando também custos de eletricidade.fonte