hero3

Modifica del framerate con avconv (ffmpeg)

I filmati della GoPro sono in MP4 con audio AAC.
Non è possibile modificare direttamente il framerate : bisogna prima decomprimere il video in un formato grezzo (RAW), elaborarlo, e ricomprimerlo come si vuole.
Ma quando si lavora con il formato RAW, bisogna anche inserire manualmente i parametri del video, altrimenti avconv restituisce degli errori come:

[IMGUTILS @ 0xbfd9a704] Picture size 0x0 is invalid
[rawvideo @ 0x8e95ec0] Could not find codec parameters (Video: rawvideo, yuv420p)
[rawvideo @ 0x8e95ec0] Estimating duration from bitrate, this may be inaccurate
pipe:: could not find codec parameters

Quindi bisogna inserire nella riga di comando almeno i parametri –pix_fmt, -vcodec, -s.
Per leggere i valori da inserire, si lancia avconv senza un output:

$ avconv -i video.mp4
[...]
Stream #0.0(eng): Video: h264 (High), yuvj420p, 1280x720
[...]

Quindi costruisco il comando che decomprime il video leggendo i valori restituiti:
(non usare questo esempio: potrebbe uscire un file enorme !)

avconv -i video.mp4 -f rawvideo -pix_fmt yuv420p -vcodec rawvideo -s 1280x720 -y output.tmp

Ora è possibile elaborare il video:

# notare il parametro -r prima del file di input: serve a leggere
# il file di input ad una velocità diversa da quella di default.
avconv -r 10 -f rawvideo -pix_fmt yuv420p -s 1280x720 -i output.tmp -y output.mp4
# se necessario, è possibile specificare un framerate anche per l' output:
avconv -r 10 -f rawvideo -pix_fmt yuv420p -s 1280x720 -i output.tmp -r 30 -y output.mp4

Invece di fare le 2 operazioni di decodifica e ricodifica separatamente, è preferibile usare una pipe.
Quindi riprendo i 2 comandi appena visti e li unisco, usando però lo stdout per scrivere e lo stdin per leggere il video RAW:

avconv -i video.mp4 -f rawvideo -pix_fmt yuv420p -vcodec rawvideo -s 1280x720 pipe:1 | \
avconv -r 10 -f rawvideo -pix_fmt yuv420p -s 1280x720 -i pipe:0 -y output.mp4
# è possibile anche non specificare il file descriptor delle pipe:
# avconv riesce da solo a prendere la pipe giusta
avconv -i video.mp4 -f rawvideo -pix_fmt yuv420p -vcodec rawvideo -s 1280x720 pipe: | \
avconv -r 10 -f rawvideo -pix_fmt yuv420p -s 1280x720 -i pipe: -y output.mp4

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...