back

eXport-it FFmpeg

Τι είναι η βιβλιοθήκη FFmpeg;

Το

FFmpeg (https://www.ffmpeg.org/) είναι μια ολοκληρωμένη λύση πολλαπλών πλατφορμών για εγγραφή, μετατροπή και ροή ήχου και βίντεο. Το FFmpeg είναι το κορυφαίο πλαίσιο πολυμέσων, ικανό να αποκωδικοποιεί, κωδικοποιεί, μετακωδικοποιεί, mux, demux, ροή, φιλτράρει και παίζει σχεδόν οτιδήποτε έχουν δημιουργήσει άνθρωποι και μηχανές. Υποστηρίζει τις πιο ασαφείς αρχαίες μορφές μέχρι την αιχμή. Δεν έχει σημασία αν σχεδιάστηκαν από κάποια επιτροπή προτύπων, την κοινότητα ή μια εταιρεία.

Είναι επίσης εξαιρετικά φορητό: το FFmpeg μεταγλωττίζει, εκτελεί και περνά την υποδομή δοκιμών μας FATE σε Linux, Mac OS X, Microsoft Windows, BSD, Solaris κ.λπ... κάτω από μια μεγάλη ποικιλία περιβαλλόντων κατασκευής, αρχιτεκτονικές μηχανών, και διαμορφώσεις.

Η ίδια η βιβλιοθήκη FFmpeg είναι κάτω από την άδεια LGPL 2.1. Η ενεργοποίηση ορισμένων εξωτερικών βιβλιοθηκών (όπως η libx264) αλλάζει την άδεια χρήσης σε GPL 2 ή μεταγενέστερη.

Πώς ενσωματώνεται αυτή η βιβλιοθήκη στην εφαρμογή Android

Χρησιμοποίησα το σενάριο ffmpeg-android-maker (συνεισφέροντες: Alexander Berezhnoi Javernaut + codacy-badger Codacy Badger + A2va) για τη μεταγλώττιση των βιβλιοθηκών. Αυτό το σενάριο κατεβάζει τον πηγαίο κώδικα του FFmpeg από τη https://www.ffmpeg.org και δημιουργεί τη βιβλιοθήκη και τη συναρμολογεί για Android. Το σενάριο παράγει κοινόχρηστες βιβλιοθήκες (αρχεία *.so) καθώς και αρχεία κεφαλίδας (αρχεία *.h).

Η κύρια εστίαση του ffmpeg-android-maker είναι να προετοιμάσει κοινόχρηστες βιβλιοθήκες για απρόσκοπτη ενσωμάτωση σε ένα έργο Android. Το σενάριο προετοιμάζει τον κατάλογο «output» που προορίζεται να χρησιμοποιηθεί. Και δεν είναι το μόνο πράγμα που κάνει αυτό το έργο. Ο πηγαίος κώδικας του ffmpeg-android-maker είναι διαθέσιμος με την άδεια του MIT. Δείτε το αρχείο LICENSE.txt για περισσότερες λεπτομέρειες στη διεύθυνση https://github.com/Javernaut/ffmpeg-android-maker/ Οι βιβλιοθήκες eXport-it FFmpeg έχουν μόλις μεταγλωττιστεί με τις βιβλιοθήκες libaom, libdav1d, liblame, libopus και libtwolame...αλλά όχι όλες οι σχετικές βιβλιοθήκες.

Για να αναπτύξω την υποστήριξη Java για το FFmpeg και να το τρέξω σε Android 7.1 έως 12, ξεκίνησα από το έργο MobileFFmpeg που τεκμηριώνεται στη διεύθυνση https://github.com/tanersener/mobile-ffmpeg/ από τον Taner Sener, το οποίο δεν διατηρείται πλέον ... και έχει άδεια σύμφωνα με το LGPL 3.0 ...

Τέλος, ετοίμασα ένα έργο JNI Android Studio με τις βιβλιοθήκες, συμπεριέλαβα αρχεία και κώδικα υποστήριξης Java και δημιούργησα ένα αρχείο Βιβλιοθήκης .aar για να το ενσωματώσω ως πρόσθετη βιβλιοθήκη στα υπάρχοντα έργα μου.


Πώς να ξεκινήσετε ένα κανάλι πολλαπλής εκπομπής

Για να ξεκινήσει ένα κανάλι πολλαπλής μετάδοσης απαιτείται η χρήση πελάτη, για πρόσβαση σε διακομιστή UPnP στο τοπικό σας δίκτυο (Wi-Fi) με την υποστήριξη FFmpeg. Αυτός ο διακομιστής θα πρέπει να απαντά με τη λίστα στα αρχεία που εξάγει. Εάν αυτός ο διακομιστής έχει την υποστήριξη FFmpeg, ένα μικρό κείμενο "Ως κανάλι" πρέπει να εμφανίζεται με κόκκινο χρώμα στο τέλος της επάνω γραμμής της σελίδας λίστας. Όταν το κείμενο είναι "κόκκινο", κάνοντας κλικ στο κουμπί "αναπαραγωγή" λειτουργεί όπως πριν χρησιμοποιώντας το πρωτόκολλο UPnP. Εάν κάνετε κλικ στο κείμενο, θα πρέπει να γίνει "πράσινο" και κάνοντας κλικ στο κουμπί "αναπαραγωγή", αφού επιλέξετε αρχεία βίντεο ή ήχου, θα πρέπει να ξεκινήσει ένα "κανάλι".

Τα επιλεγμένα αρχεία πολυμέσων αναπαράγονται προφανώς με τον ίδιο τρόπο όπως μέσω του UPnP, με τη διαφορά ότι η καθυστέρηση εκκίνησης είναι μεγαλύτερη λόγω πρόσθετων εργασιών. Πρέπει να συνεχίσετε να αναπαράγει τα αρχεία πολυμέσων αυτού του προγράμματος-πελάτη για να διατηρήσετε τον σωλήνα ενεργό.

Χρήση αυτού του σωλήνα σε άλλες συσκευές

Η multicast IP δεν λειτουργεί μέσω Διαδικτύου, λειτουργεί μόνο σε τοπικό δίκτυο, επομένως κυρίως σε Wi-Fi. Ένα κανάλι δεδομένων πολλαπλής εκπομπής μπορεί να μοιράζεται από πολλούς πελάτες ταυτόχρονα. Στέλνετε μια ροή δεδομένων πολυμέσων στο δίκτυο Wi-Fi σας και εμφανίζετε αυτά τα δεδομένα σε συνδεδεμένες συσκευές, σχεδόν συγχρονισμένα, μόνο τη διαφορά καθυστέρησης καθυστέρησης.

Με τη ροή UPnP ή HTTP, κάθε συσκευή απαιτεί το εύρος ζώνης του βίντεο που εμφανίζεται και το συνολικό εύρος ζώνης είναι το άθροισμα και των δύο επισκεψιμότητας. Με τη ροή πολλαπλής διανομής, στέλνουμε μία ροή δεδομένων στο LAN, η οποία είναι κοινή μεταξύ πολλών πελατών.

Εάν χρησιμοποιείτε άλλο πελάτη στο δίκτυό σας μετά την έναρξη ενός καναλιού, θα πρέπει να δείτε μια πρόσθετη γραμμή στο κύριο παράθυρο του προγράμματος-πελάτη. Απλώς κάνοντας κλικ σε αυτή τη γραμμή θα ξεκινήσει η εκπομπή.

Είναι επίσης εφικτό να χρησιμοποιήσετε άλλα προϊόντα όπως VLC, SMplayer, ... για να εμφανίσετε ένα βίντεο ή να ακούσετε μουσική που διανέμεται σε ένα κανάλι πολλαπλής εκπομπής χρησιμοποιώντας απλώς τη διεύθυνση URL "UDP" που εμφανίζεται στο πρόγραμμα-πελάτη eXport-it.

Για διακοπή ενός καναλιού πολλαπλής εκπομπής

Ο καλός τρόπος για να σταματήσετε ένα κανάλι πολλαπλής μετάδοσης είναι να το σταματήσετε στον πελάτη στον οποίο το ξεκινήσατε επειδή αυτό το κανάλι ελέγχεται εκεί. Η αναπαραγωγή μέχρι το τέλος των αρχείων πολυμέσων σε ροή θα πρέπει επίσης να δώσει το τέλος της εκπομπής.

Πρακτικά ζητήματα

Για να ξεκινήσει ένα κανάλι πολλαπλής διανομής απαιτείται ένα συγκεκριμένο τμήμα πελάτη αυτής της εφαρμογής, το ίδιο με το πρόγραμμα-πελάτη eXport-it των άλλων ενημερωμένων προϊόντων μου. Η χρήση ενός εκτελούμενου καναλιού πολλαπλής διανομής μπορεί να γίνει με τον πελάτη εφαρμογής ή με άλλα προϊόντα όπως VLC, SMPlayer, ... που εκτελούνται σε άλλες πλατφόρμες ή σε Android. Όταν χρησιμοποιείτε VLC, η διεύθυνση URL για τη χρήση ενός καναλιού Multicast είναι ομαλά διαφορετική, όπως udp://@239.255.147.111:27192... μόνο με ένα επιπλέον "@". Με ένα κανάλι UDP Multicast, τα δεδομένα πολυμέσων αποστέλλονται μόνο μία φορά για να εμφανίζονται σε πολλούς πελάτες, αλλά δεν υπάρχει πραγματικός συγχρονισμός και η καθυστέρηση μπορεί να είναι δευτερόλεπτα ανάλογα με την προσωρινή μνήμη και τα χαρακτηριστικά της συσκευής.

Η ακρόαση ενός καναλιού multicast ήχου μπορεί να γίνει με άλλα προϊόντα, αλλά ο συγκεκριμένος πελάτης εμφανίζει εικόνες που αποστέλλονται επίσης μέσω IP multicast. Εάν θέλετε να στείλετε συγκεκριμένες φωτογραφίες με τη μουσική σας, μπορείτε να χρησιμοποιήσετε την επιλογή μενού "Σελίδα 2" στον διακομιστή, για να επιλέξετε μόνο τις εικόνες που θέλετε, να αποεπιλέξετε όλες τις εικόνες με ένα κλικ και, στη συνέχεια, επιλέξτε αυτές που θέλετε...

Υπάρχουν πλεονεκτήματα και δυσκολίες με κάθε πρωτόκολλο. Το κανάλι UPnP και Multicast μπορούν να χρησιμοποιηθούν μόνο σε τοπικό δίκτυο (κυρίως Wi-Fi), η ροή HTTP λειτουργεί τοπικά αλλά και μέσω Διαδικτύου και χρησιμοποιεί πρόγραμμα περιήγησης Ιστού ως πελάτη. Το UPnP και το κανάλι Multicast δεν έχουν ασφαλή τρόπο ελέγχου της πρόσβασης και οποιαδήποτε συσκευή είναι συνδεδεμένη στο δίκτυο Wi-Fi μπορεί να χρησιμοποιήσει τον διακομιστή που λειτουργεί. Με το πρωτόκολλο HTTP, μπορείτε να ορίσετε ονόματα χρήστη και κωδικούς πρόσβασης και να ορίσετε αρχεία σε κατηγορίες πρόσβασης (ομάδες), περιορίζοντας την πρόσβαση σε ορισμένα αρχεία πολυμέσων για συγκεκριμένους χρήστες. Οι ρυθμίσεις του διακομιστή επιτρέπουν τον περιορισμό των αρχείων που διανέμονται και τον ορισμό ενός ονόματος κατηγορίας ανά αρχείο, εάν απαιτείται.

back