web-dev-qa-db-fra.com

Bureau en streaming avec avconv - problèmes de son graves

J'essaie de faire de la diffusion en direct dans Ubuntu 12.10, mais j'ai des problèmes avec l'audio. Plus précisément, la qualité est totale et il est au moins 10 secondes désynchronisé avec la vidéo.

J'utilise un excellent guide trouvé ici pour configurer mes périphériques de bouclage de manière à pouvoir combiner le son du bureau et l'entrée du microphone. Cela semble fonctionner, car je suis capable de diffuser du contenu audio et vidéo sur Twitch.tv. Mais, comme je l'ai dit, la qualité audio est terrible. Le son du microphone est très très faible, mais si je l'augmente, j'obtiens un son déformé horrible qui est absolument insupportable. Rien de tel n'est présent pendant les appels VoIP ou lorsque vous enregistrez du son seul avec l'enregistreur de son. Ce n'est donc pas un problème avec le microphone lui-même. L'ensemble du flux audio est également retardé d'environ 10-15 secondes par rapport au flux vidéo.

Je mets ensemble n album imgur de mes paramètres .

Voici un exemple de sortie de quand je suis en streaming:

avconv version 0.8.4-6:0.8.4-0ubuntu0.12.10.1, Copyright (c) 2000-2012 the Libav developers
  built on Nov  6 2012 16:51:11 with gcc 4.7.2
[x11grab @ 0x162fd80] device: :0.0+570,262 -> display: :0.0 x: 570 y: 262 width: 1280 height: 720
[x11grab @ 0x162fd80] shared memory extension  found
[x11grab @ 0x162fd80] Estimating duration from bitrate, this may be inaccurate
Input #0, x11grab, from ':0.0+570,262':
  Duration: N/A, start: 1353181686.735113, bitrate: 884736 kb/s
    Stream #0.0: Video: rawvideo, bgra, 1280x720, 884736 kb/s, 30 tbr, 1000k tbn, 30 tbc
[alsa @ 0x163fce0] capture with some ALSA plugins, especially dsnoop, may hang.
[alsa @ 0x163fce0] Estimating duration from bitrate, this may be inaccurate
Input #1, alsa, from 'Pulse':
  Duration: N/A, start: 1353181686.773841, bitrate: N/A
    Stream #1.0: Audio: pcm_s16le, 48000 Hz, 2 channels, s16, 1536 kb/s
Incompatible pixel format 'bgra' for codec 'libx264', auto-selecting format 'yuv420p'
[buffer @ 0x1641ec0] w:1280 h:720 pixfmt:bgra
[scale @ 0x1642480] w:1280 h:720 fmt:bgra -> w:852 h:480 fmt:yuv420p flags:0x4
[libx264 @ 0x165ae80] VBV maxrate unspecified, assuming CBR
[libx264 @ 0x165ae80] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2
[libx264 @ 0x165ae80] profile Main, level 3.1
[libx264 @ 0x165ae80] 264 - core 123 r2189 35cf912 - H.264/MPEG-4 AVC codec - Copyleft 2003-2012 - http://www.videolan.org/x264.html - options: cabac=1 ref=2 deblock=1:0:0 analyse=0x1:0x111 me=hex subme=6 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=4 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=0 b_adapt=1 b_bias=0 direct=1 weightb=0 open_gop=1 weightp=1 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=30 rc=cbr mbtree=1 bitrate=712 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 vbv_maxrate=712 vbv_bufsize=512 nal_hrd=none ip_ratio=1.25 aq=1:1.00
Output #0, flv, to 'rtmp://live.justin.tv/app/live_23011330_Pt1plSRM0z5WVNJ0QmCHvTPmpUnfC4':
  Metadata:
    encoder         : Lavf53.21.0
    Stream #0.0: Video: libx264, yuv420p, 852x480, q=-1--1, 712 kb/s, 1k tbn, 30 tbc
    Stream #0.1: Audio: libmp3lame, 44100 Hz, 2 channels, s16, 712 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (rawvideo -> libx264)
  Stream #1:0 -> #0:1 (pcm_s16le -> libmp3lame)
Press ctrl-c to stop encoding
frame=   17 fps=  0 q=0.0 size=       0kB time=10000000000.00 bitrate=   0.0kbitframe=   32 fps= 31 q=0.0 size=       0kB time=10000000000.00 bitrate=   0.0kbitframe=   40 fps= 23 q=29.0 size=      44kB time=0.03 bitrate=13786.2kbits/s dup=frame=   47 fps= 21 q=31.0 size=      93kB time=2.73 bitrate= 277.7kbits/s dup=0frame=   62 fps= 23 q=29.0 size=     160kB time=3.23 bitrate= 406.2kbits/s dup=0frame=   77 fps= 24 q=23.0 size=     209kB time=3.71 bitrate= 462.5kbits/s dup=0frame=   92 fps= 25 q=20.0 size=     267kB time=4.91 bitrate= 445.2kbits/s dup=0frame=  107 fps= 25 q=20.0 size=     318kB time=5.41 bitrate= 482.1kbits/s dup=0frame=  123 fps= 26 q=18.0 size=     368kB time=5.96 bitrate= 505.7kbits/s dup=0frame=  139 fps= 26 q=16.0 size=     419kB time=6.48 bitrate= 529.7kbits/s dup=0frame=  155 fps= 27 q=15.0 size=     473kB time=7.00 bitrate= 553.6kbits/s dup=0frame=  170 fps= 27 q=14.0 size=     525kB time=7.52 bitrate= 571.7kbits/s dup=0
frame=  180 fps= 25 q=-1.0 Lsize=     652kB time=7.97 bitrate= 670.0kbits/s dup=0 drop=32

//Here I stop the streaming

video:531kB audio:112kB global headers:0kB muxing overhead 1.345945%
[libx264 @ 0x165ae80] frame I:1     Avg QP:30.43  size: 39748
[libx264 @ 0x165ae80] frame P:45    Avg QP:11.37  size: 11110
[libx264 @ 0x165ae80] frame B:134   Avg QP:15.93  size:    27
[libx264 @ 0x165ae80] consecutive B-frames:  0.6%  0.0%  1.7% 97.8%
[libx264 @ 0x165ae80] mb I  I16..4:  7.3%  0.0% 92.7%
[libx264 @ 0x165ae80] mb P  I16..4:  0.1%  0.0%  0.1%  P16..4: 49.1%  1.2%  2.1%  0.0%  0.0%    skip:47.4%
[libx264 @ 0x165ae80] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:  0.1%  0.0%  0.0%  direct: 0.0%  skip:99.9%  L0:42.5% L1:56.9% BI: 0.6%
[libx264 @ 0x165ae80] coded y,uvDC,uvAC intra: 82.3% 87.4% 71.9% inter: 7.1% 8.4% 7.0%
[libx264 @ 0x165ae80] i16 v,h,dc,p: 27% 29% 16% 28%
[libx264 @ 0x165ae80] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 22% 21% 14%  8%  8%  8%  7%  5%  7%
[libx264 @ 0x165ae80] i8c dc,h,v,p: 47% 22% 20% 11%
[libx264 @ 0x165ae80] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x165ae80] ref P L0: 96.4%  3.6%
[libx264 @ 0x165ae80] kb/s:474.19
Received signal 2: terminating.

Des idées sur la façon dont je peux résoudre ce problème? Le délai vidéo est parfaitement acceptable, je ne pense donc pas que ce soit un problème de réseau qui cause le délai dans le son.

Toute aide serait appréciée.

EDIT: Sortie de haut et iotop .

6
Tommy Brunn
11090 nevon     20   0  526m 109m  14m S 101,4  0,7   1:14.19 avconv

Je soupçonne que c'est la clé ici. avconv semble fonctionner avec un seul thread et est complètement en train de lier le cœur de son processeur. Quel type de chipset vidéo votre système possède-t-il? Vous devrez peut-être exécuter vdpau (en supposant que vous avez nvidia) pour que tout fonctionne correctement.

C'est possible mais il me semble peu probable que le problème provienne de l'audio lui-même. Vous pouvez essayer de capturer un canal au lieu de deux et à un débit inférieur, pour voir si cela aide. Je pense vraiment que ce sera la vidéo qui sera le problème, cependant.

1
Jim Salter