comment diffuser des vidéos en direct sans latence (ffplay, mplayer) et ce type d'emballage peut être utilisé avec ffplay?
J'ai testé de jouer plusieurs flux en direct à l'aide de différents joueurs parce que je voulais la latence la plus faible valeur. J'ai essayé de gstreamer joueur (gst-launch-0.01), mplayer, totem et ffmpeg joueur (ffplay). J'ai utilisé différentes valeurs de configuration pour obtenir la plus faible latence pour chacun d'eux, par exemple:
ffplay -fflags nobuffer
mplayer -benchmark
Le protocole je suis en streaming avec est udp et j'en suis mieux les valeurs avec ffplay que mplayer ou gst-launch. Pour être honnête, je ne sais pas quel genre de configuration que j'ai besoin de faire de la gstreamer pour obtenir une latence plus faible.
Maintenant, j'ai besoin de deux choses:
- Je voudrais savoir si quelqu'un a une meilleure suggestion à propos de la diffusion d'un flux vidéo en direct avec un temps de latence inférieur < 100 ms. Je suis maintenant en train de monter à 100 ms qui n'est pas vraiment efficace pour moi.
- Depuis que je suis en utilisant ffplay actuellement, parce que c'est le meilleur jusqu'à présent. Je voudrais faire une interface simple avec un jeu et le bouton d'enregistrement et 3 écrans pour diffuser de la vidéo de différents serveurs, je ne sais pas quel type d'emballage (qui devrait être très rapide) à utiliser!
100ms est complètement déraisonnable faible temps de latence. La plupart des cartes son ne peut pas faire que peu de temps de latence. Vous avez besoin de matériel créée dans le but de latences que faible, et il ne fonctionne pas sur internet.
Je n'ai pas de son dans mon flux il est désactivé, de toute façon .. où puis-je acheter un tel matériel ?
Ce n'est pas le point... de mon point est que 100ms est très faible latence, et si vous avez une exigence de latence de cette basse vous sont en train de faire quelque chose de très spécialisés. Je suggère que vous revenez à vos besoins de sorte que vous pouvez obtenir une solution raisonnable. Même la plupart des pro n'est pas faible: vtx.co.royaume-uni/produit.aspx?id=205 Et, ce n'est pas sur l'internet.
ok, disons que je suis heureux avec les valeurs que je reçois.. avez-vous une idée sur comment je peux faire une simple interface graphique sur le dessus de ffplay qui ne sera pas causer encore plus de retard ?
trac.ffmpeg.org/wiki/StreamingGuide a une section sur le temps de latence..
Je n'ai pas de son dans mon flux il est désactivé, de toute façon .. où puis-je acheter un tel matériel ?
Ce n'est pas le point... de mon point est que 100ms est très faible latence, et si vous avez une exigence de latence de cette basse vous sont en train de faire quelque chose de très spécialisés. Je suggère que vous revenez à vos besoins de sorte que vous pouvez obtenir une solution raisonnable. Même la plupart des pro n'est pas faible: vtx.co.royaume-uni/produit.aspx?id=205 Et, ce n'est pas sur l'internet.
ok, disons que je suis heureux avec les valeurs que je reçois.. avez-vous une idée sur comment je peux faire une simple interface graphique sur le dessus de ffplay qui ne sera pas causer encore plus de retard ?
trac.ffmpeg.org/wiki/StreamingGuide a une section sur le temps de latence..
OriginalL'auteur user573014 | 2014-01-19
Vous devez vous connecter pour publier un commentaire.
Bien, pour un très faible temps de latence streaming scénario, vous pouvez essayer de NTSC. Son temps de latence peut être sous 63us (microsecondes) idéalement.
Numérique en streaming avec une qualité approchant NTSC et un de 40 ms temps de latence budget de voir rsaxvc réponse à 120 hz. Si vous avez besoin de Plus de La diffusion d'Air, c'est le meilleur à faible latence option que j'ai vu et c'est très bien pensée et la résolution de mise à l'échelle avec le matériel de la capacité.
Si vous voulez dire streaming numérique et vous souhaitez de bons taux de compression, c'est à dire 1080p en wifi, alors que vous êtes hors de la chance si vous voulez moins de 100ms de latence aujourd'hui avec du matériel de base, parce que pour qu'un algorithme de compression pour donner un bon taux de compression, il faut beaucoup de contexte. Par exemple, Mpeg 1 12 images dans un ipbbpbbpbbpb GOP (groupe d'images) arrangement où i est un 'intra' image qui est effectivement un jpeg, un p est un prédictive cadre qui code pour certains mouvements entre i et p des cadres, et b encoder des images spot corrections où la prédiction ne fonctionne pas très bien. De toute façon, 12 images, même à 60fps est encore 200ms, donc c'est de 200ms juste de capturer les données, puis peu de temps à encoder, puis peu de temps à transmettre, puis peu de temps à le décoder, puis peu de temps pour le tampon de l'audio afin que la carte son ne fonctionne pas de données alors que le CPU est l'envoi d'un nouveau bloc de mémoire DMA région, et dans le même temps, 2 à 3 images de la vidéo doivent être mis en file d'attente jusqu'à envoyer à l'affichage vidéo afin d'éviter la déchirure sur un affichage numérique. Si vraiment il y a un minimum de 15 images ou de 250ms, plus la latence engagés dans la transmission. NTSC n'a pas de telles latences parce qu'il est transmis analogique avec la seule "compression" deux astuces sournois: l'entrelacement où seulement la moitié de chaque trame est transmise à chaque fois que les autres lignes, même sur une image, bizarre sur la suivante, puis la deuxième astuce est de couleur compression de l'espace par l'utilisation de 3 pixels noirs et blancs et sa phase de discrimination pour déterminer de quelle couleur est indiqué, de sorte que la couleur est transmise à 1/3 de la largeur de bande de la luminosité (luminance) du signal. Cool hein? Et je suppose que vous pourriez dire que l'audio a une sorte de "compression" ainsi que le contrôle automatique du gain pourrait être utilisée pour faire un 20dB signal audio analogique semble plus proche d'un 60dB expérience par projection de nos oreilles de nos chefs à des publicités en raison de l'AGC monter le volume durant les 2 à 3 secondes de silence entre le spectacle et le commercial. Plus tard, lorsque nous avons eu la plus grande fidélité les circuits audio, des publicités ont été effectivement diffusé plus fort que montre, mais c'est juste leur façon de fournir le même impact que les anciens Téléviseurs avait donné les annonceurs.
Cette promenade dans le passé apporté à vous par la Nostalgie (tm). Acheter la Nostalgie de la marque de savon de toilette! 😉
Ici est la meilleure que j'ai réalisé sous Ubuntu 18.04 avec le stock de
ffmpeg
etmpv
. Cela nécessite une 3e génération processeur Intel ® Core ou plus tard. Voir ffmpeg site pour les directions à l'utilisation du matériel NVidia au lieu de codage.Et ensuite sur le support de la boîte:
Cela permet d'obtenir environ 250 ms temps de latence pour le 1080p@60hz autour de 3 mbits /s, ce qui est ok pour la diffusion de spectacles sur le wifi.
mpv
peut ajuster pour synchronisation labiale (CTRL +- pendant le jeu). C'est tolérable pour la diffusion de bureau clavier/souris interactions pour le contrôle des médias, mais c'est inutilisable pour le jeu en temps réel (voir la NVidia Shield, Google Stades de jeux à distance)Vrai, mais j'ai dit que si "vous voulez tout type de compression efficace" et de jeter B et P trames fondamentalement, il devient un flux MJPEG. J'ai également essayé de peindre un portrait de toutes les choses qui contribuent à la latence, dont la plupart sont inévitables... j'ai oublié de mentionner également l'entrée de latence de l'écran lui-même qui peut aussi être une portion assez significative de l'OP est très optimiste "<100ms de" latence budget. VNC pouvez gérer en vertu de 100ms, mais ce n'est pas "streaming vidéo".
mplayer jouer un UDP tuyau de intraframe-actualisation des cadres bat facilement 100mS sur le WiFi. 20mS ou moins de retard de commande de 60 ms pour la compression, de transport, de décompression 20mS ou moins pour la sortie du gal
vous venez de donner à un total qui vient à 100ms. Si vous avez une réponse qui bat à 100 ms avec un bon taux de compression, s'il vous plaît poster de sorte qu'il peut être accepté, diable, je vais voter le vôtre et supprimer ma réponse si votre réponse, lol.
Fait. Je ne voulais pas le poster à l'origine, car il est assez de niche.
OriginalL'auteur Wil
Le problème avec les médias traditionnels joueurs comme VLC, ffmpeg, et dans une certaine mesure, mplayer, est qu'ils vont essayer de jouer à la même fréquence, et cela nécessite une certaine mise en mémoire tampon, qui tue le temps de latence de la cible. L'alternative est de rendre la vidéo entrant aussi vite que vous le pouvez, et ne pas vous soucier de rien d'autre.
@genpfault et j'ai fait une coutume protocole UDP, prévu pour le vol RC voitures et quads. C'est des cibles à faible latence à la charge de pratiquement tout le reste(résolution, bitrate, packetrate, l'efficacité de la compression). Dans les plus petites résolutions, nous avons obtenu de courir plus de 115200 bauds UART et XBEE, mais la vidéo sous ces restrictions n'était pas aussi utile que nous l'avions espéré. Aujourd'hui, je suis mise à l'essai dans un 320x240 configuration, en cours d'exécution sur un ordinateur portable(Intel i5-2540M), depuis je n'ai plus la configuration d'origine.
Vous avez besoin pour planifier vos temps de latence budget, c'est ici où j'ai passé la mienne:
Le total se chiffre à: 40.2 mS.
Encodage:
À l'époque, X264 était le meilleur H264-AnnexB encodeur nous avons pu trouver. Nous avons eu de contrôle de débit, tranche-max-size, vpv-bufsize, vpv-maxrate. Démarrer avec les paramètres par défaut pour "superfast", et "zerolatency", qui permettra de désactiver les B-frames.
En outre, les échanges intra-rafraîchissement d'image est un must! Effectivement, cela permet de découper la normale 'je' image et en se mêlant à la suite de P-frames. Sans cela, vous aurez des "bulles" dans le débit de la demande qui va temporairement l'obstruction des transports, de l'augmentation de la latence.
Encodage-Transport-Planification:
Le codeur a été à l'écoute de générer de l'UDP-taille H264 NALUs. De cette façon, quand un paquet UDP a été abandonné, tout un H264 NALU a été abandonné, et nous n'avons pas de resynchroniser, le décodeur juste une sorte de...burped...et a continué avec certains de corruption graphique.
Résultats définitifs 320x240
C'est...le plus vite que je peux mesurer de manière fiable avec un téléphone cellulaire pointée sur une caméra pointée sur mon ordinateur portable. Taux de Compression 320x240x2B = 150 ko/image, comprimé à un peu plus de 3 ko/image.
Additionally, intra-frame refresh is a must!
- peut-être expliquer que c'est un remplacement normal des images clés, où l'écran est divisé en bandes horizontales entrelacés avec les P-frames dans le GOP, de sorte que la bande passante de l'image clé est répartie uniformément et comme un avantage secondaire de votre application, c'est un peu plus tolérante aux erreurs sur UDP que de les envoyer tous à la fois. Lorsque vous regardez F1GP courses et de vous voir à la verticale essuyez/recycler du signal lorsque le signal se décompose, c'est exactement ce qui se passe et c'est exactement la technique qu'ils utilisent.Votre panneau d'entrée décalage budget est extrêmement optimisitic... pas impossible, mais peu de gens l'expérience de quelque chose en dessous de 9ms et typique est beaucoup, beaucoup plus élevé, même dans les centaines de ms. Mais je vais régler ma réponse 🙂
OriginalL'auteur rsaxvc