2016-06-30 4 views
1

Problème qui m'a occupé pendant les 7 derniers jours est la mise en œuvre de streaming vidéo en direct de Android à WowzaMediaEngine.Comment diffuser de la vidéo en direct à partir d'android Wowza via RTMP

J'ai commencé mes recherches sur les pages officielles de Wowza et j'ai été ravi de l'existence de la bibliothèque GoCoderSDK pour Android et IOS. « petit » problème est le prix (10k première année, 2k chaque année) et depuis que je suis la construction de l'application pour le client « petit », j'ai essayé d'autres bibliothèques:

  • libstreaming est ok, laid à mon avis codé (pas de rancune), avec beaucoup de bugs à corriger, mais avec des techniques assez compliquées (bien faites sur celles-ci). J'ai testé sur la guimauve Nexus 5 et cela a fonctionné après un certain temps en utilisant MediaCodec et une faible résolution vidéo. L'augmentation de la résolution passerait à MediaRecorder qui ne fonctionne généralement pas. Sur l'appareil KitKat, je n'ai pas pu le démarrer du tout. Après 3-4 jours de mise en œuvre des correctifs j'ai abandonné. Coutures Lib ne pas être maintenu plus

  • Media Broadcasting Library semble prometteur, mais ne l'ai pas essayé. Très cher. 500 $/mois est trop simple à mon avis.

  • KickFlip est assez codé, a l'air sympa, de bonnes fonctionnalités et ils ont supprimé le support pour RTMP/RTSP. J'ai essayé de rétablir le support et échoué.

  • RealTimeLibs le prix est acceptable. Installé Broadcast ME (application de démonstration) de PlayStore, incapable d'initier le flux. L'application de démonstration plante constamment. Découragé, je n'ai pas essayé de les contacter.

Que faire, pour acheter GoCoderSDK, de réécrire la bibliothèque libstreaming (depuis que j'ai eu les meilleurs résultats avec elle) ou d'écrire ma propre solution (ne sais pas combien de temps il faudrait). Une expérience multimédia énorme est nécessaire (que je n'ai pas)?

Répondre

7

Pas mentionné en question, mais je suis tombé sur JavaCV bibliothèque plusieurs fois, mais les critiques n'étaient pas si bien. J'ai aussi vu quelques commentaires assez positifs sur SO, j'ai donc décidé de l'essayer.

Au début, il est assez déroutant (importer javacv.jar, importer javacpp.jar, importer ffmpeg.jar, ajouter beaucoup de fichiers .so à jniLibs avec des versions correspondantes etc etc). Après avoir regardé des exemples et quelques messages furieux. Réponse à cette question (How to f****ing add JavaCV to Android Studio so I can use the f***ing annoying FFmpeg?) m'a aidé beaucoup et avec l'aide de Samuel Audet (à laquelle je suis vraiment reconnaissant), j'ai réussi à diffuser la vidéo à partir d'android via RTMP à Wowza dans la qualité et les options vidéo que je choisis de définir.

Depuis que j'ai perdu 7 jours de travail sur ceci et en retour à la communauté j'ai créé boilerplate (or starterkit) android application for live streaming video to wowza media engine de sorte que beaucoup d'autres applications dépendantes de wowza à l'avenir puissent être construites beaucoup plus rapidement.

+0

Son seulement faire l'encodage de logiciel, non? Avez-vous des informations sur [l'encodage matériel avec ffmpeg sur android] (https://trac.ffmpeg.org/wiki/HWAccelIntro)? Merci d'avoir partagé btw. – kpaxit

+0

@kpaxit Merci, j'apprécie. Je pense qu'il n'utilise pas de GPU, mais pas sûr. J'ai vérifié dans le code source JavaCV de FFMpegRecoder (https://github.com/bytedeco/javacv/blob/master/src/main/java/org/bytedeco/javacv/FFmpegFrameRecorder.java) et pour autant que je sache, pas d'utilisation de -hwaccel. Cependant, ce serait une fonctionnalité intéressante. Peut-être que pour écrire directement à Samuel sur GitHub, ce serait génial si on pouvait l'activer ou le désactiver par simple appel de méthode sur une instance d'enregistreur. – bajicdusko

+0

Comment avez-vous configuré votre Wowza Sever? – hunghd