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