domenica 12 febbraio 2012

Grass - script per HEC Ras

Con grass installato sotto ad ArchLinux ho dovuto fare una modifica per far funzionare gli script per HEC Ras (scaricabili da questo link).

Sulla mia distro ho installata la vesrsione 3 di python inseme alla 2.7 che serve a grass per il suo funzionamento (non supporta ancora la 3).

Visto che lo script non veniva lanciato ho modificato la prima riga del file da:

#!/usr/bin/env python

a:

#!/usr/bin/env python2


Penso che possa funzionare anche con altri script che presentano lo stesso tipo di errore:

Traceback (most recent call last):
  File "/home/folletto/Documenti/v.grass2hec.py", line 80,
in
    import grass.script as grass
  File
"/opt/grass-6.4.2RC3/etc/python/grass/script/__init__.py",
line 1, in
    from core   import *
ImportError: No module named core


lunedì 6 febbraio 2012

Ffmpeg - da avi a mpg per dvd

Provando a convertire un file .avi in .mpg per dvd, e dovendo cambiare le impostazioni delle dimensioni video mi sono imbattuto in un problema per l'aggiunta delle bande nere sopra e sotto al video, perchè questo era in 16:9 e a me serviva in 4:3.

Il problema maggiore è però nato con le nuove impostazioni per ffmpeg, che non gestisce più i tag:

-padtop size
-padbottom size
-padleft size
-padright size
-padcolor hex_color

che sono stati sostituiti da (come si legge in man ffmpeg):

All the pad options have been removed. 
Use -vf pad=width:height:x:y:color instead.

Dopo vari tentativi sono giunto a questo:
--------------------------------------------------------------------------------------------------------------------------------------
ffmpeg -i video_in.avi -y -target pal-dvd -sameq -aspect 4:3  -s 720x292 -vf pad=720:576:0:142 video_out.mpg
-------------------------------------------------------------------------------------------------------------------------------------

Il file originale aveva come risoluzione 672x272, e dividendo i due vallori si ottiene ~2,47 (quindi non era in 16:9, cioè 1,77777 e nemmeno in 4:3, cioè 1,33333).
A questo punto ho dovuto fare 2 cose:
1 - cambiare il valore della risoluzione originale in 720x292, perchè il tag -target pal-dvd lo imposta di default a 720x576 (come i normali dvd), questo si ottiene facendo 720:2,47=291,4979 (approssimato = 292)
2 -impostare le famigerate bande nere facendo (576-292)/2=142 ed inserendo i valori ottenuti nel tag -vf pad=720:576:0:142, dove 720 è la larghezza del video finale, 576 l'altezza, 0 i pixel utilizzati sulle x per le bande nere verticali (a me non servivano), e la y quelli orizzontali. I valori di x e y si devono dividere per 2 altrimenti il video viene spostato tutto da una parte o tutto in alto!

In sintesi:

Ottenuti i valori di risoluzione del video (basta lanciare il video da linea di comando con mplayer), bisogna dividerli per capire se si ha a che fare con un video in 16:9, 4:3 o altro;
Se ci troviamo su altro dividere 720 per il valore ottenuto in modo da avere la risoluzione verticale del video e applicare con -s quello che abbiamo ottenuto
(nel mio caso 720x292);
Ora non ci resta che applicare le bande nere, otteniamo il valore delle bande nere sotraendo il valore verticale del formato dvd con quello da noi ottenuto (per me 576-292=284), e dividendolo per due (284/2=142) in modo da avere il video al centro delle due bande.

Potete comunque trovare un'ottima spiegazione qui.

Buon divertimento e alla prossima!