2017-08-25 6 views
0

Je suis en streaming une webcam/audio avec la commande:le streaming RTP avec audio FFmpeg et la sortie vidéo de synchronisation

ffmpeg.exe -f dshow -framerate 30 -i video="xxx" -c:v libx264 -an -f rtp rtp://localhost:50041 -f dshow -i audio="xxx" -c:a aac -vn -f rtp rtp://localhost:50043 

Fournit les informations sdp suivantes:

v=0 
    o=- 0 0 IN IP4 127.0.0.1 
    s=No Name 
    t=0 0 
    a=tool:libavformat 57.65.100 
    m=video 50041 RTP/AVP 96 
    c=IN IP6 ::1 
    a=rtpmap:96 H264/90000 
    a=fmtp:96 packetization-mode=1 
    m=audio 50043 RTP/AVP 97 
    c=IN IP6 ::1 
    b=AS:128 
    a=rtpmap:97 MPEG4-GENERIC/44100/2 
    a=fmtp:97 profile-level-id=1;mode=AAC- 
    hbr;sizelength=13;indexlength=3;indexdeltalength=3; config=121056E500 

Et je lis le flux avec la commande:

ffmpeg.exe -protocol_whitelist file,udp,rtp -i D:\test.sdp -c:v libx264 -c:a aac d:\out.mp4 

Dans le fichier résultant, l'audio est légèrement en avance sur la vidéo. J'ai lu que RTCP s'exécute sur le port RTP + 1 et contient des informations de synchronisation. Cependant, je ne vois aucune information RTCP dans le fichier SDP.

Dois-je spécifier quelque chose pour inclure RTCP?

Si ce n'est pas le problème, que puis-je faire d'autre pour synchroniser l'audio et la vidéo?

Répondre

1

Je ne sais pas si RTCP est votre problème, mais je commencerais en essayant d'utiliser une entrée DirectShow et le fractionnement à deux sorties comme ceci:

ffmpeg.exe -f dshow -framerate 30 -i video="XX":audio="YY" -an -vcodec libx264 -f rtp rtp://localhost:50041 -acodec aac -vn -f rtp rtp://localhost:50043 

Le ffmpeg DirectShow documentation mentionne des problèmes de synchronisation lorsque plusieurs entrées sont utilisées. Il mentionne également d'essayer l'indicateur "-copy_ts" pour résoudre les problèmes de synchronisation si vous voulez garder les entrées séparées.

+0

Wow, merci beaucoup, cela a fait l'affaire! J'avais lu la page DirectShow et essayé toutes les autres suggestions, mais je ne me suis jamais rendu compte qu'il était possible de lire comme une entrée et de diffuser vers deux sorties. –