Δημοσιεύτηκε: 21 Ιουν 2012, 18:39
Χρησιμοποιώντας το module subprocess μπορούμε να εκτελέσουμε μια εντολή για μετατροπή video μέσω του ffmpeg:
Αν τρέξουμε τον παραπάνω κώδικα (αλλάζοντας φυσικά τα ονόματα των αρχείων) θα δούμε ότι θα βλέπαμε αν τρέχαμε σκέτη την εντολή στο τερματικό.
Δηλαδή θα βλέπουμε την έξοδο του ffmpeg η οποία θα ανανεώνεται συνεχώς μέχρι να τελειώσει η μετατροπή.
Το να κρατήσουμε αυτή την έξοδο σε μία μεταβλητή σε ένα πρόγραμμα είναι πολύ εύκολο.
Υπάρχει όμως κάποιος τρόπος να παίρνουμε την έξοδο και να την χρησιμοποιούμε ενόσω η μετετροπή είναι σε εξέλιξη;
Συγκεκριμένα το ffmpeg μας δίνει συνεχώς στην έξοδο του σε ποιο χρονικό σημείο μετατροπής του video που του δώσαμε βρίσκεται (πχ. time=3.80).
Θέλω να παίρνω αυτό το χρονικό σημείο κατά τη διάρκεια της μετατροπής ώστε να μπορώ να υπολογίζω και να εμφανίζω την πρόοδο, ενώ η μετατροπή βρίσκεται σε εξέλιξη.
Καμιά ιδέα;
Ευχαριστώ εκ των προτέρων.
- Κώδικας: Επιλογή όλων
import subprocess, shlex
cmd = 'ffmpeg -y -i /foo/bar.mpeg /foo/bar.flv'
subprocess.Popen(shlex.split(cmd))
Αν τρέξουμε τον παραπάνω κώδικα (αλλάζοντας φυσικά τα ονόματα των αρχείων) θα δούμε ότι θα βλέπαμε αν τρέχαμε σκέτη την εντολή στο τερματικό.
Δηλαδή θα βλέπουμε την έξοδο του ffmpeg η οποία θα ανανεώνεται συνεχώς μέχρι να τελειώσει η μετατροπή.
Το να κρατήσουμε αυτή την έξοδο σε μία μεταβλητή σε ένα πρόγραμμα είναι πολύ εύκολο.
Υπάρχει όμως κάποιος τρόπος να παίρνουμε την έξοδο και να την χρησιμοποιούμε ενόσω η μετετροπή είναι σε εξέλιξη;
Συγκεκριμένα το ffmpeg μας δίνει συνεχώς στην έξοδο του σε ποιο χρονικό σημείο μετατροπής του video που του δώσαμε βρίσκεται (πχ. time=3.80).
Θέλω να παίρνω αυτό το χρονικό σημείο κατά τη διάρκεια της μετατροπής ώστε να μπορώ να υπολογίζω και να εμφανίζω την πρόοδο, ενώ η μετατροπή βρίσκεται σε εξέλιξη.
Καμιά ιδέα;
Ευχαριστώ εκ των προτέρων.