posted by qubix on November 10, 2013

Το K2 όταν ανεβάζουμε ένα βίντεο δεν δημιουργεί thumbnail και ο λόγος είναι πως χρειάζεται κάποιον τρόπο να χειρίζεται τα αρχεία βίντεο ο οποίος δεν υπάρχει εγγενώς στην php. Η λύση είναι η χρήση του ffmpeg utility. Δυστυχώς πρέπει να πειράξουμε τον κώδικα του Κ2..



1) ανοίγουμε το αρχείο administrator/components/com_k2/models/item.php

2) πάμε στη γραμμή:
$row->video = '{'.$filetype.'}'.$row->id.'{/'.$filetype.'}';

3) κάτω από αυτή προσθέτουμε:
$videofile = $savepath.DS.$row->id.'.'.$filetype;
$image = $savepath.DS.$row->id;
passthru("ffmpeg -i $videofile -vframes 1 -ss 00:00:00 $image.jpg",$fvstat);

4) κάνουμε save το αρχείο και στο επόμενο upload θα δούμε τα thumbnails να εμφανίζονται κανονικά!

Η λύση αυτή προϋποθέτει στον server που είναι το site να υπάρχει το ffmpeg και να επιτρέπεται η εντολή της php "passthru"

Η μεταβλητή $fvstat μπορεί να έχει την τιμή 0 ή 1 ανάλογα με το αν εκτελέστηκε η εντολή σωστά η όχι.

Ο λόγος που δουλεύει το παραπάνω snippet είναι επειδή το allvideos plugin του K2 (εγκαθείσταται χωριστά) όταν βρίσκει μια εικόνα με το ίδιο όνομα με του video και στον ίδιο φάκελο, το βάζει ως thumbnail και αυτό ακριβώς είναι που κάνει ο κώδικας, τραβά το πρώτο frame και το σώζει ως jpg με όνομα το όνομα του video.

hyperworks