NAME
yt-dlp-play - Download videos with yt-dlp *and* play them while downloading
VERSION
This document describes version 0.001 of yt-dlp-play (from Perl distribution App-YtDlpUtils), released on 2024-07-09.
SYNOPSIS
Usage:
% yt-dlp-play [OPTS] <URL_OR_VIDEO_ID>...
Examples:
% yt-dlp-play https://www.youtube.com/watch?v=hoKvtNawdS8
% yt-dlp-play -f 18 https://www.youtube.com/watch?v=hoKvtNawdS8 ;# force 360p mp4 format
% yt-dlp-play -f 22 https://www.youtube.com/watch?v=hoKvtNawdS8 ;# force 720p mp4 format
DESCRIPTION
You want to download a video but want to see it while it downloads (and of course do not want to download it twice)? This is a wrapper for yt-dlp which does the following for each argument:
Run yt-dlp with --get-filename
To get the output filename, first this is executed:
% yt-dlp [OPTS] --get-filename <URL_OR_VIDEO_ID>
Run yt-dlp that outputs to stdout and pipe it to mpv
% yt-dlp [OPTS] -o - <URL_OR_VIDEO_ID> | tee <OUTPUTFILENAME> | mpv -
Some caveats:
The media-player program
mpv
as well as thetee
utility are requiredEach command-line argument must be a video ID or video URL, not a playlist URL
You should not request a format that does not stream
For example, if you specify
-f 135+140
(merging of video-only 720p MP4 and audio-only AAC stream) you will have to wait foryt-dlp
to download the whole video & audio streams and merge them before getting the video to play.If you specify multiple URL's, you cannot go forward to the next video or backward to the previous
In mpv you can use ">" or "ENTER" to go to the next video in the playlist, or "<" to go backward to the previous. You cannot do this using this script because the URLs are streamed individually one-by-one with separate invocation of yt-dlp and mpv.
HOMEPAGE
Please visit the project's homepage at https://metacpan.org/release/App-YtDlpUtils.
SOURCE
Source repository is at https://github.com/perlancar/perl-App-YtDlpUtils.
SEE ALSO
Other yt-dlp wrappers in App::YtDlpUtils.
AUTHOR
perlancar <perlancar@cpan.org>
CONTRIBUTING
To contribute, you can send patches by email/via RT, or send pull requests on GitHub.
Most of the time, you don't need to build the distribution yourself. You can simply modify the code, then test via:
% prove -l
If you want to build the distribution (e.g. to try to install it locally on your system), you can install Dist::Zilla, Dist::Zilla::PluginBundle::Author::PERLANCAR, Pod::Weaver::PluginBundle::Author::PERLANCAR, and sometimes one or two other Dist::Zilla- and/or Pod::Weaver plugins. Any additional steps required beyond that are considered a bug and can be reported to me.
COPYRIGHT AND LICENSE
This software is copyright (c) 2024 by perlancar <perlancar@cpan.org>.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
BUGS
Please report any bugs or feature requests on the bugtracker website https://rt.cpan.org/Public/Dist/Display.html?Name=App-YtDlpUtils
When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.