No playback on Chromecast with HDHomeRun device #1000

Closed
opened 2026-02-06 20:22:59 +03:00 by OVERLORD · 5 comments
Owner

Originally created by @mooninite on GitHub (Oct 20, 2019).

Media Info of the file

MPEG2 TS stream from HDHomeRun HDHR4-US.

Logs

I have 3 command lines in the following gist:
https://gist.github.com/mooninite/3bf4c1c3151254ad9eb36673433f1fcb

The first two command lines are from Jellyfin 10.4.0. The first is the failing line used with Jellyfin and Chromecast. The second line successfully transcodes and plays in a Chrome browser. The third line is from Emby that successfully plays on a Chromecast.

Stats for Nerds Screenshots

Server System (please complete the following information):

  • OS: Fedora 30
  • Jellyfin Version: 10.4.0
  • Hardware settings & device: hardware transcoding is set to None, Intel Xeon server
  • Reverse proxy: apache
  • Other hardware notes: HDHomeRun HDHR4-US

Client System (please complete the following information):

  • Device: Chromecast 3 and Pixel 3
  • OS: Android 10
  • Client: Browser and Android
  • Browser (if Web client): Chrome
  • Client and Browser Version: 77.0
Originally created by @mooninite on GitHub (Oct 20, 2019). **Media Info of the file** <!-- Use the Media Info tool (set to text format, download here: https://mediaarea.net/en/MediaInfo) or copy the info from the web ui for the file with the playback issue. --> MPEG2 TS stream from HDHomeRun HDHR4-US. **Logs** <!-- Please paste any log message from during the playback issue, for example the ffmpeg command line can be very useful. --> I have 3 command lines in the following gist: https://gist.github.com/mooninite/3bf4c1c3151254ad9eb36673433f1fcb The first two command lines are from Jellyfin 10.4.0. The first is the failing line used with Jellyfin and Chromecast. The second line successfully transcodes and plays in a Chrome browser. The third line is from Emby that successfully plays on a Chromecast. **Stats for Nerds Screenshots** <!-- If available, add screenshots of the stats for nerds screen to help show the issue problem. --> **Server System (please complete the following information):** - OS: Fedora 30 - Jellyfin Version: 10.4.0 - Hardware settings & device: hardware transcoding is set to None, Intel Xeon server - Reverse proxy: apache - Other hardware notes: HDHomeRun HDHR4-US **Client System (please complete the following information):** - Device: Chromecast 3 and Pixel 3 - OS: Android 10 - Client: Browser and Android - Browser (if Web client): Chrome - Client and Browser Version: 77.0
OVERLORD added the stalemedia playback labels 2026-02-06 20:22:59 +03:00
Author
Owner

@stevehayles commented on GitHub (Oct 26, 2019):

For me trying to transcode (VAAPI or QuickSync) to either the Android app or a Chromecast device failed. This was from a DVB-T stream from the HDHomeRun as described in this issue.

It seems to be an incompatibility around the matroska container format and the use of headers in key frames vs extended data. I haven't issued a pull request because I am new to the codebase and don't feel confident it's the correct fix but removing the 'global_header' flag for any mkv stream seems to solve it for all my test cases

Before the flag gets added within MediaBrowser.Controller\MediaEncoding\EncodingHelper.cs I simply check for an mkv container and don't add the flag in that case

if (!state.RunTimeTicks.HasValue)
{
    if (string.Compare(state.OutputContainer, "mkv", true) != 0)
        args += " -flags -global_header";
}

Hope it helps point in the right direction

@stevehayles commented on GitHub (Oct 26, 2019): For me trying to transcode (VAAPI or QuickSync) to either the Android app or a Chromecast device failed. This was from a DVB-T stream from the HDHomeRun as described in this issue. It seems to be an incompatibility around the matroska container format and the use of headers in key frames vs extended data. I haven't issued a pull request because I am new to the codebase and don't feel confident it's the correct fix but removing the 'global_header' flag for any mkv stream seems to solve it for all my test cases Before the flag gets added within MediaBrowser.Controller\MediaEncoding\EncodingHelper.cs I simply check for an mkv container and don't add the flag in that case ``` if (!state.RunTimeTicks.HasValue) { if (string.Compare(state.OutputContainer, "mkv", true) != 0) args += " -flags -global_header"; } ``` Hope it helps point in the right direction
Author
Owner

@JustAMan commented on GitHub (Nov 19, 2019):

First line uses some non-HLS transport.
It might be better to deprecate it and migrate all clients to use HLS one (clients include Chromecast).

paging @cvium who's the last one who touched Chromecast IIRC, feel free to tag other relevant people

@JustAMan commented on GitHub (Nov 19, 2019): First line uses some non-HLS transport. It might be better to deprecate it and migrate all clients to use HLS one (clients include Chromecast). paging @cvium who's the last one who touched Chromecast IIRC, feel free to tag other relevant people
Author
Owner

@mooninite commented on GitHub (Dec 31, 2019):

@stevehayles has the correct fix - works here. @stevehayles would you be willing to provide a patch?

@mooninite commented on GitHub (Dec 31, 2019): @stevehayles has the correct fix - works here. @stevehayles would you be willing to provide a patch?
Author
Owner

@JustAMan commented on GitHub (Jan 10, 2020):

This still doesn't look completely fine, as I would say the real issue is somewhere else.
Though I'm fine with workarounding this as shown above, as it actually "only" enables global_header, as probably Chromecast decoder cannot handle mkv with data in-band (i.e. without global header).

@JustAMan commented on GitHub (Jan 10, 2020): This still doesn't look completely fine, as I would say the real issue is somewhere else. Though I'm fine with workarounding this as shown above, as it actually "only" enables `global_header`, as probably Chromecast decoder cannot handle mkv with data in-band (i.e. without global header).
Author
Owner

@stale[bot] commented on GitHub (Jun 19, 2020):

This issue has gone 120 days without comment. To avoid abandoned issues, it will be closed in 21 days if there are no new comments.
If you're the original submitter of this issue, please comment confirming if this issue still affects you in the latest release or nightlies, or close the issue if it has been fixed. If you're another user also affected by this bug, please comment confirming so. Either action will remove the stale label.
This bot exists to prevent issues from becoming stale and forgotten. Jellyfin is always moving forward, and bugs are often fixed as side effects of other changes. We therefore ask that bug report authors remain vigilant about their issues to ensure they are closed if fixed, or re-confirmed - perhaps with fresh logs or reproduction examples - regularly. If you have any questions you can reach us on Matrix or Social Media.

@stale[bot] commented on GitHub (Jun 19, 2020): This issue has gone 120 days without comment. To avoid abandoned issues, it will be closed in 21 days if there are no new comments. If you're the original submitter of this issue, please comment confirming if this issue still affects you in the latest release or nightlies, or close the issue if it has been fixed. If you're another user also affected by this bug, please comment confirming so. Either action will remove the stale label. This bot exists to prevent issues from becoming stale and forgotten. Jellyfin is always moving forward, and bugs are often fixed as side effects of other changes. We therefore ask that bug report authors remain vigilant about their issues to ensure they are closed if fixed, or re-confirmed - perhaps with fresh logs or reproduction examples - regularly. If you have any questions you can reach us on [Matrix or Social Media](https://docs.jellyfin.org/general/getting-help.html).
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/jellyfin#1000