7 votes

Sauvegarde de la vidéo en cours de lecture en mpv --ytdl vers un fichier en cours de lecture

J'aimerais pouvoir jouer y sauvegarder une vidéo avec mpv --ytdl. Comment dois-je m'y prendre ? Ce qui est particulièrement important, c'est que le tampon est également sauvegardé.

En gros, j'aimerais lire une vidéo depuis youtube, puis quitter mpv et pouvoir continuer à regarder la vidéo jusqu'au moment où elle a été chargée - c'est pourquoi j'ai aussi besoin que les tampons soient enregistrés dans un fichier.

J'ai déjà essayé d'utiliser youtube-dl -o - pour envoyer la vidéo vers stdout, puis de l'intégrer à mpv.

youtube-dl -o - | mpv -

(avec l'idée que je pourrais utiliser tee pour diviser le flux et simplement l'écrire dans un fichier) - cependant, cela pose le problème que je ne peux pas utiliser mpv pour naviguer dans la vidéo - c'est juste un flux fixe provenant de stdin après tout. Une autre idée que j'ai eue était d'utiliser l'option -o de mpv pour spécifier un fichier de sortie. Cependant, cela ne permet pas de sauvegarder le buffer interne.

12voto

Luke Flip Points 51

Une autre option, qui est encore très expérimentale, est d'utiliser le propre système de mpv. --record-file :

mpv --record-file=video.mkv https://www.youtube.com/watch?v=…

J'ai eu un succès limité avec elle. Comme les fichiers sources que youtube-dl saisit doivent correspondre à l'extension de fichier que vous spécifiez pour le fichier d'enregistrement. Cela semble cependant le plus proche de ce qui est décrit dans la question.

Desde le manuel (stable actuel) :

--record-file=<file>

Enregistre le flux actuel vers le fichier cible donné. Le fichier cible sera toujours écrasé sans demande.

Cela remuxe le flux source sans réencodage, ce qui en fait une fonctionnalité très fragile et expérimentale. Il est tout à fait possible que cela écrive des fichiers cassés, non conformes aux standards, non lisibles par tous les lecteurs (y compris mpv), ou incomplets.

Le format du fichier cible est déterminé par l'extension du nom du fichier cible. Il est recommandé d'utiliser le même conteneur cible que le conteneur source si possible, et de préférer Matroska comme solution de repli.

La recherche pendant l'enregistrement du flux, ou l'activation/désactivation de l'enregistrement du flux pendant la lecture, peut couper des données ou produire des "trous" dans le fichier de sortie. Il s'agit de restrictions techniques. En particulier, les données vidéo ou les sous-titres qui ont été lus en avance peuvent produire de tels trous, ce qui peut causer des problèmes de lecture avec divers lecteurs (y compris mpv).

Le comportement de cette option pourrait être modifié à l'avenir, par exemple en la transformant en un modèle (similaire à l'option --screenshot-template ), en étant renommé, supprimé, ou autre, jusqu'à ce qu'il soit déclaré semi-stable.

8voto

Ipor Sircer Points 3909
youtube-dl -o - | tee video.mp4 | mpv -

8voto

Wis Points 191

--record-file a été déprécié, au profit de --stream-record . Ces deux solutions ne sont pas parfaites, car une avance rapide au-delà du cache entraînera un saut dans le fichier de sortie.

de la page de manuel mpv :

--record-file=<file>
       Deprecated, use --stream-record, or the dump-cache command.

       Record the current stream to the given target file. The target file will always be overwritten without asking.

       This was deprecated because it isn't very nice to use. For one, seeking while this is enabled will be directly reflected in  the
       output, which was not useful and annoying.

 --stream-record=<file>
        Write  received/read  data from the demuxer to the given output file.
        The output file will always be overwritten without asking.
        The output format is determined by the extension of the output file.

        Switching streams or seeking during recording might result in recording
        being stopped and/or broken files. Use with care.

        Seeking outside of the demuxer cache will result in "skips" in the output file,
        but seeking within  the demuxer cache should not affect  recording. 
        One exception is when you seek back far enough to exceed the forward buffering size,
        in which case the cache stops actively reading.
        This will return in dropped data if it's a live stream.

        If this is set at runtime, the old file is closed, and the new file is opened.
        Note that this will write only data that  is  appended at the end of the cache,
        and the already cached data cannot be written.
        You can try the dump-cache command as an alternative.

        External files (--audio-file etc.) are ignored by this,
        it works on the "main" file only. Using this with  files  using  ordered
        chapters or EDL files will also not work correctly in general.

        There  are  some  glitches with this because it uses FFmpeg's libavformat for writing the output file.
        For example, it's typical that it will only work if the output format is the same as the input format.
        This is the case even if it works with  the  ffmpeg tool.
        One reason for this is that ffmpeg and its libraries contain certain hacks and workarounds for these issues,
        that are unavailable to outside users.

        This replaces --record-file.
        It is similar to the ancient/removed --stream-capture/-capture options,
        and provides better  behavior in most cases (i.e. actually works).

l'usage : mpv --stream-record=$HOME/Downloads/path/name.mp4 <URL>

-2voto

kikito Points 23229

Youtube-dl url --exec mpv

Il ne s'agit pas de streaming mais de lecture après téléchargement, mais vous ne verrez pas la différence à moins d'avoir un compte dialup ou autre.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X