[ffmpeg] Streaming server & encoding

Streaming server & encoding [ffmpeg] - Traitement Vidéo - Video & Son

Marsh Posté le 25-07-2013 à 12:26:10    

Bonjour à tous,
 
Je souhaiterais avoir des avis d'expert. Je suis en train de créer un serveur de streaming qui devrait être utilisé par pas mal de monde. Voici les specs :
 
Usage multi user donc
Streaming sur les principaux navigateurs (chrome, opéra, FF, IE)
Support des principaux formats (dont avi, mkv+ss titres, mov)
Si possible html5, même si je sens que je vais devoir user de flash
 
Pour le moment, de ce que je sais, la conversion est nécessaire pour les formats sus cités. D'ou l'usage de ffmpeg.
 
Après avoir parcouru la doc et pas mal d'articles sur ffmpeg, il semble que je ne puisse pas à la fois transcoder ET streamer un flux video, hormis en splittant le fichier. Mais la doc est vague à ce sujet.
D'autre part les usagers doivent pouvoir récupérer leur fichier original à tout moment. Ce qui signifie que si on upload une video et que celle ci doivent être convertie, la capacité de stockage sur serveur prendra une claque. Je préférerais autant que possible limiter le gaspillage d'espace.
 
Je me pose la question de savoir de quelle manière transcoder les fichiers : Lors de l'upload ? Lors de la lecture ? Est-ce possible lors de la lecture ? En termes de performances pures, est-ce viable ? Sinon y a t il des solutions ?
 
J'ai pensé également à scinder le service en 2 :
1 Serveur dédié à l'encodage et au stockage,  
1 Serveur dédié à la lecture en streaming
 
Côté serveur justement, selon vous quelles sont les ressources à envisager ?
 
Je vous remercie par avance pour votre aide et vos conseils :jap:


---------------
>>Achats & Ventes<<
Reply

Marsh Posté le 25-07-2013 à 12:26:10   

Reply

Marsh Posté le 26-07-2013 à 19:06:48    

Mince j'aurais cru avoir plus de réponses que ça...


---------------
>>Achats & Ventes<<
Reply

Marsh Posté le 27-07-2013 à 11:40:13    

Faut dire que ta question est relativement pointue (déjà qu'utiliser correctement ffmpeg n'est pas simple). Je te conseillerai plutôt de t'adresser directement à ffmpeg, ou alors à des forums type doom9 ou videohelp.  
 
Après, ta question est imprécise : tu parles de containers, mais quels codecs veux-tu utiliser ? si c'est de l'H264 +AAC/MP3, tu n'as pas vraiment de raison d'utiliser de l'avi ou du mkv, mais pourrais tout simplement encoder une bonne fois pour toute en flv ou en mp4, formats les plus courants, et problème résolu. Ils me semblent bien plus optimisés que de l'avi/mkv pour ce genre d'utilisation.  
 
En effet, autant transcoder une video juste une fois en changeant juste le container, ça ne demandera pas grand chose en termes de temps de processeur... autant si tu dois le refaire pour chaque utilisateur connecté...  [:wam]  
 
Donc il me semblerait plus viable de te calquer sur le système youtube (transcodage et stockage en 2 formats, puis streaming de l'un ou de l'autre en différé).  Mais encore une fois, tu auras probablement une réponse plus pertinente sur des forums spécialisés.  :)


Message édité par Trias le 27-07-2013 à 11:43:33

---------------
KEF – Certains pensent. D'autres croient. Qui pensez vous qu'il faille croire ? – SC2 #HFR #Pony
Reply

Marsh Posté le 27-07-2013 à 12:56:09    

Merci pour ta réponse Trias. Je me suis par contre mal exprimé sur un point : les formats embarqués -> l'idée est de pouvoir lire ses propres fichiers quelque soit le format. Donc avi, mkv et consors.
 
Après avoir continué mon exploration plus en profondeur je pense que la solution la plus viable consistera a encoder les fichiers direct après l'upload (ou en même temps en considérant que je permette les chunked files, encodés au fur et à mesure qu'ils arrivent sur le serveur).
 
Et oui, ce sera pour l'instant du h264+aac/mp3.
 
La question que je me pose à présent concerne les performances en multitread pour l'encodage. A savoir que je dois offrir des perf optimales, même si le serveur est occupé à encoder plusieurs fichiers à la fois.
 
Mais de ce côté, comment obtenir des données pertinentes sachant que je ne loue pas encore de serveur dédié à cet usage (un simple kimsufi pour mes tests à l'heure actuelle....)
 
Côté youtube, non, hors de question car c'est pour contourner ces services que je mets en place cette solution.
 
Merci encore, et bien entendu la question reste ouverte ;)


---------------
>>Achats & Ventes<<
Reply

Marsh Posté le 27-07-2013 à 14:03:24    

Je crois qu'il y a la commande -threads pour ce genre de chose. Spécifier «-threads 1» au lieu du maximum (par défaut) pourrait limiter la consommation de processeur et permettre d'encoder tranquillement en tache de fond.  :)  

Citation :

Après avoir continué mon exploration plus en profondeur je pense que la solution la plus viable consistera a encoder les fichiers direct après l'upload

Ca me semble la meilleure option.  :jap:  


---------------
KEF – Certains pensent. D'autres croient. Qui pensez vous qu'il faille croire ? – SC2 #HFR #Pony
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed