Guarde el video que se reproduce en mpv --ytdl en un archivo mientras se reproduce

Guarde el video que se reproduce en mpv --ytdl en un archivo mientras se reproduce

me gustaria poder jugaryguarde un vídeo con mpv --ytdl. ¿Cómo puedo hacer eso? Lo que es particularmente importante es que el búfer también se guarda.

Básicamente, me gustaría reproducir un video de YouTube, luego salir de mpv y aún poder seguir viendo el video hasta el momento en que se cargó; es por eso que también necesito que los buffers se guarden en un archivo.

Ya intenté usar youtube-dl -o - para transmitir el video a la salida estándar y luego canalizarlo con mpv, es decir

youtube-dl -o - | mpv -

(con la idea de que podría usar tee para dividir la transmisión y simplemente escribirla en un archivo); sin embargo, esto tiene el problema de que no puedo usar mpv para navegar a través del video; es solo una transmisión fija que viene de stdin después todo. Otra idea que tuve fue usar la opción -o de mpv para especificar un archivo de salida. Sin embargo, esto no salva el búfer interno.

Respuesta1

Otra opción, que todavía es muy experimental, es utilizar el propio mpv --record-file:

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

He tenido un éxito limitado con eso. Como los archivos fuente que youtube-dl está capturando deben coincidir con la extensión de archivo que especifique para el archivo de grabación. Sin embargo, esto parece lo más cercano a lo que se describe en la pregunta.

Deel manual (estable actual):

--record-file=<file>

Registre la transmisión actual en el archivo de destino dado. El archivo de destino siempre se sobrescribirá sin preguntar.

Esto remuxifica la secuencia fuente sin volver a codificarla, lo que la convierte en una característica altamente frágil y experimental. Es muy posible que esto escriba archivos rotos, que no cumplan con los estándares, que no se puedan reproducir con todos los reproductores (incluido el mpv) o que estén incompletos.

El formato del archivo de destino está determinado por la extensión del archivo del nombre del archivo de destino. Se recomienda utilizar el mismo contenedor de destino que el contenedor de origen si es posible y preferir Matroska como respaldo.

Buscar durante la grabación de la transmisión, o habilitar/deshabilitar la grabación de la transmisión durante la reproducción, puede cortar datos o producir "agujeros" en el archivo de salida. Estas son restricciones técnicas. En particular, los datos de vídeo o los subtítulos que se leyeron con anticipación pueden producir tales agujeros, lo que podría causar problemas de reproducción con varios reproductores (incluido mpv).

El comportamiento de esta opción podría cambiar en el futuro, como cambiarla a una plantilla (similar a --screenshot-template), cambiarle el nombre, eliminarla o cualquier otra cosa, hasta que se declare semiestable.

Respuesta2

--record-filequedó en desuso, a favor de --stream-record. ambas no son una solución perfecta, porque el avance rápido más allá del caché dará como resultado un salto en el archivo de salida.

desde la página de manual de 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).

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

Respuesta3

youtube-dl -o - | tee video.mp4 | mpv -

Respuesta4

URL de youtube-dl --exec mpv

Esto no se transmite, pero se reproduce después de la descarga, pero no notarás la diferencia a menos que tengas una cuenta de acceso telefónico o algo así.

información relacionada