INTERACT FORUM

Please login or register.

Login with username, password and session length
Advanced search  
Pages: [1]   Go Down

Author Topic: Guide to Using the WDM driver for streaming video inside JRiver (netflix, etc.)  (Read 17597 times)

mwillems

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 5168
  • "Linux Merit Badge" Recipient

Many streaming video services (like netflix) will only send sound to the windows default sound driver, which effectively bypasses JRiver's DSP and audio engine.  The new WDM driver allows you to fix that problem by routing the audio back into JRiver's audio engine.  However, there are some quirks in the way JRiver handles playback in an internal browser engine that require special configuration, and this is a guide on how to do that.

The problem this method is trying to solve:

Any given Media Center zone can only be playing one thing at a time.  So imagine there's only one zone (which is the default when you install JRiver). If you setup the WDM driver, here's what happens when you try to start netflix in JRiver:  you click to start playing a show and the show starts to play for a few seconds until MC detects that something is trying to output to the WDM driver.  That would cause JRiver to try and start WDM playback, which would either stop the video playback, or cause the WDM feed not to launch, so you'd either get no playback or no audio. By routing the audio to a different zone using zoneswitch you get around the one-thing-per-zone-at-a-time issue.

So I recommend setting up a second zone to receive the WDM audio.  Once you have a loopback zone setup, if you try to start netflix in your normal playback zone here's how the logic flow  looks:

Netflix in JRiver--->video--->normal playback zone
Netflix In JRiver--->audio--->WDM Driver--->IPC zone---> Speakers

Because the WDM zone is actually handling the audio output, it needs to be configured to output to your speakers; outputting to a different device would result in no sound, and outputting to the WDM driver would cause an infinite loop.  So a copy of a working zone (without convolution or other latency producing effects) is the way to go.  Note that you won't need to do this to watch netflix or other streming video in an external browser.  This method is for getting correct playback of Netflix or Amazon streaming video on JRiver's internal browser or integrated API.

The method

Step 1) Set the JRiver WDM driver as your windows default audio device

Step 2) Make sure JRiver is configured to output to your actual soundcard/receiver and sound output is working the way you want it to.

Step 3) Go to the the following menu Player-->Zone-->Add Zone.  In the dialog box that pops up name the zone something like loopback, and in the second box choose to copy your current working zone (it may be named "Player" if you haven't edited it).  Click "ok"

Step 4)  Now right click on the new zone under playing now, and click on the "ZoneSwitch" context menu item.  If you already have zoneswitch rules, you'll need to add a rule that routes WDM driver output to the new zone; if you've never used zoneswitch before, do this: In the dialog box, press the add button.  Then name the rule something like "loopback," and enter the following rule
Code: [Select]
[Name]="IPC"  Then tell it to play in the loopback zone and stop playback in your normal zone.  Add a second rule, and name it something like "normal," and enter the following rule
Code: [Select]
-[Name]="IPC"  Then tell that rule to play in your normal zone and stop playback in the loopback zone.  

Step 5) Now if you try to play netflix or another streaming video service from inside JRiver's internal browser it should work fine.  Just make sure to start playback from your normal zone.


Some limitations of this method:


Volume control isn't easy to manage because the zone you're playing the video in won't be playing the audio so the normal volume controls may not work as expected.  However, you can still adjust volume in the streaming video service's on screen volume control and it should work; it's just JRiver's volume control that can be hard to manage.  Another good solution is to make sure to set the default volume in your loopback zone to the volume at which you normally like to watch tv shows or movies.

Any feedback or suggested improvements to this guide are appreciated.
Logged

6233638

  • Regular Member
  • Citizen of the Universe
  • *****
  • Posts: 5353

The only suggestion I'd make is to switch based on:

Code: [Select]
[Filename]=[file:////ipc"
Rather than [Name]="IPC", since that can only be the WDM driver, while it's possible to have a file that is named "IPC"
Logged

muzicman0

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 1239

I must be doing something wrong...it still jumps to the IPC screen when I go to Amazon video.  Any ideas?
Logged

mwillems

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 5168
  • "Linux Merit Badge" Recipient

I must be doing something wrong...it still jumps to the IPC screen when I go to Amazon video.  Any ideas?

Can you describe your setup a little more and what steps you took?  Are you opening Amazon video from your normal zone (not your loopback zone)?  Are you using the internal browser or launching an external browser?  Does it work if you try it in standard view?
Logged

muzicman0

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 1239

launching from internal browser in theater view.  I have never configured zones before, so this is all new stuff.  I believe I am launching from normal zone.

not sure how to do it in standard view.
Logged

mwillems

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 5168
  • "Linux Merit Badge" Recipient

launching from internal browser in theater view.  I have never configured zones before, so this is all new stuff.  I believe I am launching from normal zone.

Switch to standard view for a minute, and look in the upper left hand corner for Playing now.  Expand Playing Now and you should see "Overview" followed by the two zones and some other odds and ends.  Select your non-loopback zone (probably named "Player") by left clicking on it.  Now switch back to theater view and try launching Amazon video.  You can tell what zone you're in in theater view by looking at the top roller (it's usually in the second or third from leftmost position).  If you start the video in the Player zone, the IPC should silently grab the audio without disturbing the video already in progress.

Additionally, you should check under general settings and make sure the setting "Jump on play (audio)" is set to "none" (that's the default setting, but you may have changed it).
Logged

muzicman0

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 1239

hmmm...I've done all that...still not working.  I'm sure I am missing something obvious.
Logged

muzicman0

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 1239

Here are some screenshots...just fyi,I tried the [Name] tag as well.
Logged

muzicman0

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 1239

so I have noticed that loopback becomes the current zone,but I still get the ipc window
Logged

mwillems

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 5168
  • "Linux Merit Badge" Recipient

Your player zone in the picture has IPC in the playing now which suggests your zoneswitch rules aren't working correctly (i.e. IPC should never land in the "player" playing now if the rules are working).  

Did you make sure to add the second zoneswitch rule from the second part of step 4?  That's important as the switching won't work correctly in all cases without both rules.

Also, the rule you included in your screencap isn't the same as the rule 62 suggested above; his had an open bracket at the front instead of a double quote which has a different effect; I'd suggest either copying and pasting my rule or his rule exactly; that probably isn't the issue, but it's worth ruling out.  You should also doublecheck that your second rule is correct as well (it should be the same as the first rule but with a hyphen in front).

If that's all fine and well, do a test for me.  Leave JRiver in standard view and start amazon video in an external browser while watching what happens in JRiver.  You should be able to see if the routing works as it's supposed to, which will rule out zoneswitch.
Logged

bulldogger

  • World Citizen
  • ***
  • Posts: 191

My volume is low with Netflix. I have to turn up my television set to max. Any idea of what's going wrong?
Logged

mwillems

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 5168
  • "Linux Merit Badge" Recipient

My volume is low with Netflix. I have to turn up my television set to max. Any idea of what's going wrong?

Each zone has an independent volume control; my guess is that your loopback zone's volume is set low.  Try changing it before starting playback and see if that helps.  It's hard to change volume during playback because the "active" zone is not the loopback zone, so the volume control in the JRiver OSD won't work.  

Netflix is a little quieter than most other content I listen to, so the way I work around this is by configuring my loopback zone's volume to default to a higher value than my normal zone under Options --> Audio.  If I need to change it while already watching a show, I use Gizmo to adjust the volume in the loopback zone to avoid disturbing the video.  That said, getting the default volume correct means I rarely need to change the volume on the fly.

If your loopback zone's volume is already high, make sure you don't have volume leveling enabled in the loopback zone, and make sure that you haven't lowered the system volume for the WDM driver in the windows control panel.
Logged

BradC

  • World Citizen
  • ***
  • Posts: 207

Hi

Just had a similar problem with zoneswitch and WDM driver. Zoneswitch was not switching when the rule was [Filename]=[file:////ipc"
I changed the rule to [Name]="Ipc" and it worked.

Any idea why?

Secondly, does jriver always tag the live stream as [Media Type]=[Audio]?
Is it possible to distinguish between live streams from audio (eg Spotify) and video (eg bluray player)? This would be useful for different convolution settings
Logged

Hendrik

  • Administrator
  • Citizen of the Universe
  • *****
  • Posts: 10697

There is no way to determine where the WDM stream comes from, unfortunately.
Logged
~ nevcairiel
~ Author of LAV Filters

packux

  • Recent member
  • *
  • Posts: 43

A similar question to source: Is there a way to check the channels reported by WDM so as to trigger Zoneswitch? For example, I would prefer to route 2ch audio to my Audio zone whereas 5.1 (or more channels), to my Video zone.

Thanks already
Logged

mwillems

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 5168
  • "Linux Merit Badge" Recipient

Hi

Just had a similar problem with zoneswitch and WDM driver. Zoneswitch was not switching when the rule was [Filename]=[file:////ipc"
I changed the rule to [Name]="Ipc" and it worked.

Any idea why?

No idea; I always use the [Name] rule (as described above), as it has always worked well for me.  The [Filename] rule obviously works for some folks, so maybe they can weigh in on what the problem might be.
Logged

tiggerkater

  • Recent member
  • *
  • Posts: 47

hi guys,

i am trying to implement netflix to jriver. it seems, that wdm driver is the way to go.

Quote
Because the WDM zone is actually handling the audio output, it needs to be configured to output to your speakers; outputting to a different device would result in no sound, and outputting to the WDM driver would cause an infinite loop.  So a copy of a working zone (without convolution or other latency producing effects) is the way to go.

i am using convolution, and i want to use it even with netflix. is there a way to do this?

thanks a lot!, kind regards, tiggerkater
Logged

mwillems

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 5168
  • "Linux Merit Badge" Recipient

hi guys,

i am trying to implement netflix to jriver. it seems, that wdm driver is the way to go.

i am using convolution, and i want to use it even with netflix. is there a way to do this?

thanks a lot!, kind regards, tiggerkater

Try following the instructions above and enabling convolution to see how it works for you. It should play in a basic way, but lip sync will be a challenge (and probably won't work).  See http://wiki.jriver.com/index.php/Convolution#Troubleshooting_the_Cons

JRiver has no control over the speed at which the video of netflix is playing.  So if you add too much latency through convolution, you'll ruin lip synch.  You can still use convolution, but you'll need to limit the amount of latency that the convolution adds (by using a low tap filter) or it won't work well.

The film standard for lipsync is about 25ms, and for TV is more like 45ms, but some people don't notice lip sync issues until they're more severe than that.  So for a 44.1K sampling rate filter, you'd want to have a filter shorter than 4500 taps, and ideally shorter than 2500 taps.  In practice your "latency budget" is likely to be even smaller than that as the audio equipment itself and the WDM driver's buffers will also unavoidably add some latency.  

Depending on your equipment and the buffer settings you need to make it work, you may be right at the edge of acceptable lip sync with convolution entirely disabled!

So try setting it up and see how it works for you.  If you have very low latency audio equipment that will tolerate very small buffers, you may be able to run short convolution filters.  Some folks on the forums have made that work well.  FWIW, my own experience (with my own equipment) has suggested that trying to avoid convolution entirely for loopback/WDM content leads to better results.  
Logged

tiggerkater

  • Recent member
  • *
  • Posts: 47

thanks, iŽll try!
Logged

Solderman

  • Junior Woodchuck
  • **
  • Posts: 52

Old thread, but doesn't work in MC 26. Netflix gives "Streaming error" . I guess I will just watch netflix on the laptop :(
Logged
Pages: [1]   Go Up