alexballas / go2tv

Cast media files to UPnP/DLNA Media Renderers and Smart TVs.
MIT License
513 stars 51 forks source link

Chromecast support? #38

Open pataquets opened 2 years ago

pataquets commented 2 years ago

Is it supported? Otherwise, would it be an acceptable feature request?

alexballas commented 2 years ago

Chromecast support is something that I would really welcome in this project.

Before we dig deeper into it however, I'd like to give you some info on what protocols there are out there and the current state of device video streaming.

Currently go2tv is based on the DLNA/uPnP specification which is something that all smart TVs and some Audio speakers support. Chromecast is based on a completely different protocol called "castv2". Implementing this from scratch is a beast project on its own. There are some projects out there like the https://github.com/vishen/go-chromecast/ which currently only support a small number of actions.

According to this project's documentation:

Can load a local media file or a file hosted on the internet on your chromecast with the following format:

Supported Media formats:
    - MP3
    - AVI
    - MKV
    - MP4
    - WebM
    - FLAC
    - WAV
If an unknown video file is found, it will use ffmpeg to transcode it to MP4 and stream it to the chromecast.

So in terms of functionality, this project is limited to playing video files from local storage or the internet like go2tv also does (through DLNA/UPNP).

Chromecast devices initially used a different protocol called DIAL (Discovery and Launch) protocol which all smart TVs (and Roku) also support it. This protocol is the one responsible for triggering the applications like youtube, netflix, spotify etc to launch and control them. Chromecast devices still partially support it, but they migrated most of their SDK to the new protocol (castv2).

One nice DIAL project that I recently saw is https://github.com/MarcoLucidi01/ytcast which is just for youtube casting.

When people talk about chromecast support, usually they mean the ability to cast youtube, netflix or spotify content which effectively is the DIAL protocol.

Any thoughts on the above? Is this also your understanding?

pataquets commented 2 years ago

Thanks for the detailed answer. What I was thinking about is more of a generic media URL from anywhere on the net just being pushed to the Chromecast to play. No specific YT, Netflix or other functionality. I'm aware that it is a different beast and I guess it might even require some transcoding. Also, I didn't know about ytcast. I'll take a look.

alexballas commented 2 years ago

I ordered a chromecast. I should (very slowly since I have other priorities) start working on this one.

johnd0e commented 6 months ago

Another simple library https://github.com/stampzilla/gocast

alexballas commented 6 months ago

thank you @johnd0e. I'll definitely have a look. Last time I used https://github.com/vishen/go-chromecast which was not working great with the Go2TV flows. The challenging part is getting the same experience as you get with UPNP devices. For the user it needs to be a seamless behaviour, regardless of the target device type. If we get that right, I'll call it version 2 :)