Grabo unas pocas horas de video todos los días, que puse en cola para codificar ffmpeg
. Utilizo el veryslow
preset con x265
, por lo que una sola hora de video puede tomar hasta 20 horas o más para codificar.
Dado que mi computadora funciona día y noche, me pregunto si ffmpeg
tiene alguna forma de pausar y reanudar la codificación. Estoy usando Terminal
para OS X.
Si es así, ¿puedo continuar codificando incluso después de apagar la Terminal y reiniciar la computadora? Creo que la sesión de Terminal se restaura cuando vuelves a iniciar sesión en OS X, al menos el historial de Terminal lo es.
ffmpeg
se detiene con un error (decode_band_types: Input buffer exhausted before END element found
oInvalid NAL unit size
yError writing trailer
/Protocol error
). Tal vez esté relacionado con el salto en el tiempo, no lo sé.En Windows, al presionar la tecla "Pausa / Interrupción" (la tecla más a la derecha superior) la pausará. Entrar se reanudará.
Si no funciona, haga clic en la ventana del símbolo del sistema para enfocarlo.
fuente
No parecía posible al 30 de septiembre de 2015 . Sugeriría segmentar el archivo fuente, codificar los segmentos y luego unir los archivos resultantes.
Esta no es una verdadera función de pausa / reanudación, pero la división por partes le permitirá tener un descanso de la codificación.
Una descripción general de los comandos para emitir:
Romper el archivo completo en partes
Esto debería crear file000.mp4, file001.mp4 y así sucesivamente. Debido a cómo funciona el segmentador, solo corta en cuadros I, estos archivos no durarán exactamente
n
segundos y la parte de video puede no reproducirse correctamente, pero los datos están ahí y puede convertir cada una de las partes, por ejemploVuelva a unir las partes codificadas
Cree un archivo de texto y ponga el nombre de cada archivo renderizado como este
Y correr
fuente
Supongo que en lugar de pausar, le das al proceso de codificación la menor prioridad del sistema (también conocido como " renice "), para que puedas trabajar diariamente cómodamente y la codificación se realizará en segundo plano con los recursos del sistema no utilizados. Por lo tanto, su codificación se realizará sin interrupciones las 24 horas, los 7 días de la semana, sin interrupciones, sin entrar en conflicto con el trabajo diario.
Como AFAIK OSX carece del comando pidof, debe conocer el número de proceso ffmpeg (PID)
entonces puede cambiar el proceso de inactividad de fondo con
si es necesario, también puede cambiar el proceso a una prioridad de primer plano más agresiva
fuente
Suspender el subproceso también funciona en Windows, no con ctrl+ Z, pero en el administrador de recursos, también puede reanudarlo allí.
fuente
(Esto para Linux)
Como probablemente todos sepan, presionar 'q' finaliza el archivo de grabación.
ffplay tiene la posibilidad 'p'. ¿Por qué ffmpeg no tiene lo mismo? ¿Tal vez porque puede conducir a la desincronización entre video y audio? ...
Simplemente ffmpeg-encode a x264-aac-mkv con crf (23) y siempre con las mismas condiciones de video, 'salgo' (q) las grabaciones y unir todos los segmentos en un directorio específico, donde reside este script, a 1 archivo en modo streamcopy con este script bash:
Después de eso, verifico el video combinado resultante y lo pego en otro directorio. Los segmentos se eliminan del directorio de fusión.
Pero, un botón 'Pausar y reanudar' sin problemas sería bienvenido;)
fuente
Esto es solo una idea, pero si tiene un presupuesto, sería una buena idea actualizar el procesador (a la 8a generación de Intel) o incluso mejor, la tarjeta de video (a NVIDIA GTX 1050 o superior) para que pueda codificar h.265 / HEVC con aceleración de hardware en lugar de uso intensivo de CPU
x265
. Su codificación de video estará terminada en mucho menos de 20 horas, ahorrándole costos de electricidad también.fuente