Jump to content

Emby Android TV issues for certain videos when using reverse proxy


FunkadelicRelic

Recommended Posts

Okay, then sounds like maybe my supposition is correct as you don't have another app direct playing it and, when it transcodes, it works.

 

What it looks like to me is that, when attempting to deliver the file statically, it is trying to download the entire file before playback begins.  You said if you let is sit there for a couple of minutes playback starts but then things get wonky.  That sounds to me like the player is loading in the entire file and then having trouble with the memory footprint.

 

Is there any configuration in your reverse-proxy related to delivering file downloads that maybe is not allowing it to stream statically?  

  • Like 1
Link to comment
Share on other sites

FunkadelicRelic

Interesting. That may well be the case. When I tested this a while back with another external player (think it was a default Android one) it actually displayed the 'downloading' progress bar when I tried to open a video so you might be correct.

 

There is nothing in my reverse proxy configuration that relates to downloading files that I can see. If there was, do you think it would also affect other clients? My normal Android client and the Roku, all on the same network and going through the same reverse proxy don't have this issue, they direct play no problem.

Link to comment
Share on other sites

If there was, do you think it would also affect other clients? My normal Android client and the Roku, all on the same network and going through the same reverse proxy don't have this issue, they direct play no problem.

 

Well, that's why I asked you to find another app that played this item in the exact same way... :).  You chose the iOS app to do that which would never be able to direct play this.  If you use one of those other apps, does it truly direct stream the static file?  Does the url contain 'static=true' or is there some other remux or conversion going on?

Link to comment
Share on other sites

FunkadelicRelic

Well, that's why I asked you to find another app that played this item in the exact same way... :). You chose the iOS app to do that which would never be able to direct play this. If you use one of those other apps, does it truly direct stream the static file? Does the url contain 'static=true' or is there some other remux or conversion going on?

Definitely. Just tried again on my Google Pixel using the client, and stats for nerds shows Direct Play with the player set to LibVlc Player and the log has Static=true in the URL.
Link to comment
Share on other sites

Definitely. Just tried again on my Google Pixel using the client, and stats for nerds shows Direct Play with the player set to LibVlc Player and the log has Static=true in the URL.

 

Okay, the difference there being VLC again.  The Android TV app prefers the Google player.  I think something in the interaction between Exo and that static file url is causing it to think it needs to bring the whole file down when it is going through your reverse proxy.

  • Like 1
Link to comment
Share on other sites

FunkadelicRelic

Okay, the difference there being VLC again. The Android TV app prefers the Google player. I think something in the interaction between Exo and that static file url is causing it to think it needs to bring the whole file down when it is going through your reverse proxy.

Thanks @@ebr - is there anything I can do or try to resolve this?
Link to comment
Share on other sites

Thanks @@ebr - is there anything I can do or try to resolve this?

 

Other than any investigation you could maybe do into the file transfer characteristics of your reverse-proxy I can't think of anything.  Perhaps post a question in one of the revers-proxy threads and maybe someone like @@pir8radio will know something.

 

I'm sorry that we can't help more with it...

  • Like 1
Link to comment
Share on other sites

mastrmind11

90% of this community is nginx based.  Have you considered an nginx implementation where you can get legitimate support from multiple members?  Accomplishes the same thing, easier (imo), and multiple working implementations contributing tothe community.  My 2c, anyway.

  • Like 1
Link to comment
Share on other sites

FunkadelicRelic

90% of this community is nginx based. Have you considered an nginx implementation where you can get legitimate support from multiple members? Accomplishes the same thing, easier (imo), and multiple working implementations contributing tothe community. My 2c, anyway.

Thanks for the suggestion. I have considered it but my entire home network hangs off HAProxy in pfSense and this is the one client that is giving me grief so I'm going to stick with it in the hope that I might get to the bottom of the issue.

 

Out of interest, is there a reason ExoPlayer is preferred for Android TV but on normal Android it is LibVLC that's preferred? Is this something configurable on the ATV client? Static=True URLs stream fine through the normal Android client using LibVLC.

Link to comment
Share on other sites

Because libVlc doesn't support hd audio pass-through to an audio receiver, however on a mobile device this usually doesn't matter so that's why we're able to use it more frequently.

  • Like 1
Link to comment
Share on other sites

FunkadelicRelic

Because libVlc support hd audio pass-through to an audio receiver, however on a mobile device this usually doesn't matter so that's why we're able to use it more frequently.

Makes sense. Thanks for the response. I'm just trawling the issue logs for Exo to see if there is something relevant though I suspect I'm clutching at straws a little.
Link to comment
Share on other sites

pir8radio

Thanks for the suggestion. I have considered it but my entire home network hangs off HAProxy in pfSense and this is the one client that is giving me grief so I'm going to stick with it in the hope that I might get to the bottom of the issue.

 

Out of interest, is there a reason ExoPlayer is preferred for Android TV but on normal Android it is LibVLC that's preferred? Is this something configurable on the ATV client? Static=True URLs stream fine through the normal Android client using LibVLC.

 

I'm still willing to get a second set of eyes on your server if you want to PM me the info, and whip up a test account for me.   I can "usually" spot RP issues and give some advice. 

Link to comment
Share on other sites

FunkadelicRelic

Thanks @@pir8radio - which country are you in out of interest? I do some pretty heavy GeoIP coming in from external so might need to drill some holes.

 

Also - I've noticed there might be a bit more to this. I tried a bunch of other videos from the series that seem to cause issue, and it looks like some do actually play OK. Can anyone tell me what the difference between DirectPlay and DirectStream is? It looks like videos with DirectStream are working, whereby DirectPlay isn't.

Link to comment
Share on other sites

FunkadelicRelic

Actually - I'm confusing myself here. Those stats above were from when I tried to play the media from a browser so they probably don't match the ATV client.

 

The fact still remains that some play and some don't. Here is the media info for two examples. I grabbed the stats for nerds from the browser so it's probably best to ignore the playback info.

 

This one works:

 

Playback Info
Player:
Html Video Player
Play method:
DirectStream
Protocol:
https
Stream type:
HLS
Video Info
Player dimensions:
2560x1334
Video resolution:
1280x720
Direct Stream Info
Video codec:
H264 (direct)
Audio codec:
AAC
Original Media Info
Container:
mkv
Bitrate:
2.8 Mbps
Video codec:
H264 High
Video bitrate:
2.4 Mbps
Audio codec:
AC3
Audio bitrate:
384 kbps
Audio channels:
6
Audio sample rate:
48000 Hz
 
This one doesn't:
 
Playback Info
Player:
Html Video Player
Play method:
DirectPlay
Protocol:
https
Stream type:
Video
Video Info
Player dimensions:
2560x1334
Video resolution:
1280x718
Original Media Info
Container:
mkv
Bitrate:
4.4 Mbps
Video codec:
H264 High
Video bitrate:
4.2 Mbps
Audio codec:
AAC LC
Audio bitrate:
192 kbps
Audio channels:
2
Audio sample rate:
48000 Hz
Link to comment
Share on other sites

pir8radio

Thanks @@pir8radio - which country are you in out of interest? I do some pretty heavy GeoIP coming in from external so might need to drill some holes.

 

Also - I've noticed there might be a bit more to this. I tried a bunch of other videos from the series that seem to cause issue, and it looks like some do actually play OK. Can anyone tell me what the difference between DirectPlay and DirectStream is? It looks like videos with DirectStream are working, whereby DirectPlay isn't.

 

I'm in the US,  If you get to that point where you want me to connect, I'll send you my actual IP...   If you need me to connect from a specific country, I can do that too (fake IP)...  Whatever is easier.

Link to comment
Share on other sites

mastrmind11

 

Actually - I'm confusing myself here. Those stats above were from when I tried to play the media from a browser so they probably don't match the ATV client.

 

The fact still remains that some play and some don't. Here is the media info for two examples. I grabbed the stats for nerds from the browser so it's probably best to ignore the playback info.

 

This one works:

 

Playback Info
Player:
Html Video Player
Play method:
DirectStream
Protocol:
https
Stream type:
HLS
Video Info
Player dimensions:
2560x1334
Video resolution:
1280x720
Direct Stream Info
Video codec:
H264 (direct)
Audio codec:
AAC
Original Media Info
Container:
mkv
Bitrate:
2.8 Mbps
Video codec:
H264 High
Video bitrate:
2.4 Mbps
Audio codec:
AC3
Audio bitrate:
384 kbps
Audio channels:
6
Audio sample rate:
48000 Hz
 
This one doesn't:
 
Playback Info
Player:
Html Video Player
Play method:
DirectPlay
Protocol:
https
Stream type:
Video
Video Info
Player dimensions:
2560x1334
Video resolution:
1280x718
Original Media Info
Container:
mkv
Bitrate:
4.4 Mbps
Video codec:
H264 High
Video bitrate:
4.2 Mbps
Audio codec:
AAC LC
Audio bitrate:
192 kbps
Audio channels:
2
Audio sample rate:
48000 Hz

 

The one that was Direct Streamed was a remux because it's multi-channel audio.  The other one was Direct Played because it only has 2 channels of audio.  A browser will usually cause a remux since they don't support multi channel audio.

Link to comment
Share on other sites

Direct Stream - FFmpeg involved in some way and the item is going to be re-packaged and delivered to the app using HLS - a protocol specifically designed for live streaming of media.

 

Direct Play - FFmpeg is not involved and the file is just statically (without modification as a normal file stream) delivered to the app via http.

 

Your experience here is more support of my hypothesis that this has something to do with the way the file stream is being delivered/accepted when going through your reverse-proxy.

Link to comment
Share on other sites

  • 3 weeks later...
FunkadelicRelic

Just replied this on my other thread, but I'll post a quick update here too.

 

Bought a new Nvidia Shield TV (2017) and it works flawlessly! Happy days.

 

Thanks everyone that contributed to the thread.

  • Like 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...