Added new media article
This commit is contained in:
parent
afa98c590d
commit
631f47fe48
1 changed files with 79 additions and 0 deletions
79
markdown/Play-all-media-everywhere.md
Normal file
79
markdown/Play-all-media-everywhere.md
Normal file
|
@ -0,0 +1,79 @@
|
|||
[//]: # (title: Play all media, everywhere)
|
||||
[//]: # (description: Use Platypush to watch YouTube, Facebook and more on your favourite media player.)
|
||||
[//]: # (image: https://platypush-static.s3.nl-ams.scw.cloud/images/media-ui-1.png)
|
||||
[//]: # (author: Fabio Manganiello <fabio@platypush.tech>)
|
||||
[//]: # (published: 2024-08-18)
|
||||
|
||||
Platypush 1.2.3 [is
|
||||
out](https://git.platypush.tech/platypush/platypush/src/branch/master/CHANGELOG.md#1-2-3),
|
||||
and the main focus of this release is on the #media side.
|
||||
|
||||
In particular, Platypush now supports streaming/playing/downloading any media
|
||||
compatible with youtube-dl / yt-dlp, even if the upstream audio/video files are
|
||||
split - yay!
|
||||
|
||||
This means that it's again compatible with #YouTube URLs (the integration broke
|
||||
recently after YouTube migrated all of its media to split video+audio tracks),
|
||||
and a lot of other sources that have been using this practice for a while -
|
||||
Facebook, Instagram, X, TikTok etc.
|
||||
|
||||
It means that you can play anything that yt-dlp can digest to any supported
|
||||
media plugin - VLC, mpv, mplayer, gstreamer, Kodi or Chromecast/Miracast.
|
||||
|
||||
Note however that mileage may vary depending on the player.
|
||||
|
||||
Things work fine out of the box if you use `media.mpv`. MPV comes with native
|
||||
youtube-dl support, and the right stuff will be used to play the video smoothly
|
||||
if youtube-dl or yt-dlp are present on the system.
|
||||
|
||||
[`media.vlc`](https://docs.platypush.tech/platypush/plugins/media.mpv.html) and
|
||||
[`media.gstreamer`](https://docs.platypush.tech/platypush/plugins/media.gstreamer.html)
|
||||
now provide two different play modes for YouTube-compatible content: _play on
|
||||
the fly_ and _play with cache_. In play-on-the-fly mode (default) audio and
|
||||
video content will be mixed on the fly over ffmpeg and piped to the player
|
||||
process. This means shorter load times, it's a good fit for live streams and
|
||||
large files, but it also means potentially lower media quality, high chances of
|
||||
media jitters in case of gaps in the stream being transcoded, and reduced
|
||||
ability to seek through the media. In play-with-cache mode the transcoded
|
||||
content will be cached to disk instead. It means waiting a bit longer for the
|
||||
video to load, and higher disk usage in case of large streams, but also a more
|
||||
robust and smooth playback experience.
|
||||
|
||||
![Screenshot of the media playlist UI, showing a context menu with the existing
|
||||
"Play" option and the new "Play (With Cache)"
|
||||
option](https://platypush-static.s3.nl-ams.scw.cloud/screenshots/media-ui-screenshot-1.png)
|
||||
|
||||
However I'm investigating a way to pass both an audio and a video URLs to
|
||||
GStreamer (it doesn't seem to be easily feasible with VLC), so the player can
|
||||
do its own tuned mixed playback without me having to reinvent the wheel. If I
|
||||
can sort it out, and manage to avoid big audio offsets in the playback process,
|
||||
then this could be the default mode for GStreamer.
|
||||
|
||||
[`media.mplayer`](https://docs.platypush.tech/platypush/plugins/media.mplayer.html)
|
||||
only supports play-with-cache mode. The plugin already uses the player's stdin
|
||||
to communicate commands, and AFAIK MPlayer doesn't support sending both
|
||||
commands and media bytes to the player. Same goes for
|
||||
[`media.kodi`](https://docs.platypush.tech/platypush/plugins/media.kodi.html).
|
||||
|
||||
[`media.chromecast`](https://docs.platypush.tech/platypush/plugins/media.chromecast.html)
|
||||
mileage may vary depending on the model of Chromecast. I haven't had much luck
|
||||
playing audio+video simultaneously when Platypush streams YouTube content to
|
||||
1st-gen Chromecasts because the new video codecs used by YouTube videos
|
||||
apparently aren't available on those devices. I've had mixed results by forcing
|
||||
the container to transcode the video track to H264 (and that is also the new
|
||||
default configuration for `ytdl_args` for the `media.chromecast` integration),
|
||||
but there's still a 50/50 chance that the Chromecast will only play the audio.
|
||||
I've had better luck with more recent Chromecast models though. And I believe
|
||||
that things should work just fine if you use any modern
|
||||
Miracast/DLNA-compatible device/dongle. Given the deprecation status of the
|
||||
Chromecast, and the dubious compatibility with whatever the Google TV folks are
|
||||
planning next, I'm not even sure if it's worth investing further energies in
|
||||
for the Chromecast compatibility. `media.chromecast` now also provides a
|
||||
`use_ytdl` configuration flag - it's set to true by default, but you can
|
||||
disable if you want to stream YouTube/Facebook/TikTok etc. URLs to your
|
||||
Chromecast bypassing the Platypush streaming service. This means higher chances
|
||||
that the content will play fine, but it also means that it'll be played by
|
||||
whatever compatible app (if available) runs on your Chromecast (i.e.
|
||||
ads/tracking/account limitations/geo limitations etc.).
|
||||
|
||||
Stay tuned!
|
Loading…
Reference in a new issue