In questo tutorial vedremo come integrare il video-blogging FLV in un sito web basato sul framework Django. Ciò permetterà agli utenti del nostro blog il posting di articoli che, una volta pubblicati, potranno essere particolareggiati da ciascun utente tramite l' inserimento di video, che chiunque potrà visualizzare.Il lavoro si suddivide in diverse parti:
- Un modella Django ove immagazzinare il video e le informazioni ad esso associate;
- Un form di upload tramite il quale l' utente può uppare il suo video;
- Conversione del video in un formato fruibile via web;
- Ricavarne ulteriori dettagli;
- Riprodurre il video nel browser;
- Rendere il player video user-friendly;
- Fornire ulteriori funzionalità;
Modello Django
Il modello Django per l' inserimento di un video è piuttosto semplice. Lo abbiamo chiamato VideoSubmission:
class VideoSubmission(models.Model): videoupload = models.FileField (upload_to='videoupload') relatedsubmission = models.ForeignKey(Submission, null=True) comment = models.CharField( maxlength=250, blank=True ) flvfilename = models.CharField( maxlength=250, blank=True, null=True )
Upload del video
L' upload di un video è raggiungibile utilizzando uno standard form di upload, implementato, come segue, del FormFields:
def v_addvideo(request, submissionid): manipulator=VideoSubmission.AddManipulator() form=FormWrapper(manipulator,{},{}) params = {'userAccount':request.user,'form':form,} c = Context( request, params) t = loader.get_template('video/addvideo.html') sub = Submission.objects.get(pk=submissionid) params['submission'] = sub return HttpResponse( t.render( c ) )
La pagina di upload, chiamata addvideo.html è molto semplice:
<form action="/video/upload/" method="post" enctype="multipart/form-data"> <table> <input type="hidden" name="relatedsubmission_id" value="{{submission.id}}" /> <tr valign="top"> <td>Video hochladen:<br/>(Nur AVI und FLV werden akzeptiert)</td> <td>{{ form.videoupload}} {{ form.videoupload_file }}<br/> Kommentar: <input type="text" name="comment" style="width:100%" maxlength="250"> </td> </tr> <tr valign="top"> <td> </td> <td><input type="submit" Value="Hochladen"/> </td> </tr> </table> </form>
Corsi online di WebMasterPoint.org:
Come possiamo notare, ad ogni nuovo video aggiunto viene associato un ID, che sarà utile per concatenare tra loro i video.
Convertire i video in formato web
Con grande frequenza accadrà che i nostri utenti upperanno nel servizio un video con estensione .AVI, formato non supportato dalla visualizzazione interna al browser. Come risolvere? Convertendolo in formato FLV (Flash(tm) Video), quello utilizzato da YouTube, per intenderci.
Convertire in FLV
Come fare? Il pacchetto OSS ffmpeg ci viene in aiuto, fornendoci una funzione di conversione assolutamente invidiabile. Il pacchetto è utilizzabile tramite linea di comando, con la sintassi:
ffmpeg -i [sourcefile.avi] -acodec mp3 -ar 22050 -ab 32 -f flv -s 320×240 [destfile.flv]
Aggiungere i metadata all' FLV
Con la sopra-riportata procedura verrà creato un nuovo .FLV contenente il flusso audio-video contenuto nell' avi di partenza. I files FLV però hanno bisogno di altre informazioni, quali la durata, il numero di frames ed altri interessanti parametri, utili ai players FLV per rappresentare graficamente la durata del video ed i minuti al termine. Stranamente, ffmpeg non aggiunge tali informazioni. Fortunatamente c'è un secondo pacchetto, flvtool2, in grado di ricavare le info necessarie da un file .FLV e di inserirvele come metadata. Ecco il comando:
flvtool2 -U [flvfile]
Aggiungere un immagine al video
Bello sarebbe permettere agli utenti che postano un video l' upload di un' immagine esplicativa, utilizzabile come piccola anteprima. Ecco che ci torna utile ffmpeg, in grado di estrarre singoli frames dal flusso video dell' FLV. Ecco il comando relativo:
ffmpeg -y -i [videofile] -vframes 1 -ss 00:00:02 -an -vcodec png -f rawvideo -s 320×240 [thumbnailimage.png]
Collegare il tutto
A questo punto è semplice dar vita ad un buon sistema di conversione video che entra in funzione ad ogni upload. Ecco il codice relativo:
def convertvideo (video): if video is None: return "Kein Video im Upload gefunden" filename = video.videoupload print "Konvertiere Quelldatei: %s" + filename if filename is None: return "Video mit unbekanntem Dateinamen" sourcefile = "%s%s" % (settings.MEDIA_ROOT,filename) flvfilename = "%s.flv" % video.id thumbnailfilename = "%svideos/flv/%s.png" % (settings.MEDIA_ROOT, video.id) targetfile = "%svideos/flv/%s" % (settings.MEDIA_ROOT, flvfilename) ffmpeg = "ffmpeg -i %s -acodec mp3 -ar 22050 -ab 32 -f flv -s 320x240 %s" % (sourcefile, targetfile) grabimage = "ffmpeg -y -i %s -vframes 1 -ss 00:00:02 -an -vcodec png -f rawvideo -s 320x240 %s " % (sourcefile, thumbnailfilename) flvtool = "flvtool2 -U %s" % targetfile print ("Source : %s" % sourcefile) print ("Target : %s" % targetfile) print ("FFMPEG: %s" % ffmpeg) print ("FLVTOOL: %s" % flvtool) try: ffmpegresult = commands.getoutput(ffmpeg) print "-------------------- FFMPEG ------------------" print ffmpegresult # Check if file exists and is > 0 Bytes try: s = os.stat(targetfile) print s fsize = s.st_size if (fsize == 0): print "File is 0 Bytes gross" os.remove(targetfile) return ffmpegresult print "Dateigroesse ist %i" % fsize except: print sys.exc_info() print "File %s scheint nicht zu existieren" % targetfile return ffmpegresult flvresult = commands.getoutput(flvtool) print "-------------------- FLVTOOL ------------------" print flvresult grab = commands.getoutput(grabimage) print "-------------------- GRAB IMAGE ------------------" print grab except: print sys.exc_info() return sys.exc_info[1] video.flvfilename = flvfilename video.save() return None
- Nuova proposta di legge per siti web del Pdl dopo ritiro Levi: obiettivi giusti ma anche problemi
Nuova proposta di legge per siti web e blog proposta da Roberto Cassinelli esponente del Pdl che ha come obiettivo dichiarato quello di modificare la legge 62 sull'editoria del 2001
- Virus, truffe e tentativi di truffa: boom di tentativi il prossimo lunedì 24 novembre
- Libri, musica, video, quadri: 2 milioni di opere online da oggi su Europeana motore di ricerca Ue
- Ritirata legge registrazione siti web e blog dallo stesso onorevole Levi. Ma c'è ancora un problema.
- Antivirus gratuito da Microsoft: dal 2009 "Morro" sostituirà Windows Live OneCare
- Informatica e Tlc bene nel 2008, previsioni 2009 stabili o in diminuzione. Resiste software, cala vendita hardware ed elettronica di consumo
Tutti i dati delle analisi di settore per l'anno in corso e le previsioni per il prossimo - Servizi online Microsoft per aziende:Exchange e Sharepoint disponibili su richiesta su Internet
- Decoder digitale terrestre: i problemi nascosti che non vengono pubblicati
- Validazione documenti XML
- Programma gratis per grafica 3d: Google SketchUp 7 disponibile da scaricare. Caratteristiche e funzioni. Video


![[SPONSOR] 9NetWeb (Link Esterno)](http://www.webmasterpoint.org/sponsor/9netweb_120.gif)
![[SPONSOR] Aruba (Link Esterno)](/sponsor/aruba_90.gif)
![[SPONSOR] ConsultingWeb (Link Esterno)](/sponsor/consultingweb_120.gif)
Stampa Pagina
Info sull'autore
ICQ
EMAIL
DISCUTI DI QUESTA LEZIONE SUL FORUM![[SPONSOR] eDomain (Link Esterno)](http://www.webmasterpoint.org/sponsor/edomain_120.gif)
![[SPONSOR] Rubalo.it](/sponsor/rubalo_120.gif)
![[SPONSOR] MisterDomain.eu (Link Esterno)](http://www.webmasterpoint.org/sponsor/misterdomain.gif)