Bug Report Elgato Game Capture HD audio desync issue

Haliinen

Member
Hello,

Just want this reported, the audio is synced up fine in the beginning of the broadcast, about 10 minutes in, or a little more, the audio starts to desync with the video.

https://www.youtube.com/watch?v=VcI13TX0kjo

Read the description of this video to get a clear view of what is going on. Originally I delayed the audio by 2 seconds (before I started the broadcast) because that is how long it takes for the encoder to show the frames on screen, but it gets delayed by one more second while I'm streaming later on, which can be fixed by going into properties of the video capture and delaying the audio by 1 more second. Not sure if there is a setting I've missed that can potentially fix this.

EDIT: Forgot to post a log file, sorry

Code:
Open Broadcaster Software v0.47a - 32bit (´・ω・`)
-------------------------------
CPU Name: Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz
CPU Speed: 4500MHz
Physical Memory:  4095MB Total, 4095MB Free
stepping id: 7, model 10, family 6, type 0, extmodel 1, extfamily 0, HTT 1, logical cores 8, total cores 4
Windows Version: 6.1 Build 7601 S
Aero is Enabled
------------------------------------------
Adapter 1
  Video Adapter: NVIDIA GeForce GTX 580
  Video Adapter Dedicated Video Memory: 1560739840
  Video Adapter Shared System Memory: 2684235776
=====Stream Start=====================================================================
  Multithreaded optimizations: On
  Base resolution: 1280x720
  Output resolution: 1280x720
------------------------------------------
Loading up D3D10...
Playback device {0.0.0.00000000}.{7e0878bb-1753-46c7-a0d7-05d677ba48be}
------------------------------------------
Using desktop audio input: Speakers (ASUS Xonar Essence STX Audio Device)
------------------------------------------
Audio Encoding: AAC
    bitrate: 192
------------------------------------------
    device: Elgato Game Capture HD,
    device id {39F50F4C-99E1-464a-B6F9-D605B4FB5918},
    chosen type: UYVY, usingFourCC: false, res: 1280x720 - 1280x720, fps: 30-30, fourCC: 'UYVY'

    device audio info - bits per sample: 16, channels: 2, samples per sec: 48000, block size: 4
Using directshow input
------------------------------------------
Video Encoding: x264
    fps: 60
    width: 1280, height: 720
    preset: fast
    CBR: no
    CFR: no
    max bitrate: 3308
    buffer size: 6616
    quality: 10
------------------------------------------
Using RTMP service: Twitch / Justin.tv
  Server selection: rtmp://live-lhr-backup.justin.tv/app
bufferTime: 2117, outputRateWindowTime: 1000, dropThreshold: 2617
Total frames rendered: 71470, number of frames that lagged: 55 (0.08%) (it's okay for some frames to lag)
RTMPPublisher::SocketLoop: Aborting due to bStopping
Number of b-frames dropped: 0 (0%), Number of p-frames dropped: 0 (0%), Total 0 (0%)
=====Stream End=======================================================================
=====Stream Start=====================================================================
  Multithreaded optimizations: On
  Base resolution: 1280x720
  Output resolution: 1280x720
------------------------------------------
Loading up D3D10...
Playback device {0.0.0.00000000}.{7e0878bb-1753-46c7-a0d7-05d677ba48be}
------------------------------------------
Using desktop audio input: Speakers (ASUS Xonar Essence STX Audio Device)
------------------------------------------
Audio Encoding: AAC
    bitrate: 192
------------------------------------------
    device: Elgato Game Capture HD,
    device id {39F50F4C-99E1-464a-B6F9-D605B4FB5918},
    chosen type: UYVY, usingFourCC: false, res: 1280x720 - 1280x720, fps: 30-30, fourCC: 'UYVY'

    device audio info - bits per sample: 16, channels: 2, samples per sec: 48000, block size: 4
Using directshow input
------------------------------------------
Video Encoding: x264
    fps: 60
    width: 1280, height: 720
    preset: fast
    CBR: no
    CFR: no
    max bitrate: 3308
    buffer size: 6616
    quality: 10
------------------------------------------
Total frames rendered: 3266, number of frames that lagged: 0 (0.00%) (it's okay for some frames to lag)
=====Stream End=======================================================================
=====Stream Start=====================================================================
  Multithreaded optimizations: On
  Base resolution: 1280x720
  Output resolution: 1280x720
------------------------------------------
Loading up D3D10...
Playback device {0.0.0.00000000}.{7e0878bb-1753-46c7-a0d7-05d677ba48be}
------------------------------------------
Using desktop audio input: Speakers (ASUS Xonar Essence STX Audio Device)
------------------------------------------
Audio Encoding: AAC
    bitrate: 192
------------------------------------------
    device: Elgato Game Capture HD,
    device id {39F50F4C-99E1-464a-B6F9-D605B4FB5918},
    chosen type: UYVY, usingFourCC: false, res: 1280x720 - 1280x720, fps: 30-30, fourCC: 'UYVY'

    device audio info - bits per sample: 16, channels: 2, samples per sec: 48000, block size: 4
Using directshow input
------------------------------------------
Video Encoding: x264
    fps: 60
    width: 1280, height: 720
    preset: fast
    CBR: yes
    CFR: no
    max bitrate: 3308
------------------------------------------
Using RTMP service: Twitch / Justin.tv
  Server selection: rtmp://live-lhr-backup.justin.tv/app
bufferTime: 2132, outputRateWindowTime: 1000, dropThreshold: 2632
Total frames rendered: 37828, number of frames that lagged: 18 (0.05%) (it's okay for some frames to lag)
RTMPPublisher::SocketLoop: Aborting due to bStopping
Number of b-frames dropped: 0 (0%), Number of p-frames dropped: 0 (0%), Total 0 (0%)
=====Stream End=======================================================================

Profiler results:

==============================================================
frame - [100%] [avg time: 4.601 ms] [avg calls per frame: 1] [children: 91.2%] [unaccounted: 8.76%]
| scene->Preprocess - [10.3%] [avg time: 0.473 ms] [avg calls per frame: 1]
| video encoding and uploading - [81%] [avg time: 3.725 ms] [avg calls per frame: 1] [children: 20.8%] [unaccounted: 60.2%]
| | CopyResource - [0.283%] [avg time: 0.013 ms] [avg calls per frame: 0]
| | conversion to 4:2:0 - [0.0435%] [avg time: 0.002 ms] [avg calls per frame: 0]
| | call to encoder - [20.3%] [avg time: 0.935 ms] [avg calls per frame: 0]
| | sending stuff out - [0.13%] [avg time: 0.006 ms] [avg calls per frame: 0]
==============================================================
 

Lain

Forum Admin
Lain
Forum Moderator
Developer
I'm actually not entirely sure what to do if the audio actually starts going out of sync on that device. Talk about frustrating
 

hacky

New Member
I'm having this exact same issue. Elgato Game Capture HD, and desync starting to be noticeable as soon as 10 minutes in.

I've got a 90-minute long Rock Band 3 VOD here, the delay is apparent as soon as 15 minutes into the VOD, and is extremely apparent by the end.
http://www.twitch.tv/hackychannel/b/368904018

Relevant log here: (I believe the VOD above was the first stream start/end in this log)
Code:
Open Broadcaster Software v0.472b - 32bit (´・ω・`)
-------------------------------
CPU Name: Intel(R) Core(TM) i7-2630QM CPU @ 2.00GHz
CPU Speed: 1995MHz
Physical Memory:  4095MB Total, 3228MB Free
stepping id: 7, model 10, family 6, type 0, extmodel 1, extfamily 0, HTT 1, logical cores 8, total cores 4
monitor 1: pos={0, 0}, size={1366, 768}
Windows Version: 6.1 Build 7601 S
Aero is Enabled
------------------------------------------
Adapter 1
  Video Adapter: Intel(R) HD Graphics Family
  Video Adapter Dedicated Video Memory: 67108864
  Video Adapter Shared System Memory: 1711276032
------------------------------------------
Adapter 2
  Video Adapter: NVIDIA GeForce GT 525M  
  Video Adapter Dedicated Video Memory: 1041825792
  Video Adapter Shared System Memory: 2906189824
=====Stream Start=====================================================================
  Multithreaded optimizations: On
  Base resolution: 1280x720
  Output resolution: 852x480
------------------------------------------
Loading up D3D10...
Playback device Default
------------------------------------------
Using desktop audio input: Speakers (Realtek High Definition Audio)
------------------------------------------
Using auxilary audio input: Microphone (5- Producer USB)
------------------------------------------
Audio Encoding: AAC
    bitrate: 128
------------------------------------------
    device: Elgato Game Capture HD,
    device id {39F50F4C-99E1-464a-B6F9-D605B4FB5918},
    chosen type: UYVY, usingFourCC: false, res: 1280x720 - 1280x720, fps: 30-30, fourCC: 'UYVY'

    device audio info - bits per sample: 16, channels: 2, samples per sec: 48000, block size: 4
Using directshow input
x264: using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX
x264: profile High, level 3.1
------------------------------------------
Video Encoding: x264
    fps: 30
    width: 852, height: 480
    preset: veryfast
    CBR: no
    CFR: no
    max bitrate: 900
    buffer size: 1800
    quality: 7
------------------------------------------
Using RTMP service: Twitch / Justin.tv
  Server selection: rtmp://live-3c.justin.tv/app
bufferTime: 1400, outputRateWindowTime: 1000, dropThreshold: 1900
Total frames rendered: 163812, number of frames that lagged: 0 (0.00%) (it's okay for some frames to lag)
RTMPPublisher::SocketLoop: Aborting due to bStopping
Number of b-frames dropped: 0 (0%), Number of p-frames dropped: 0 (0%), Total 0 (0%)
x264: frame I:1045  Avg QP:25.86  size: 18868
x264: frame P:86837 Avg QP:29.27  size:  4683
x264: frame B:75886 Avg QP:30.73  size:  1138
x264: consecutive B-frames: 19.6% 52.0% 11.4% 17.0%
x264: mb I  I16..4: 27.8% 45.2% 27.0%
x264: mb P  I16..4: 10.1%  9.7%  0.7%  P16..4: 23.7% 10.2%  3.8%  0.0%  0.0%    skip:41.7%
x264: mb B  I16..4:  0.9%  0.8%  0.1%  B16..8: 10.2%  3.5%  0.3%  direct: 2.9%  skip:81.4%  L0:33.0% L1:54.2% BI:12.9%
x264: 8x8 transform intra:47.1% inter:36.1%
x264: coded y,uvDC,uvAC intra: 27.1% 40.0% 10.6% inter: 6.2% 11.8% 0.6%
x264: i16 v,h,dc,p: 45% 30% 17%  8%
x264: i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 18% 27% 38%  2%  3%  3%  3%  3%  4%
x264: i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 19% 30% 17%  5%  5%  6%  6%  5%  6%
x264: i8c dc,h,v,p: 58% 20% 18%  4%
x264: Weighted P-Frames: Y:5.9% UV:4.6%
x264: kb/s:751.41
=====Stream End=======================================================================
=====Stream Start=====================================================================
  Multithreaded optimizations: On
  Base resolution: 1280x720
  Output resolution: 852x480
------------------------------------------
Loading up D3D10...
Playback device Default
------------------------------------------
Using desktop audio input: Speakers (Realtek High Definition Audio)
------------------------------------------
Using auxilary audio input: Microphone (5- Producer USB)
------------------------------------------
Audio Encoding: AAC
    bitrate: 128
------------------------------------------
    device: Elgato Game Capture HD,
    device id {39F50F4C-99E1-464a-B6F9-D605B4FB5918},
    chosen type: UYVY, usingFourCC: false, res: 1280x720 - 1280x720, fps: 30-30, fourCC: 'UYVY'

    device audio info - bits per sample: 16, channels: 2, samples per sec: 48000, block size: 4
Using directshow input
x264: using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX
x264: profile High, level 3.1
------------------------------------------
Video Encoding: x264
    fps: 30
    width: 852, height: 480
    preset: veryfast
    CBR: no
    CFR: no
    max bitrate: 900
    buffer size: 1800
    quality: 7
------------------------------------------
Using RTMP service: Twitch / Justin.tv
  Server selection: rtmp://live-3c.justin.tv/app
bufferTime: 1400, outputRateWindowTime: 1000, dropThreshold: 1900
RTMPPublisher::BufferedSend: Socket buffer is full (127513 / 131072 bytes), waiting to send 4104 bytes
RTMPPublisher::BufferedSend: Socket buffer is full (127513 / 131072 bytes), waiting to send 4104 bytes
RTMPPublisher::BufferedSend: Socket buffer is full (130752 / 131072 bytes), waiting to send 375 bytes
RTMPPublisher::BufferedSend: Socket buffer is full (131002 / 131072 bytes), waiting to send 3701 bytes
RTMPPublisher::BufferedSend: Socket buffer is full (128899 / 131072 bytes), waiting to send 3937 bytes
RTMPPublisher::BufferedSend: Socket buffer is full (128899 / 131072 bytes), waiting to send 3937 bytes
RTMPPublisher::BufferedSend: Socket buffer is full (130898 / 131072 bytes), waiting to send 2607 bytes
RTMPPublisher::BufferedSend: Socket buffer is full (130898 / 131072 bytes), waiting to send 2607 bytes
RTMPPublisher::BufferedSend: Socket buffer is full (129668 / 131072 bytes), waiting to send 3368 bytes
RTMPPublisher::BufferedSend: Socket buffer is full (127579 / 131072 bytes), waiting to send 3685 bytes
RTMPPublisher::BufferedSend: Socket buffer is full (127579 / 131072 bytes), waiting to send 3685 bytes
RTMPPublisher::BufferedSend: Socket buffer is full (130096 / 131072 bytes), waiting to send 1128 bytes
RTMPPublisher::BufferedSend: Socket buffer is full (130755 / 131072 bytes), waiting to send 405 bytes
RTMPPublisher::BufferedSend: Socket buffer is full (129311 / 131072 bytes), waiting to send 1800 bytes
RTMPPublisher::BufferedSend: Socket buffer is full (128499 / 131072 bytes), waiting to send 4104 bytes
Total frames rendered: 27981, number of frames that lagged: 0 (0.00%) (it's okay for some frames to lag)
RTMPPublisher::SocketLoop: Aborting due to bStopping
Number of b-frames dropped: 142 (0.51%), Number of p-frames dropped: 146 (0.52%), Total 288 (1%)
x264: frame I:175   Avg QP:24.00  size: 22617
x264: frame P:11814 Avg QP:27.67  size:  4559
x264: frame B:15948 Avg QP:29.47  size:   807
x264: consecutive B-frames:  9.8% 36.3% 18.1% 35.9%
x264: mb I  I16..4: 23.8% 44.3% 32.0%
x264: mb P  I16..4:  7.4%  8.3%  0.5%  P16..4: 24.0% 10.8%  4.3%  0.0%  0.0%    skip:44.7%
x264: mb B  I16..4:  0.6%  0.5%  0.0%  B16..8:  8.2%  2.7%  0.2%  direct: 2.2%  skip:85.5%  L0:32.7% L1:53.8% BI:13.4%
x264: 8x8 transform intra:50.1% inter:38.9%
x264: coded y,uvDC,uvAC intra: 31.5% 37.1% 9.0% inter: 5.1% 8.3% 0.3%
x264: i16 v,h,dc,p: 40% 35% 17%  9%
x264: i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 18% 30% 33%  2%  3%  3%  3%  3%  4%
x264: i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 22% 29% 15%  6%  5%  6%  6%  6%  5%
x264: i8c dc,h,v,p: 58% 22% 17%  4%
x264: Weighted P-Frames: Y:5.3% UV:4.0%
x264: kb/s:607.20
=====Stream End=======================================================================
 

Haliinen

Member
hacky said:
I'm having this exact same issue. Elgato Game Capture HD, and desync starting to be noticeable as soon as 10 minutes in.

I've got a 90-minute long Rock Band 3 VOD here, the delay is apparent as soon as 15 minutes into the VOD, and is extremely apparent by the end.
http://www.twitch.tv/hackychannel/b/368904018

Relevant log here: (I believe the VOD above was the first stream start/end in this log)
Code:
Open Broadcaster Software v0.472b - 32bit (´・ω・`)
-------------------------------
CPU Name: Intel(R) Core(TM) i7-2630QM CPU @ 2.00GHz
CPU Speed: 1995MHz
Physical Memory:  4095MB Total, 3228MB Free
stepping id: 7, model 10, family 6, type 0, extmodel 1, extfamily 0, HTT 1, logical cores 8, total cores 4
monitor 1: pos={0, 0}, size={1366, 768}
Windows Version: 6.1 Build 7601 S
Aero is Enabled
------------------------------------------
Adapter 1
  Video Adapter: Intel(R) HD Graphics Family
  Video Adapter Dedicated Video Memory: 67108864
  Video Adapter Shared System Memory: 1711276032
------------------------------------------
Adapter 2
  Video Adapter: NVIDIA GeForce GT 525M  
  Video Adapter Dedicated Video Memory: 1041825792
  Video Adapter Shared System Memory: 2906189824
=====Stream Start=====================================================================
  Multithreaded optimizations: On
  Base resolution: 1280x720
  Output resolution: 852x480
------------------------------------------
Loading up D3D10...
Playback device Default
------------------------------------------
Using desktop audio input: Speakers (Realtek High Definition Audio)
------------------------------------------
Using auxilary audio input: Microphone (5- Producer USB)
------------------------------------------
Audio Encoding: AAC
    bitrate: 128
------------------------------------------
    device: Elgato Game Capture HD,
    device id {39F50F4C-99E1-464a-B6F9-D605B4FB5918},
    chosen type: UYVY, usingFourCC: false, res: 1280x720 - 1280x720, fps: 30-30, fourCC: 'UYVY'

    device audio info - bits per sample: 16, channels: 2, samples per sec: 48000, block size: 4
Using directshow input
x264: using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX
x264: profile High, level 3.1
------------------------------------------
Video Encoding: x264
    fps: 30
    width: 852, height: 480
    preset: veryfast
    CBR: no
    CFR: no
    max bitrate: 900
    buffer size: 1800
    quality: 7
------------------------------------------
Using RTMP service: Twitch / Justin.tv
  Server selection: rtmp://live-3c.justin.tv/app
bufferTime: 1400, outputRateWindowTime: 1000, dropThreshold: 1900
Total frames rendered: 163812, number of frames that lagged: 0 (0.00%) (it's okay for some frames to lag)
RTMPPublisher::SocketLoop: Aborting due to bStopping
Number of b-frames dropped: 0 (0%), Number of p-frames dropped: 0 (0%), Total 0 (0%)
x264: frame I:1045  Avg QP:25.86  size: 18868
x264: frame P:86837 Avg QP:29.27  size:  4683
x264: frame B:75886 Avg QP:30.73  size:  1138
x264: consecutive B-frames: 19.6% 52.0% 11.4% 17.0%
x264: mb I  I16..4: 27.8% 45.2% 27.0%
x264: mb P  I16..4: 10.1%  9.7%  0.7%  P16..4: 23.7% 10.2%  3.8%  0.0%  0.0%    skip:41.7%
x264: mb B  I16..4:  0.9%  0.8%  0.1%  B16..8: 10.2%  3.5%  0.3%  direct: 2.9%  skip:81.4%  L0:33.0% L1:54.2% BI:12.9%
x264: 8x8 transform intra:47.1% inter:36.1%
x264: coded y,uvDC,uvAC intra: 27.1% 40.0% 10.6% inter: 6.2% 11.8% 0.6%
x264: i16 v,h,dc,p: 45% 30% 17%  8%
x264: i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 18% 27% 38%  2%  3%  3%  3%  3%  4%
x264: i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 19% 30% 17%  5%  5%  6%  6%  5%  6%
x264: i8c dc,h,v,p: 58% 20% 18%  4%
x264: Weighted P-Frames: Y:5.9% UV:4.6%
x264: kb/s:751.41
=====Stream End=======================================================================
=====Stream Start=====================================================================
  Multithreaded optimizations: On
  Base resolution: 1280x720
  Output resolution: 852x480
------------------------------------------
Loading up D3D10...
Playback device Default
------------------------------------------
Using desktop audio input: Speakers (Realtek High Definition Audio)
------------------------------------------
Using auxilary audio input: Microphone (5- Producer USB)
------------------------------------------
Audio Encoding: AAC
    bitrate: 128
------------------------------------------
    device: Elgato Game Capture HD,
    device id {39F50F4C-99E1-464a-B6F9-D605B4FB5918},
    chosen type: UYVY, usingFourCC: false, res: 1280x720 - 1280x720, fps: 30-30, fourCC: 'UYVY'

    device audio info - bits per sample: 16, channels: 2, samples per sec: 48000, block size: 4
Using directshow input
x264: using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX
x264: profile High, level 3.1
------------------------------------------
Video Encoding: x264
    fps: 30
    width: 852, height: 480
    preset: veryfast
    CBR: no
    CFR: no
    max bitrate: 900
    buffer size: 1800
    quality: 7
------------------------------------------
Using RTMP service: Twitch / Justin.tv
  Server selection: rtmp://live-3c.justin.tv/app
bufferTime: 1400, outputRateWindowTime: 1000, dropThreshold: 1900
RTMPPublisher::BufferedSend: Socket buffer is full (127513 / 131072 bytes), waiting to send 4104 bytes
RTMPPublisher::BufferedSend: Socket buffer is full (127513 / 131072 bytes), waiting to send 4104 bytes
RTMPPublisher::BufferedSend: Socket buffer is full (130752 / 131072 bytes), waiting to send 375 bytes
RTMPPublisher::BufferedSend: Socket buffer is full (131002 / 131072 bytes), waiting to send 3701 bytes
RTMPPublisher::BufferedSend: Socket buffer is full (128899 / 131072 bytes), waiting to send 3937 bytes
RTMPPublisher::BufferedSend: Socket buffer is full (128899 / 131072 bytes), waiting to send 3937 bytes
RTMPPublisher::BufferedSend: Socket buffer is full (130898 / 131072 bytes), waiting to send 2607 bytes
RTMPPublisher::BufferedSend: Socket buffer is full (130898 / 131072 bytes), waiting to send 2607 bytes
RTMPPublisher::BufferedSend: Socket buffer is full (129668 / 131072 bytes), waiting to send 3368 bytes
RTMPPublisher::BufferedSend: Socket buffer is full (127579 / 131072 bytes), waiting to send 3685 bytes
RTMPPublisher::BufferedSend: Socket buffer is full (127579 / 131072 bytes), waiting to send 3685 bytes
RTMPPublisher::BufferedSend: Socket buffer is full (130096 / 131072 bytes), waiting to send 1128 bytes
RTMPPublisher::BufferedSend: Socket buffer is full (130755 / 131072 bytes), waiting to send 405 bytes
RTMPPublisher::BufferedSend: Socket buffer is full (129311 / 131072 bytes), waiting to send 1800 bytes
RTMPPublisher::BufferedSend: Socket buffer is full (128499 / 131072 bytes), waiting to send 4104 bytes
Total frames rendered: 27981, number of frames that lagged: 0 (0.00%) (it's okay for some frames to lag)
RTMPPublisher::SocketLoop: Aborting due to bStopping
Number of b-frames dropped: 142 (0.51%), Number of p-frames dropped: 146 (0.52%), Total 288 (1%)
x264: frame I:175   Avg QP:24.00  size: 22617
x264: frame P:11814 Avg QP:27.67  size:  4559
x264: frame B:15948 Avg QP:29.47  size:   807
x264: consecutive B-frames:  9.8% 36.3% 18.1% 35.9%
x264: mb I  I16..4: 23.8% 44.3% 32.0%
x264: mb P  I16..4:  7.4%  8.3%  0.5%  P16..4: 24.0% 10.8%  4.3%  0.0%  0.0%    skip:44.7%
x264: mb B  I16..4:  0.6%  0.5%  0.0%  B16..8:  8.2%  2.7%  0.2%  direct: 2.2%  skip:85.5%  L0:32.7% L1:53.8% BI:13.4%
x264: 8x8 transform intra:50.1% inter:38.9%
x264: coded y,uvDC,uvAC intra: 31.5% 37.1% 9.0% inter: 5.1% 8.3% 0.3%
x264: i16 v,h,dc,p: 40% 35% 17%  9%
x264: i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 18% 30% 33%  2%  3%  3%  3%  3%  4%
x264: i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 22% 29% 15%  6%  5%  6%  6%  6%  5%
x264: i8c dc,h,v,p: 58% 22% 17%  4%
x264: Weighted P-Frames: Y:5.3% UV:4.0%
x264: kb/s:607.20
=====Stream End=======================================================================

Thanks a lot for reporting that you're experiencing the same thing, so I know I'm not the only one that is troubled by this issue.
 

phanta

New Member
Just wanted to report that I also encountered this issue. Unfortunately I can't provide a log as I'm at work, but after some testing this weekend I found out that the desync does not happen in Elgato's own software, so I guess the problem might be in their video capture-driver.

As a workaround I'm using window capture with aero disabled, since I could not get either game capture or window capture with aero enabled to work.

Here's a Psychnauts VOD where the desync happens:
http://www.twitch.tv/logicbit/b/368043319

And here's a Psychonauts VOD where I use window capture and there's no desync:
http://www.twitch.tv/logicbit/b/368279541

As a side note I also tried to leave the preview running with video capture for an hour and there was a desync there as well so it's not happening only when streaming.
 

Lain

Forum Admin
Lain
Forum Moderator
Developer
It would be unsurprising for it to not happen with their own software. They don't have to go through directshow, they can access and interface with the device directly. Anyway, generally this is somewhat of an issue with their directshow filter extension. You see, I'm just presenting the video/audio data as it's received, and if there is a disparity in the way it's sent, then that will also show up on stream. So basically elgato's doing something funky, and I'm assuming what they expect is that the developer will implement buffering to the transmission and account for their timestamps on each incoming audio/video data packet to piece it back together in the proper play order and time. Or maybe they have spacing on their audio packets and are expecting the developer to fill it. These are just my theory admittedly, but I don't understand why they would be doing this. I don't know for sure what it is, but with uncompressed image/sound data this should absolutely not a needed practice. It just puts more needless burden upon the app developers who just want to provide an interface for the device. I shouldn't have to write device-specific code for every device. It frustrates me to death.

I hate programming for devices. No manufacturer wants to do anything normally or to any given standard. Avermedia and many devices don't give out proper GUIDs for their output formats, though they generally work fine otherwise. Blackmagic has this weird WDM interface thing to (usually with some trouble) try abide by standards and its regular interface is completely separate and doesn't have audio directly. Oh, and it only outputs in a fairly rare YUV colorspace. At least all those devices stay in sync, but I still have to write specific workarounds for every single god forsaken device. And don't even get me started on USB microphones and headphones. Dear god I have one guy right now who's USB mic is so horrible that the data comes an entire god forsaken second after he actually puts sound into it. A second, in programming terms, is ridiculously huge, unbelievably large amount of time. It would mean that I would have to buffer the entire scene for an entire second or more just to account for one guy's horrible mic. It's just like, kill me, please.

I'd love to get everything working perfectly for everyone, and I'm really trying, I really am, but device manufacturers just aren't fun to work with. I just.. I just want them to all do something by some standard so I don't have to worry about how every individual device from every individual manufacturer is functioning. I don't want to have to write specific code hacks for each and every specific device. It's driving me absolutely insane.

I'm not necessarily "blaming" anyone. This is more just a rant I guess. Humanity is flawed in general, and the flaws of humanity are imposed upon their creations.
 

Haliinen

Member
Jim said:
It would be unsurprising for it to not happen with their own software. They don't have to go through directshow, they can access and interface with the device directly. Anyway, generally this is somewhat of an issue with their directshow filter extension. You see, I'm just presenting the video/audio data as it's received, and if there is a disparity in the way it's sent, then that will also show up on stream. So basically elgato's doing something funky, and I'm assuming what they expect is that the developer will implement buffering to the transmission and account for their timestamps on each incoming audio/video data packet to piece it back together in the proper play order and time. Or maybe they have spacing on their audio packets and are expecting the developer to fill it. These are just my theory admittedly, but I don't understand why they would be doing this. I don't know for sure what it is, but with uncompressed image/sound data this should absolutely not a needed practice. It just puts more needless burden upon the app developers who just want to provide an interface for the device. I shouldn't have to write device-specific code for every device. It frustrates me to death.

I hate programming for devices. No manufacturer wants to do anything normally or to any given standard. Avermedia and many devices don't give out proper GUIDs for their output formats, though they generally work fine otherwise. Blackmagic has this weird WDM interface thing to (usually with some trouble) try abide by standards and its regular interface is completely separate and doesn't have audio directly. Oh, and it only outputs in a fairly rare YUV colorspace. At least all those devices stay in sync, but I still have to write specific workarounds for every single god forsaken device. And don't even get me started on USB microphones and headphones. Dear god I have one guy right now who's USB mic is so horrible that the data comes an entire god forsaken second after he actually puts sound into it. A second, in programming terms, is ridiculously huge, unbelievably large amount of time. It would mean that I would have to buffer the entire scene for an entire second or more just to account for one guy's horrible mic. It's just like, kill me, please.

I'd love to get everything working perfectly for everyone, and I'm really trying, I really am, but device manufacturers just aren't fun to work with. I just.. I just want them to all do something by some standard so I don't have to worry about how every individual device from every individual manufacturer is functioning. I don't want to have to write specific code hacks for each and every specific device. It's driving me absolutely insane.

I'm not necessarily "blaming" anyone. This is more just a rant I guess. Humanity is flawed in general, and the flaws of humanity are imposed upon their creations.

Thanks a lot for that information, I'm not blaming you man, I never did, I know that you're trying your best to please us people with this great software. It sucks that they don't give out the required piece of information you need. You're trying at least and that is the only thing that counts.
 

Lain

Forum Admin
Lain
Forum Moderator
Developer
No I know you're not blaming me, I'm sorry, I just felt a bit frustrated over some of these devices. It's not even necessarily elgato entirely. Could be any number of reasons. It's just devices in general. Sorry about that rant, I suppose I just needed to let off some steam
 

Haliinen

Member
Jim said:
No I know you're not blaming me, I'm sorry, I just felt a bit frustrated over some of these devices. It's not even necessarily elgato entirely. Could be any number of reasons. It's just devices in general. Sorry about that rant, I suppose I just needed to let off some steam

That is fully understandable, no apology needed!
 

hacky

New Member
Got an update on my own experiments on trying to work around this issue.

For whatever reason, if my source into the elgato device is at 1080i, this audio desync appears to be either immensely diminished or nonexistent, as opposed to streaming in 1080p. It's done this for my Wii U and Xbox 360. It's not entirely conclusive, but for now this seems to be an acceptable workaround for me. Maybe some elgato software voodoo at play, or something.

And thanks for the device insight Jim, it's really informative for a video newbie like me. Much appreciated. :D


*EDIT: bad comma bugging me...
 

Haliinen

Member
hacky said:
Got an update on my own experiments on trying to work around this issue.

For whatever reason, if my source into the elgato device is at 1080i, this audio desync appears to be either immensely diminished, or nonexistent as opposed to streaming in 1080p. It's done this for my Wii U and Xbox 360. It's not entirely conclusive, but for now this seems to be an acceptable workaround for me. Maybe some elgato software voodoo at play, or something.

And thanks for the device insight Jim, it's really informative for a video newbie like me. Much appreciated. :D

Sounds like a fair solution to me if it actually works.
 

Nominative99

New Member
I got myself an Elgato as well and have the same audio issues. After much testing and configuration, I sort of got it working.

I was testing this out on the Wii U. My settings are as follows:

Wii U Display: 1080p
Elgato: HD 720

OBS Encoding
Quality Balance: 8
Bitrate & Buffer : 750

OBS Video
Custom: 1280x720
Downscale: None
FPS: 60

OBS Advanced
Priority: High
CPU: VeryFast


Although it says #8. I had a whole lot more before pruning but this is the best result so far.
Test Stream: http://www.twitch.tv/nominative99/b/369452408

Here is my log.

Code:
Open Broadcaster Software v0.472b - 32bit (´・ω・`)
-------------------------------
CPU Name: Intel(R) Core(TM)2 Duo CPU     E8400  @ 3.00GHz
CPU Speed: 3060MHz
Physical Memory:  4094MB Total, 2456MB Free
stepping id: 10, model 7, family 6, type 0, extmodel 0, extfamily 0, HTT 1, logical cores 2, total cores 2
monitor 1: pos={0, 0}, size={1400, 1050}
Windows Version: 6.1 Build 7601 S
Aero is Disabled
------------------------------------------
Adapter 1
  Video Adapter: ATI Radeon HD 5700 Series
  Video Adapter Dedicated Video Memory: 1066237952
  Video Adapter Shared System Memory: 1878257664
=====Stream Start=====================================================================
  Multithreaded optimizations: On
  Base resolution: 1280x720
  Output resolution: 1280x720
------------------------------------------
Loading up D3D10...
Playback device Default
------------------------------------------
Using desktop audio input: Plantronics (2- Plantronics GameCom 780)
------------------------------------------
Using auxilary audio input: Microphone (2- Plantronics GameCom 780)
------------------------------------------
Audio Encoding: AAC
    bitrate: 128
------------------------------------------
    device: Elgato Game Capture HD,
    device id {39F50F4C-99E1-464a-B6F9-D605B4FB5918},
    chosen type: UYVY, usingFourCC: false, res: 1280x720 - 1280x720, fps: 30-30, fourCC: 'UYVY'

    device audio info - bits per sample: 16, channels: 2, samples per sec: 48000, block size: 4
Using directshow input
x264: using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.1 Cache64
x264: profile High, level 3.2
------------------------------------------
Video Encoding: x264
    fps: 60
    width: 1280, height: 720
    preset: veryfast
    CBR: no
    CFR: no
    max bitrate: 750
    buffer size: 750
    quality: 8
------------------------------------------
Using RTMP service: Twitch / Justin.tv
  Server selection: rtmp://live-dfw-backup.justin.tv/app
bufferTime: 1753, outputRateWindowTime: 1000, dropThreshold: 2253
RTMPPublisher::BufferedSend: Socket buffer is full (111280 / 111616 bytes), waiting to send 394 bytes
RTMPPublisher::BufferedSend: Socket buffer is full (111280 / 111616 bytes), waiting to send 394 bytes
RTMPPublisher::BufferedSend: Socket buffer is full (110835 / 111616 bytes), waiting to send 3175 bytes
RTMPPublisher::BufferedSend: Increasing socket send buffer to ISB 262144
RTMPPublisher::BufferedSend: Socket buffer is full (110835 / 111616 bytes), waiting to send 3175 bytes
Total frames rendered: 11385, number of frames that lagged: 1807 (15.87%) (it's okay for some frames to lag)
RTMPPublisher::SocketLoop: Aborting due to bStopping
Number of b-frames dropped: 0 (0%), Number of p-frames dropped: 0 (0%), Total 0 (0%)
x264: frame I:66    Avg QP:30.38  size: 17816
x264: frame P:5514  Avg QP:35.76  size:  2734
x264: frame B:5756  Avg QP:33.99  size:   265
x264: consecutive B-frames: 27.2% 13.0%  7.3% 52.6%
x264: mb I  I16..4: 46.5% 46.9%  6.5%
x264: mb P  I16..4:  3.1%  3.3%  0.1%  P16..4: 12.3%  3.0%  0.8%  0.0%  0.0%    skip:77.4%
x264: mb B  I16..4:  0.1%  0.1%  0.0%  B16..8:  1.9%  0.3%  0.0%  direct: 0.4%  skip:97.3%  L0:42.0% L1:54.1% BI: 4.0%
x264: 8x8 transform intra:50.6% inter:49.9%
x264: coded y,uvDC,uvAC intra: 22.9% 41.5% 12.7% inter: 1.1% 2.7% 0.2%
x264: i16 v,h,dc,p: 40% 40% 15%  6%
x264: i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 10% 29% 46%  2%  3%  2%  3%  2%  4%
x264: i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 22% 26% 17%  8%  5%  5%  6%  6%  6%
x264: i8c dc,h,v,p: 63% 24% 11%  2%
x264: Weighted P-Frames: Y:1.9% UV:1.6%
x264: kb/s:654.77
=====Stream End=======================================================================

Profiler results:

==============================================================
frame - [100%] [avg time: 10.53 ms] [avg calls per frame: 1] [children: 96.3%] [unaccounted: 3.69%]
| scene->Preprocess - [9.69%] [avg time: 1.02 ms] [avg calls per frame: 1]
| video encoding and uploading - [86.6%] [avg time: 9.121 ms] [avg calls per frame: 1] [children: 60.3%] [unaccounted: 26.3%]
| | CopyResource - [3.09%] [avg time: 0.325 ms] [avg calls per frame: 0]
| | conversion to 4:2:0 - [1.08%] [avg time: 0.114 ms] [avg calls per frame: 0]
| | call to encoder - [56%] [avg time: 5.894 ms] [avg calls per frame: 0]
| | sending stuff out - [0.152%] [avg time: 0.016 ms] [avg calls per frame: 0]
==============================================================
 

Haliinen

Member
Nominative99 said:
I got myself an Elgato as well and have the same audio issues. After much testing and configuration, I sort of got it working.

I was testing this out on the Wii U. My settings are as follows:

Wii U Display: 1080p
Elgato: HD 720

OBS Encoding
Quality Balance: 8
Bitrate & Buffer : 750

OBS Video
Custom: 1280x720
Downscale: None
FPS: 60

OBS Advanced
Priority: High
CPU: VeryFast


Although it says #8. I had a whole lot more before pruning but this is the best result so far.
Test Stream: http://www.twitch.tv/nominative99/b/369452408

Here is my log.

Code:
Open Broadcaster Software v0.472b - 32bit (´・ω・`)
-------------------------------
CPU Name: Intel(R) Core(TM)2 Duo CPU     E8400  @ 3.00GHz
CPU Speed: 3060MHz
Physical Memory:  4094MB Total, 2456MB Free
stepping id: 10, model 7, family 6, type 0, extmodel 0, extfamily 0, HTT 1, logical cores 2, total cores 2
monitor 1: pos={0, 0}, size={1400, 1050}
Windows Version: 6.1 Build 7601 S
Aero is Disabled
------------------------------------------
Adapter 1
  Video Adapter: ATI Radeon HD 5700 Series
  Video Adapter Dedicated Video Memory: 1066237952
  Video Adapter Shared System Memory: 1878257664
=====Stream Start=====================================================================
  Multithreaded optimizations: On
  Base resolution: 1280x720
  Output resolution: 1280x720
------------------------------------------
Loading up D3D10...
Playback device Default
------------------------------------------
Using desktop audio input: Plantronics (2- Plantronics GameCom 780)
------------------------------------------
Using auxilary audio input: Microphone (2- Plantronics GameCom 780)
------------------------------------------
Audio Encoding: AAC
    bitrate: 128
------------------------------------------
    device: Elgato Game Capture HD,
    device id {39F50F4C-99E1-464a-B6F9-D605B4FB5918},
    chosen type: UYVY, usingFourCC: false, res: 1280x720 - 1280x720, fps: 30-30, fourCC: 'UYVY'

    device audio info - bits per sample: 16, channels: 2, samples per sec: 48000, block size: 4
Using directshow input
x264: using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.1 Cache64
x264: profile High, level 3.2
------------------------------------------
Video Encoding: x264
    fps: 60
    width: 1280, height: 720
    preset: veryfast
    CBR: no
    CFR: no
    max bitrate: 750
    buffer size: 750
    quality: 8
------------------------------------------
Using RTMP service: Twitch / Justin.tv
  Server selection: rtmp://live-dfw-backup.justin.tv/app
bufferTime: 1753, outputRateWindowTime: 1000, dropThreshold: 2253
RTMPPublisher::BufferedSend: Socket buffer is full (111280 / 111616 bytes), waiting to send 394 bytes
RTMPPublisher::BufferedSend: Socket buffer is full (111280 / 111616 bytes), waiting to send 394 bytes
RTMPPublisher::BufferedSend: Socket buffer is full (110835 / 111616 bytes), waiting to send 3175 bytes
RTMPPublisher::BufferedSend: Increasing socket send buffer to ISB 262144
RTMPPublisher::BufferedSend: Socket buffer is full (110835 / 111616 bytes), waiting to send 3175 bytes
Total frames rendered: 11385, number of frames that lagged: 1807 (15.87%) (it's okay for some frames to lag)
RTMPPublisher::SocketLoop: Aborting due to bStopping
Number of b-frames dropped: 0 (0%), Number of p-frames dropped: 0 (0%), Total 0 (0%)
x264: frame I:66    Avg QP:30.38  size: 17816
x264: frame P:5514  Avg QP:35.76  size:  2734
x264: frame B:5756  Avg QP:33.99  size:   265
x264: consecutive B-frames: 27.2% 13.0%  7.3% 52.6%
x264: mb I  I16..4: 46.5% 46.9%  6.5%
x264: mb P  I16..4:  3.1%  3.3%  0.1%  P16..4: 12.3%  3.0%  0.8%  0.0%  0.0%    skip:77.4%
x264: mb B  I16..4:  0.1%  0.1%  0.0%  B16..8:  1.9%  0.3%  0.0%  direct: 0.4%  skip:97.3%  L0:42.0% L1:54.1% BI: 4.0%
x264: 8x8 transform intra:50.6% inter:49.9%
x264: coded y,uvDC,uvAC intra: 22.9% 41.5% 12.7% inter: 1.1% 2.7% 0.2%
x264: i16 v,h,dc,p: 40% 40% 15%  6%
x264: i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 10% 29% 46%  2%  3%  2%  3%  2%  4%
x264: i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 22% 26% 17%  8%  5%  5%  6%  6%  6%
x264: i8c dc,h,v,p: 63% 24% 11%  2%
x264: Weighted P-Frames: Y:1.9% UV:1.6%
x264: kb/s:654.77
=====Stream End=======================================================================

Profiler results:

==============================================================
frame - [100%] [avg time: 10.53 ms] [avg calls per frame: 1] [children: 96.3%] [unaccounted: 3.69%]
| scene->Preprocess - [9.69%] [avg time: 1.02 ms] [avg calls per frame: 1]
| video encoding and uploading - [86.6%] [avg time: 9.121 ms] [avg calls per frame: 1] [children: 60.3%] [unaccounted: 26.3%]
| | CopyResource - [3.09%] [avg time: 0.325 ms] [avg calls per frame: 0]
| | conversion to 4:2:0 - [1.08%] [avg time: 0.114 ms] [avg calls per frame: 0]
| | call to encoder - [56%] [avg time: 5.894 ms] [avg calls per frame: 0]
| | sending stuff out - [0.152%] [avg time: 0.016 ms] [avg calls per frame: 0]
==============================================================

FYI, you know that you can't output 60 fps on your stream when you have set the resolution to 1080p in the Wii U settings? If you want a 60 fps stream you need to either set 1080i or 720p.
 

Nominative99

New Member
Haliinen said:
FYI, you know that you can't output 60 fps on your stream when you have set the resolution to 1080p in the Wii U settings? If you want a 60 fps stream you need to either set 1080i or 720p.

I knew I about that, but after the different configs I have been testing, I believe that is what keeps the audio in sync with the video. At least for me that is.

Test Stream at 30 FPS setting:
http://www.twitch.tv/nominative99/b/369808514

Test Stream at 60 FPS setting:
http://www.twitch.tv/nominative99/b/369810142
 

Darksim

New Member
This is a bit of a bump, but the Game Capture can't actually output 60 fps anywhere but in Elgato's own software currently, in case you didn't know. They said they are working on adding support for other programs to have a 60 fps feed however.

I was also having the audio desync issue (in both OBS and in XSplit), but setting it to HD 720 instead of HD 1080 seems to have fixed it in both of them. Honestly I don't even know what the different profiles do anyway. Stream looks great now.
 

Lain

Forum Admin
Lain
Forum Moderator
Developer
I appreciate the information. If you find a solid fix to the desync problem paste instructions on here.

I'm still going to attempt some sort of syncing fix if I can.. not sure how well that will work out though still. USB devices are surprisingly troublesome
 

Haliinen

Member
Darksim said:
This is a bit of a bump, but the Game Capture can't actually output 60 fps anywhere but in Elgato's own software currently, in case you didn't know. They said they are working on adding support for other programs to have a 60 fps feed however.

Wrong, OBS and XSplit outputs 60 fps fine with the Elgato Game Capture HD already, update your software if you already did not.

I was also having the audio desync issue (in both OBS and in XSplit), but setting it to HD 720 instead of HD 1080 seems to have fixed it in both of them. Honestly I don't even know what the different profiles do anyway. Stream looks great now.

No, I set mine to HD 720 when I did my recordings and the audio desync still appeared. The feed is originally delayed by 2 seconds (because that's how it works), in their own software included. However, the feed gets delayed by another second, I found out that disabling/enabling aero refreshed the feed (in their own software) and the delay was restored back to two seconds. For now we'll just have to screen region the feed in their own software instead until this gets fixed somehow. (Tested on the Wii U (NSMBU), HDMI, latest version of OBS, XSplit and the Elgato software)

This has been a huge mess though, I can't exactly tell if the added second delay is intended or not, in their own software that is... So I don't really feel like saying anything about this, I'll just use screen region until someone on Elgato can reproduce this themselves and come up with a fix for it, as I'm sure Jim's code is not to blame here since he can't pinpoint this issue himself.

I kinda regret that I started this thread to be honest.
 

Nominative99

New Member
Haliinen said:
This has been a huge mess though, I can't exactly tell if the added second delay is intended or not, in their own software that is... So I don't really feel like saying anything about this, I'll just use screen region until someone on Elgato can reproduce this themselves and come up with a fix for it, as I'm sure Jim's code is not to blame here since he can't pinpoint this issue himself.

I kinda regret that I started this thread to be honest.

If it is any help, these are the settings I am currently using and I have no issues with audio desync. I've done streams as long as 2 hours without any desyncs.

http://i62.photobucket.com/albums/h89/V ... coding.png
http://i62.photobucket.com/albums/h89/V ... /Video.png
http://i62.photobucket.com/albums/h89/V ... vanced.png
http://i62.photobucket.com/albums/h89/V ... rofile.png

Test Stream: http://www.twitch.tv/nominative99/b/373830499
 
Top