7
votes

Comment diffuser à FFServer de Android

Je dois diffuser d'une caméra / fichier Android sur une télécommande FFServer qui diffusera ma vidéo. Je peux le faire sur le bureau à Ubuntu en émettant une commande comme: xxx

ou diffuser un fichier tel que ceci: xxx

si fondamentalement Je veux pouvoir faire ce qui précède de Android. Après plusieurs recherches, c'est ce que j'ai fait jusqu'à présent - je suis tombé sur ce lien http://bambuser.com/opensource À partir de laquelle j'ai téléchargé la source FFMPEG et le construit. La construction génère plusieurs choses: 1. Libavcodec, Libavcore, LibaveDevice, Libavfilter, LibavAfformat, Libavutil, Libswscale] 2. Executables [FFMPEG, FFPROBE]

Vous ne savez pas comment brancher ma fonctionnalité avec ces ressources C'est ce que j'ai essayé jusqu'à présent: 1. Chargé les Libs de mon activité à l'aide de System.LoadLibrary (), puis copié l'exécutable FFMPEG au dossier d'actifs qui, à l'exécution, j'ai copié dans le répertoire "Fichiers" de mon application, j'ai ensuite défini des autorisations pour l'exécutable à l'aide de runtime.getruntime (). (). Ensuite, la dernière étape consistait à l'exécuter en Java avec l'instruction suivante: xxx

2. Copied FFMPEG.c, les bibliothèques partagées et le dossier "Inclure" généré par la construction dans mon dossier JNI et ajouté une fonction JNI qui enveloppe la fonction principale () dans FFMPEG.c. Avec cette approche, je me suis trouvé avoir à copier plusieurs fichiers d'en-tête de la source FFMPEG pour la construction de NDK pour réussir et je doute fort si c'est la voie à suivre.

Les deux approches ci-dessus ont fonctionné Pour moi, je ne suis pas sûr d'où je vais mal, alors toute aide sur la manière de faire un simple streaming FFMPEG comme un fichier MP4 d'Android serait très apprécié.


0 commentaires

3 Réponses :


3
votes

Je l'ai eu à utiliser Apporach 2, c'est ce que j'ai fait. 1. copié ffmeg.c, le dossier "Inclure" et les bibliothèques partagées au dossier JNI de mon projet.

  1. modifié FFMPEG.c, en référence à ce blog Publier http://demo860.blogspot.com/2010/07/androïd-ffmpmpeg-dynamic-module-jni.html

  2. Il y avait plusieurs erreurs lors de la construction avec NDK, donc je viens d'ajouter les dépendances manquantes jusqu'à ce que la construction réussisse enfin.

    Au début, l'application commencerait puis quitter immédiatement, ceci était dû à un couple de choses que j'ai oublié de le faire, assurez-vous que vous avez fait ce qui suit pour vous épargner quelques heures et une perte de cheveux: - Définir la permission d'Internet sur Manifest (si le fichier multimédia est dans SDCard, définissez l'autorisation de stockage externe en écriture et assurez-vous que la carte SDCard est montée) - Assurez-vous que la télécommande FFServer est exécutée et configurée correctement. Vous pouvez confirmer en streaming à partir d'un bureau - Assurez-vous que les paramètres corrects sont passés

    Maintenant, je peux diffuser d'un fichier MP4 dans ma carte SDCard à une télécommande FFServer, a essayé de diffuser en streaming de la caméra de périphérique.


1 commentaires

Avez-vous un exemple de projet pour résoudre les dépendances manquantes?



0
votes

Vous n'avez pas à copier des bibliothèques partagées et d'inclure le dossier. Vous pouvez utiliser la fonctionnalité "Prebuild_Shared_Library" de Andriod.mk à la place.


0 commentaires

3
votes

Il semble être un peu en retard pour répondre à cette question, mais si vous avez besoin d'une solution, voici un ...

Eh bien, j'avais conçu une solution de contournement au même problème, mais à travers la première approche qui utilise un compilée ffmpeg binaire plutôt que JNI ...

Tout d'abord, aussi loin que cela me semble, les constructions fournies par Bambuser sont beaucoup trop vieux et FFMPEG a un cycle de développement vicieux ... Je préférerais donc suggérer de construire votre propre binaire à partir de la dernière source FFMPEG ...

Voici un script qui pourrait être utilisé pour générer un: xxx

Pour le script ci-dessus pour fonctionner, Android NDK est requis et pourrait être téléchargé à partir de ici . Téléchargez la NDK et extraire et extrayez sur votre / ou personnalisez le script selon vos besoins ...

et évitez également Utilisation du protocole Fichier: // dans la ligne de commande, spécifiez simplement le chemin absolu du fichier d'entrée. Et essayez de vous connecter la sortie du processus FFMPEG par gettin 'Instances de son stdout et starr flux ...


1 commentaires

Avez-vous les gars-là le binaire pour FFServer ?? ne trouve aucun binaire nulle part