Question

Quelqu'un sait-il une bonne façon de faire re-encodage vidéo en temps réel (formats cible étant AMR à bande étroite et MP4 mp4v de mp4a de 3GP, mais pas en même temps bien sûr. Les fichiers d'entrée seraient WMV, mais plus d'entrée formats pris en charge le mieux)?

À l'heure actuelle, nous ne le traitement asynchrone en utilisant un service de C # qui appelle la ligne de commande ffmpeg, mais l'idée de le faire pour une requête synchrone est un peu la cause sous-optimale à l'utilisateur finit par attendre un certain temps avant le début de la lecture ( bien que si c'est le meilleur scénario laissez-moi savoir et je pense que je vais vivre avec).

Il serait génial si nous pouvions servir simultanément le fichier et l'enregistrer (de sorte que nous pouvons stocker pour les demandes ultérieures), mais ce ne serait pas une catastrophe si nous ne pouvons le faire.

En tant que sidenote je préfère éviter une solution de streaming depuis moins de dispositifs soutiendront, mais s'il n'y a pas de bonne façon de faire ce que je veux, j'aimerais entendre des solutions de rechange, même si elles impliquent le streaming.

Mise à jour

Juste pour vous garder les gars mis à jour avec où je l'ai appris à je suis en train de jouer avec l'idée d'écrire un wrapper qui appelle directement plutôt que l'exe de DLL FFmpeg, commence à penser que je pourrais être en mesure d'obtenir la fonctionnalité que je suis après cette façon (Attraper les données progressivement au lieu d'une fois tout se fait peut me faire assez proche en temps réel suffire).

Toujours jouer avec si cela va fonctionner et d'essayer de trouver de bons exemples de la façon de le faire (même ceux écrits en c plutôt que c # car il va montrer comment l'interface avec la DLL).

Était-ce utile?

La solution

En ce qui concerne une solution de streaming, nous avons utilisé StreamCoders' MediaSuite.net . Il marchait bien pour nous pour le streaming vidéo basé MPG tout en 3GP / H263. Cependant, vous devez savoir exactement ce que vous faites en termes de spécifications, formats, etc. Ce encodages est un champ énorme et leur produit ne « expliquer » certains des termes de base, ils supposent que vous savez déjà ce que vous faites. De plus, pour autant que je me souvienne, vous devez synchroniser manuellement les canaux audio et vidéo. Leur application de démonstration montre comment le faire (mais là encore, il est juste une application de démonstration, vous pourriez vous retrouver avec votre optimisation).

Je pense que vous pouvez l'utiliser pour réencodage ainsi que le streaming, je ne l'ai pas essayé moi-même ces derniers temps. Comment comptez-vous sortir le résultat? En tant que System.IO.MemoryStream?

Une autre solution de streaming est d'avoir un serveur de streaming bien connu tel que Xenon , et de l'utiliser à faire une technique « back-to-back »: votre gestionnaire reçoit une demande et crée une demande au serveur de streaming. La réponse du serveur de streaming est transmis en continu au client. Il est un peu un hack, mais il a très bien fonctionné pour nous pendant un certain temps.

Votre ffmpeg solution est très bien, et vous pouvez trouver plus simple à mettre en œuvre plutôt que le niveau inférieur convertion temps presque réel. Si vous pouvez « tolérer » cela, peut-être qu'il est préférable de le laisser tel qu'il est.

Mise à jour : Si vous finissez par emballage ffmpeg avec une bibliothèque .Net, ce qui semble être une excellente solution, car ffmpeg est un grand bibliothèque, ce serait génial si vous pouviez partager votre solution. Nous avons essayé de jouer avec elle, mais nous ne l'a pas assez de temps.

Autres conseils

Je joue avec un encodage en temps réel pour des présentations et des réunions de groupes d'utilisateurs. La meilleure solution que j'ai trouvé le Microsoft Expression Encoder. Le SDK inclus est assez simple à utiliser et devrait fournir la plupart des fonctionnalités dont vous avez besoin.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top