Bonjour à tous les lecteurs!
Je continue le thème de l'émulateur logiciel pour PlayStation 2 et PlayStation Portable - Omega Red. Plus de détails:
J'ai écrit cette publication en relation avec la nouvelle fonctionnalité que j'ai ajoutée au projet - la diffusion en continu de processus de jeux vidéo et audio en direct de l'émulateur vers des services Internet en streaming bien connus.
Bienvenue à Kat.
Pour commencer, je noterai ce qui suit - l’idée d’intégrer la prise en charge de la diffusion sur Internet est née de mon autre projet -
CaptureManager SDK . J'ai expérimenté la diffusion à partir d'une webcam et j'ai obtenu un code exploitable. Et l'idée «est venue» - d'incorporer ce code dans l'émulateur de console de jeu!
La tâche est intéressante dans les aspects suivants: capture de vidéo et audio. La capture à partir de la caméra est assez simple, mais que faire avec la capture vidéo à partir du rendu de l'émulateur!?! Vous pouvez trouver du code pour capturer l'ensemble du bureau - mais c'est tellement SIMPLE. Et si vous capturez des graphiques directement à partir du rendu graphique! Une idée similaire avec la capture audio - généralement la capture audio est effectuée à partir du mélangeur système en tant que duplication du flux audio vers les haut-parleurs. Et si vous capturez l'audio directement à partir du rendu audio AVANT le mélangeur système!
Intéressant! Original!
Comment il est implémenté: le code de capture est ajouté au moteur de rendu DirectX 11 et au moteur de rendu DirectSound. Le résultat du rendu des graphiques est directement transmis à l'encodeur vidéo H264 via la texture vidéo DirectX 11 - cela vous permet d'utiliser l'encodage vidéo accéléré par le matériel sur un accélérateur graphique. Le flux audio est acheminé vers l'encodeur audio AAC intégré à Windows.
Le contrôle de capture se compose de deux parties:
- mise en place du codage et de la sélection du service Internet en streaming pour la diffusion de vidéo en direct;
- configuration du mélangeur - mélange de vidéo en direct avec des sources supplémentaires (webcam, fichiers JPG / PNG / GIF (animés)).
Paramètre d'encodage:
La configuration du streaming commence par le choix du mode de capture - «Streaming». Dans ce mode, vous pouvez ajuster le débit de données pour les flux vidéo et audio en fonction de la vitesse de connexion Internet disponible. Séparément, vous pouvez choisir un service de streaming ou RECUPERER LE MANUEL l'adresse complète d'un serveur de streaming - par exemple, VOTRE PROPRE serveur basé sur
MonaServer . Il est important de noter que non seulement une connexion ouverte est prise en charge, mais également une connexion sécurisée (SSL)! Le service de streaming Facebook (oui, il y en a un) a publié l'annonce suivante:
«À partir du 1er novembre 2019, nous cesserons de prendre en charge les URL de serveur RTMP. Après cela, les URL non protégées ne peuvent pas être utilisées pour les diffusions vidéo. Mettez à jour les paramètres du périphérique de codage vidéo et utilisez les URL RTMPS sécurisées »- J'ai décidé que la prise en charge de RTMPS était prometteuse et j'ai passé le temps à« visser »OpenSSL à la bibliothèque RTMP. Et le code FONCTIONNE !!! Facebook est diffusé via une connexion sécurisée!
Le flux commence en appuyant sur le bouton d'enregistrement / streaming:
Les paramètres de mixage deviennent disponibles après le début de l'enregistrement / streaming:

Dans le panneau «Média», l'onglet «Sources multimédias» devient disponible - cet onglet inclut les sources des flux vidéo et audio disponibles pour le mixage. En plus des webcams et des microphones, vous pouvez ajouter des fichiers JPG / PNG / GIF (animés).
Pour les microphones, vous pouvez contrôler la proportion de mixage des flux audio. Le microphone est sélectionné en cliquant sur le bouton de vérification, le contrôle du mixage est effectué par le curseur.
Pour une source vidéo, vous pouvez contrôler le mixage des flux vidéo. La caméra est sélectionnée en cliquant sur le bouton cocher, la taille de l'image de la caméra est sélectionnée via le menu déroulant.
La transparence (ou la non-transparence) du mixage peut être contrôlée via un curseur séparé.
La position et la taille du mixage des flux vidéo peuvent être modifiées à tout moment pendant la diffusion:
Démo en streaming:
Actuellement, le programme est disponible sur:
Omega Red et est présenté sur GitHub:
OmegaRed .
PS La qualité vidéo sur le flux est figée - j'ai Internet ADSL - un flux constant sur YouTube uniquement avec une vitesse de flux vidéo allant jusqu'à 256 Kbit - vous n'avez pas besoin de cracher sur l'écran - cela n'aidera pas.