Tecnologia e non solo

febbraio 14, 2013

FFmpeg workflow.

Filed under: Debian,Dvb,Video — telperion @ 2:38 pm

Registrato un film dalla tv DTT con kaffeine, eliminate code, pubblicità e demuxato con con ProjectX, muxato in mpg con mplex, procediamo alla conversione con i tool di ffmpeg, ffplay e ffmpeg appunto, per archiviarlo in poco spazio e vederlo con calma quando ci pare, nel mio caso con Xbmc.

Verificato che la pellicola aveva artefatti da interlacciamento, applico un filtro di deinterlace e vedo com’è il risultato:
ffplay '/home/mc/rec/El Mariachi, suonatore di chitarra.mpg' -vf "kerndeint"

Scorro con il mouse e/o i tasti sinistra/destra e la visione mi sembra buona.

Ci sono bordi neri da eliminare vediamo come
ffplay '/home/mc/rec/El Mariachi, suonatore di chitarra.mpg' -vf "kerndeint,cropdetect"

che restituirà righe con
[Parsed_cropdetect_1 @ 0x7f71540ec440] x1:25 x2:673 y1:0 y2:567 w:640 h:560 x:30 y:4 pos:339982 pts:68400 t:0.760000 crop=640:560:30:4

Applichiamo il crop e proviamo il risultato con
ffplay '/home/mc/rec/El Mariachi, suonatore di chitarra.mpg' -vf "kerndeint,crop=656:560:24:8"

Elimino ancora 2 pixel in alto
ffplay '/home/mc/rec/El Mariachi, suonatore di chitarra.mpg' -vf "kerndeint,crop=656:558:24:10"

Applico anche un filto di riduzione del rumore video perchè la pellicola è vecchia e rumorosa
ffplay '/home/mc/rec/El Mariachi, suonatore di chitarra.mpg' -vf "kerndeint,crop=656:558:24:10,hqdn3d=3"

Ok siamo a posto, convertiamo ora il tutto in mkv con video x264 e audio aacplus:

ffmpeg -i '/home/mc/rec/El Mariachi, suonatore di chitarra.mpg' -vf "kerndeint,crop=656:558:24:10,hqdn3d=3" -threads 4 -f matroska -acodec libaacplus -ab 64k -ar 48k -b 630k -vcodec libx264 -x264opts subme=6:mixed-refs=0:me=umh:b-adapt=2:psy-rd=0\|0.2:direct=auto:trellis=2:aq-strength=1.2:bframes=5:ref=5:deblock=-1,-1 El\ Mariachi\,\ suonatore\ di\ chitarra.mkv

che produrrà il mkv finale.

ffmpeg version 1.1.2 Copyright (c) 2000-2013 the FFmpeg developers
built on Feb 7 2013 20:34:40 with gcc 4.7 (Debian 4.7.2-5)
configuration: --extra-cflags='-Wall -g -O3 -march=core2 -mtune=core2' --prefix=/usr --enable-libmp3lame --enable-gpl --enable-nonfree --enable-libvorbis --enable-pthreads --enable-libfaac --enable-libxvid --enable-postproc --enable-x11grab --enable-libgsm --enable-libtheora --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-libspeex --enable-nonfree --disable-stripping --enable-libschroedinger --disable-encoder=libschroedinger --enable-version3 --enable-libopenjpeg --enable-libvpx --enable-librtmp --enable-avfilter --enable-frei0r --enable-libopencv --enable-libfreetype --enable-libvo-aacenc --disable-decoder=amrnb --enable-libvo-amrwbenc --enable-libaacplus --enable-libdc1394 --disable-altivec --disable-armv5te --disable-armv6 --disable-vis --enable-filter=delogo --enable-filter=boxblur --enable-filter=frei0r --enable-filter=drawtext --enable-filter=gradfun --disable-ffserver --disable-shared --enable-static
libavutil 52. 13.100 / 52. 13.100
libavcodec 54. 86.100 / 54. 86.100
libavformat 54. 59.106 / 54. 59.106
libavdevice 54. 3.102 / 54. 3.102
libavfilter 3. 32.100 / 3. 32.100
libswscale 2. 1.103 / 2. 1.103
libswresample 0. 17.102 / 0. 17.102
libpostproc 52. 2.100 / 52. 2.100
[mpeg @ 0x1718480] max_analyze_duration 5000000 reached at 5000000
Input #0, mpeg, from '/home/mc/rec/El Mariachi, suonatore di chitarra.mpg':
Duration: 01:16:25.25, start: 0.120000, bitrate: 4108 kb/s
Stream #0:0[0x1e0]: Video: mpeg2video (Main), yuv420p, 704x576 [SAR 16:11 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0:1[0x1c0]: Audio: mp2, 48000 Hz, stereo, s16p, 192 kb/s
Please use -b:a or -b:v, -b is ambiguous
[libx264 @ 0x171ff40] using SAR=16/11
[libx264 @ 0x171ff40] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.1 Cache64
[libx264 @ 0x171ff40] profile High, level 3.0
[libx264 @ 0x171ff40] 264 - core 129 - H.264/MPEG-4 AVC codec - Copyleft 2003-2013 - http://www.videolan.org/x264.html - options: cabac=1 ref=5 deblock=1:-1:-1 analyse=0x3:0x113 me=umh subme=6 psy=1 psy_rd=0.00:0.20 mixed_ref=0 me_range=16 chroma_me=1 trellis=2 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-1 threads=4 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=5 b_pyramid=2 b_adapt=2 b_bias=0 direct=3 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=abr mbtree=1 bitrate=630 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.20
Output #0, matroska, to 'El Mariachi, suonatore di chitarra.mkv':
Metadata:
encoder : Lavf54.59.106
Stream #0:0: Video: h264 (H264 / 0x34363248), yuv420p, 656x558 [SAR 16:11 DAR 5248:3069], q=-1--1, 630 kb/s, 1k tbn, 25 tbc
Stream #0:1: Audio: aac ([255][0][0][0] / 0x00FF), 48000 Hz, stereo, s16, 64 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (mpeg2video -> libx264)
Stream #0:1 -> #0:1 (mp2 -> libaacplus)
Press [q] to stop, [?] for help
frame=34056 fps= 46 q=-1.0 Lsize= 115451kB time=00:22:42.16 bitrate= 694.3kbits/s

Risultato:
mc@debian64:~/rec$ ls -l El\ Mariachi\,\ suonatore\ di\ chitarra.m*
-rw-r--r-- 1 mc mc 398197109 feb 14 14:46 El Mariachi, suonatore di chitarra.mkv
-rw-r--r-- 1 mc mc 2354540544 feb 14 01:50 El Mariachi, suonatore di chitarra.mpg

Se non avete ffmpeg ma libav con avplay e avconv, il procedimento è simile, anche se la sintassi può essere leggermente diversa.

Per usare x264 e aacplus, dovreste avere i tool compilati con le librerie, idem per acc libfaac.

Documentazione dei filtri disponibili qui.

Comando ffmpeg in versione aggiornata:

ffmpeg -i '/home/mc/rec/El Mariachi, suonatore di chitarra.mpg' -vf "kerndeint,crop=656:558:24:10,hqdn3d=3" -threads 4 -f matroska -c:a libaacplus -b:a 64k -ar 48k -b:v 630k -c:v libx264 -x264opts subme=6:mixed-refs=0:me=umh:b-adapt=2:psy-rd=0\|0.2:direct=auto:trellis=2:aq-strength=1.2:bframes=5:ref=5:deblock=-1,-1 El\ Mariachi\,\ suonatore\ di\ chitarra.mkv

c:a c:v – codec audio e video
b:a b:v – bitrate audio e video

Nota con avplay e avconv

-x264opts non è disponibile, dovete usare i preset esempio
-c:v libx264 -preset fast -tune film
che offrono meno controllo, ci sono meno filtri -vf disponibili, non si può compilare con la libaacplus, e vi sono alcuni bachi qua e la, leggete la documentazione.

Qualcosa che si avvicina può essere:

mc@debian64:~/develop-deb/libav/0.8.5$ ./avconv -i '/home/mc/rec/El Mariachi, suonatore di chitarra.mpg' -vf "yadif,crop=656:558:24:10,hqdn3d=3" -threads 4 -f matroska -c:a libfaac -b:a 96k -ar 48k -b:v 630k -c:v libx264 -preset fast -tune film El\ Mariachi\,\ suonatore\ di\ chitarra.mkv

avconv version 0.8.5, Copyright (c) 2000-2012 the Libav developers
built on Feb 11 2013 14:16:47 with gcc 4.7.2
[mpeg @ 0x19dd100] max_analyze_duration reached
Input #0, mpeg, from '/home/mc/rec/El Mariachi, suonatore di chitarra.mpg':
Duration: 01:16:25.24, start: 0.120000, bitrate: 4108 kb/s
Stream #0.0[0x1e0]: Video: mpeg2video (Main), yuv420p, 704x576 [PAR 16:11 DAR 16:9], 2356 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0.1[0x1c0]: Audio: mp2, 48000 Hz, stereo, s16, 192 kb/s
File 'El Mariachi, suonatore di chitarra.mkv' already exists. Overwrite ? [y/N] y
[buffer @ 0x19e5a80] w:704 h:576 pixfmt:yuv420p
[yadif @ 0x19e7ce0] mode:0 parity:-1 auto_enable:0
[hqdn3d @ 0x19e8680] ls:3.000000 cs:2.250000 lt:4.500000 ct:3.375000
[crop @ 0x19ea1a0] w:704 h:576 -> w:656 h:558
[libx264 @ 0x19e76e0] using SAR=16/11
[libx264 @ 0x19e76e0] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.1 Cache64
[libx264 @ 0x19e76e0] profile Main, level 3.0
[libx264 @ 0x19e76e0] 264 - core 129 - H.264/MPEG-4 AVC codec - Copyleft 2003-2013 - http://www.videolan.org/x264.html - options: cabac=1 ref=2 deblock=1:-1:-1 analyse=0x1:0x111 me=hex subme=6 psy=1 psy_rd=1.00:0.15 mixed_ref=0 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-3 threads=4 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=0 b_adapt=1 b_bias=0 direct=1 weightb=0 open_gop=1 weightp=1 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=30 rc=abr mbtree=1 bitrate=630 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.25 aq=1:1.00
Output #0, matroska, to 'El Mariachi, suonatore di chitarra.mkv':
Metadata:
encoder : Lavf53.21.1
Stream #0.0: Video: libx264, yuv420p, 656x558 [PAR 16:11 DAR 5248:3069], q=-1--1, 630 kb/s, 1k tbn, 25 tbc
Stream #0.1: Audio: libfaac, 48000 Hz, stereo, s16, 96 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (mpeg2video -> libx264)
Stream #0:1 -> #0:1 (mp2 -> libfaac)
Press ctrl-c to stop encoding
frame= 2655 fps= 67 q=32766.0 Lsize= 9486kB time=105.81 bitrate= 734.4kbits/s

Ribadisco la mia opinione che avconv non è un buon programma.

Ffmpeg (ffprone ffplay) .exe per windows statici alle ultime versioni li trovate qui.

Crea un sito o un blog gratuitamente presso WordPress.com.

%d blogger cliccano Mi Piace per questo: