[Streamer son bureau] FFmpeg (abandon)

Applications, problèmes de configuration réseau
Répondre
CamilleCoc
Daikyu
Messages : 77
Inscription : mar. 07 mars 2017, 19:46

[Streamer son bureau] FFmpeg (abandon)

Message par CamilleCoc »

Bonjour,
J'aimerais streamer l'écran de mon pc et envoyé le flux de ce stream vers un serveur web afin qu'une application externe récupère ce flux.
Après avoir fais des recherche, je pense que la meilleur solution est FFmpeg (qu'en pensez-vous) ?

J'ai donc tenté de streamer mon écran et d'envoyer le flux vers un serveur web.
Donc voilà mon petit serveur web en C :

Code : Tout sélectionner

int main(void)
{
    int sock, clientlen, n, port = 12345;
    char buf[1024], *host;

    sock = socket(AF_INET, SOCK_DGRAM, 0);

    if(bind(sock, (struct sockaddr *) &serveraddr, sizeof(serveraddr)) < 0) 
        clientlen = sizeof(clientaddr);

    while (;;)
    {
        bzero(buf, 1024);

        n = recvfrom(sock, buf, 1024, 0, (struct sockaddr *) &clientaddr, &clientlen);
    }

    return 0;
}
Et voilà la commande que j'utilise pour streamer mon écran :

Code : Tout sélectionner

ffmpeg -f x11grab -vcodec libx264  -f mpegts udp://192.168.1.67:12546
Sauf que FFmpeg me renvoie une erreur :

Code : Tout sélectionner

Output #0, mpegts, to 'tcp://192.168.1.12:12546':
Output file #0 does not contain any stream
Pourtant j'ai bien lancé mon serveur web sur le port 12546, mon adresse IP local est bonne et mon pare-feu est désactivé.
Dernière modification par CamilleCoc le mer. 26 avr. 2017, 20:33, modifié 1 fois.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17222
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Streamer son bureau] FFmpeg

Message par benjarobin »

Ta ligne de commande ffmeg est invalide, essaye quelque chose comme :

Code : Tout sélectionner

ffmpeg -video_size 1024x768 -framerate 25 -f x11grab -i :0.0+0,0 -vcodec libx264 -tune zerolatency -b:v 900k -f mpegts udp://127.0.0.1:12345
Pour rappel en UDP il n'y a pas de connexion, donc pas besoin d'avoir un serveur qui écoute sur ce port pour que ffmeg soit content

PS: Ce que tu as codé peut difficilement être appelé un serveur Web (écoute sur un port UDP et ne gère encore moins le HTTP)
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
CamilleCoc
Daikyu
Messages : 77
Inscription : mar. 07 mars 2017, 19:46

Re: [Streamer son bureau] FFmpeg

Message par CamilleCoc »

Merci pour ta réponse.
benjarobin a écrit : sam. 22 avr. 2017, 18:31 Ta ligne de commande ffmeg est invalide
Mais je l'ai trouvé ici : https://trac.ffmpeg.org/wiki/StreamingGuide
Originale :

Code : Tout sélectionner

ffmpeg -f dshow -i video="Virtual-Camera" -vcodec libx264 -tune zerolatency -b 900k -f mpegts udp://10.1.0.102:1234
Ta commande marche, mais le recv retourne -1 4 fois sur 5 :o

Et ensuite, si je veux récupérer du flux mp4, je fais comment ?

Parce que sur mon serveur, je voulais un truc du genre :

Code : Tout sélectionner

FILE *file = open("out.mp4", "wb");

while(1)
{
    n = recvfrom(sock, buf, 1024, 0, (struct sockaddr *) &clientaddr, &clientlen);
    
    fwrite(buf, n, 1, file);
}
Afin de pouvoir jouer le stream mp4.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17222
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Streamer son bureau] FFmpeg

Message par benjarobin »

Voir le errno, mais je penche pour un ENOMEM. Ton buffer est très certainement trop petit.
Sinon ce que tu comptes faire ne marchera pas
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
CamilleCoc
Daikyu
Messages : 77
Inscription : mar. 07 mars 2017, 19:46

Re: [Streamer son bureau] FFmpeg

Message par CamilleCoc »

benjarobin a écrit : sam. 22 avr. 2017, 19:52 Voir le errno, mais je penche pour un ENOMEM. Ton buffer est très certainement trop petit.
Errno me dit Invalid argument (la valeur de errno vaut 22 : EINVAL).
Mais ca ne me le fais pas tout le temps (4 fois sur 5 environ)...
benjarobin a écrit : sam. 22 avr. 2017, 19:52 Sinon ce que tu comptes faire ne marchera pas
A zut ! Et pourquoi ?
Du coup comment faire si je veux récupérer le stream de mon écran en mp4 ?
J'aimerais pouvoir récupérer sur une adresse locale et un port Y : 192.168.X.X:Y , une vidéo mp4 de mon stream de mon bureau (donc la vidéo mp4 grossit sans cesse)...
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17222
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Streamer son bureau] FFmpeg

Message par benjarobin »

Pourquoi développer quelque chose, tu mets 2 VLC de chaque côté et cela fonctionnera. Pour information VLC a été développé à la base pour faire ceci
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
CamilleCoc
Daikyu
Messages : 77
Inscription : mar. 07 mars 2017, 19:46

Re: [Streamer son bureau] FFmpeg

Message par CamilleCoc »

2 VLC ? C'est à dire ?
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17222
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Streamer son bureau] FFmpeg

Message par benjarobin »

Un VLC qui envoi et un qui reçoit le flux vidéo. Je ne comprends pas pourquoi tu veux réinventer la roue ?
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
CamilleCoc
Daikyu
Messages : 77
Inscription : mar. 07 mars 2017, 19:46

Re: [Streamer son bureau] FFmpeg

Message par CamilleCoc »

Je ne veux pas réinventer la roue, mais pour moi, VLC c'est le lecteur vidéo pour visionner des films avec le plot orange et blanc :o
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17222
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Streamer son bureau] FFmpeg

Message par benjarobin »

Euh, oui sauf qu'à la base il n'a pas été conçu pour cela... À la base son but était de faire ce que tu veux faire
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
CamilleCoc
Daikyu
Messages : 77
Inscription : mar. 07 mars 2017, 19:46

Re: [Streamer son bureau] FFmpeg

Message par CamilleCoc »

Effectivement : https://wiki.videolan.org/LibVLC/
Je vais regarder ça. Merci
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17222
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Streamer son bureau] FFmpeg

Message par benjarobin »

Pourquoi tu pointes vers libvlc ? Pourquoi ne pas utiliser VLC tout simplement....
Le mieux est de faire un serveur rtsp avec VLC, il y a un article ici http://techno.firenode.net/article.sh?i ... 5410822197
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
CamilleCoc
Daikyu
Messages : 77
Inscription : mar. 07 mars 2017, 19:46

Re: [Streamer son bureau] FFmpeg

Message par CamilleCoc »

Merci pour le lien :D
Quand je lance la commande

Code : Tout sélectionner

vlc  dshow:// --sout=#transcode{fps=30,vcodec=mp4v,vb=1024,width=640,height=480,acodec=mp4a,ab=64,channels=1}
:rtp{mux=ts,ttl=10,name="Webcam",description="Webcam au format MPEG-4",port=1234,sdp=rtsp://192.168.1.12:8080/test.sdp}
il me met comme erreur :

Code : Tout sélectionner

[00007f8804000b98] core stream output error: stream chain failed for `transcodechannels=1:rtpsdp=rtsp://192.168.1.12:8080/test.sdp'
CamilleCoc
Daikyu
Messages : 77
Inscription : mar. 07 mars 2017, 19:46

Re: [Streamer son bureau] FFmpeg

Message par CamilleCoc »

Bon, j'ai enfin réussi à faire marcher la ligne de commande et d'envoyer le flux de stream vers mon adresse locale.

Code : Tout sélectionner

cvlc screen:// --sout '#transcode{fps=30,vcodec=mp4v,vb=1024,width=1920,height=1080,acodec=mp4a,ab=128,channels=2}:rtp{mux=ts,ttl=10s,port=12546,sdp=http://192.168.1.12:12546}'
.
Mais ensuite côté serveur, je fais comment pour le récupérer ? Parce qu'avec mon server qui écoute sur le port 12546 en udp, il ne recoit rien :o
CamilleCoc
Daikyu
Messages : 77
Inscription : mar. 07 mars 2017, 19:46

Re: [Streamer son bureau] FFmpeg

Message par CamilleCoc »

Personne ?
CamilleCoc
Daikyu
Messages : 77
Inscription : mar. 07 mars 2017, 19:46

Re: [Streamer son bureau] FFmpeg

Message par CamilleCoc »

Bon, en regardant de plus près chez ffmpeg, j'ai trouvé plusieurs articles intéressant.
J'ai donc cette commande pour streamer mon bureau :

Code : Tout sélectionner

ffmpeg -f x11grab -i :0.0 -rtsp_transport tcp -i rtsp://127.0.0.1:12345
mais ca marche pas
Répondre