jellyfin / jellyfin-roku

The Official Roku Client for Jellyfin
https://jellyfin.org
GNU General Public License v2.0
450 stars 141 forks source link

Roku not direct streaming when it can. #337

Closed DraZtiK closed 3 years ago

DraZtiK commented 3 years ago

Jellyfin Roku app is not properly direct streaming supported codec/files.

When using the Jellyfin Roku app it wants to transcode when it shouldn't need to. When using the Emby app connected to the same Jellyfin server it works correctly, the same file direct streams with little or no resources. Attached files for both apps. I searched and did not see any similar posts. 2% CPU after the file completes transcode/remux (see image below) on Emby app, 100% the entire time on Jellyfin app. I'd love to look through the logs and provide a possible reason but I'm not sure what to look for.

resources

jellyfin on jellyfin server.txt emby on jellyfin server.txt

Jellyfin app jelltfin

Emby app emby

cewert commented 3 years ago
Stream #0:0: Video: h264 (High), yuv420p(progressive), 1280x536 [SAR 1:1 DAR 160:67], 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default)

    Stream #0:1(eng): Audio: dts (DTS), 48000 Hz, 5.1(side), fltp, 1536 kb/s (default)

Stream mapping:

  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))

  Stream #0:1 -> #0:1 (dts (dca) -> aac (native))

Jellyfin doesn't think your device can decode h264(native). Sounds like we need to look at our device profiles

cewert commented 3 years ago

Sort of related, the api call for emby is crazy long compared to ours Emby:

http://192.168.1.122:8096/emby/videos/92bb1b90-a9a3-aad5-da7d-ccceb886e0fc/hls1/main/0.ts?DeviceId=317cc1b3-1552-5728-8369-fe13cd9b7c67&MediaSourceId=92bb1b90a9a3aad5da7dccceb886e0fc&VideoCodec=h264,mpeg1video,mpeg2video&AudioCodec=aac,mp2,mp3,flac,opus,vorbis,lpcm&AudioStreamIndex=1&VideoBitrate=34360000&AudioBitrate=640000&MaxFramerate=60&MaxWidth=1920&MaxHeight=1080&PlaySessionId=79c1ef4e9a4c44509e38e3a5d204b790&api_key=7c18ee32c0b546f8b903171bb3f55513&SubtitleMethod=Encode&TranscodingMaxAudioChannels=2&RequireAvc=false&Tag=a76c34d579fb946ed3c05ed2ee130f7a&SegmentContainer=ts&SegmentLength=3&MinSegments=1&BreakOnNonKeyFrames=True&h264-maxrefframes=16&h264-videobitdepth=8&h264-profile=high,main,baseline,constrainedbaseline&h264-deinterlace=true&h264-level=41&aac-audiochannels=6&flac-audiochannels=6&lpcm-audiochannels=6&mp3-audiochannels=2&mp2-audiochannels=2&vorbis-audiochannels=6&opus-audiochannels=6&TranscodeReasons=AudioCodecNotSupported

Ours:

http://192.168.1.122:8096/Videos/92bb1b90a9a3aad5da7dccceb886e0fc/hls1/main/0.ts?AudioCodec=aac&AudioStreamIndex=1&MaxAudioChannels=2&MediaSourceId=92bb1b90a9a3aad5da7dccceb886e0fc&PlaySessionId=29a3aa741138437a86104e7d8e3b8dd0

Maybe we can use some of those extra params to improve our device profiles?

neilsb commented 3 years ago

Think this may be something to do with #303.

@DraZtiK Can I also check what your audio setup is since it's transcoding that too. Do you have a 5.1 Decoder connected to the Roku box, and what is HDMI Audio Set to (Roku Settings -> Audio -> HDMI)?

DraZtiK commented 3 years ago

For this setup my Roku connects directly to my TV and TV doesn't decode the DTS. I can go to my movie room where I connect to a receiver before the projector that can decode the audio and post a log? My Roku HDMI audio setting is "Auto detect".

cewert commented 3 years ago

I don't think audio is the issue since the file works on emby and emby is transcoding the audio just like us (to stereo aac):

Stream #0:0 -> #0:0 (copy)

  Stream #0:1 -> #0:1 (dts (dca) -> aac (native))
trekkie690 commented 3 years ago

I think it's the DTS stream with the mp4. I notice this issue when I was working issue #303 . I checked with my emby server and it direct streams as well while transcoded with jellyfin. Roku dev stocks mention that mkv can decoded with more audio standards than mp4. But emby indicate it's a lie

DraZtiK commented 3 years ago

Not sure which PR fixed this but this is now behaving as it should.