【问题标题】:Play video file and audio file simultaneously from Linux command line从 Linux 命令行同时播放视频文件和音频文件
【发布时间】:2021-03-23 02:35:22
【问题描述】:

我想从 Linux 命令行同时播放单独的视频流和音频流,例如使用cvlcmpv

更具体地说,我想使用 youtube-dl 和播放器播放高质量格式的 youtube 视频。


更多详情:

我正在使用此命令在我的电脑上播放 youtube 视频:

youtube-dl -i <youtube.com/url> -o - | mpv -

假设我有以下可用的 youtube 视频格式:

249          webm       audio only tiny   62k , opus @ 50k (48000Hz), 14.14MiB
251          webm       audio only tiny  158k , opus @160k (48000Hz), 35.68MiB
303          webm       1920x1080  1080p60 4429k , vp9, 60fps, video only, 536.78MiB
299          mp4        1920x1080  1080p60 6901k , avc1.64002a, 60fps, video only, 884.09MiB
22           mp4        1280x720   720p 1339k , avc1.64001F, 30fps, mp4a.40.2@192k (44100Hz) (best)

youtube-dl 会自动选择此列表的最后一个条目,因为它是一种在一个文件中包含视频和音频的格式。

有什么方法可以在我的电脑上播放格式 303 和 251?

如果我想下载它们,我会使用:

youtube-dl -i <youtube.com/url> -f 303+bestaudio

在这种情况下,youtube-dl 所做的是将视频和音频文件分开下载,并使用 ffmpeg 将它们合并为一个文件。 但我不知道是否有可能在不先将它们下载到文件中的情况下播放两个流。

【问题讨论】:

    标签: audio video youtube


    【解决方案1】:

    好吧,我想我想出了一个解决方案。

    我使用的命令如下:

    ffmpeg -loglevel quiet -i $(youtube-dl -g youtube.com/url -f 303) -i $(youtube-dl -g youtube.com/url -f bestaudio) -f matroska -c copy - | mpv -

    • youtube-dl -g 选项只会将 url 返回到视频或音频流。
    • 在这种情况下,它会将 url 传递给正在执行合并过程的 ffmpeg。
    • -f matroska 告诉 ffmpeg 使用 mkv 容器格式
    • -c copy 表示不应该重新编码

    编辑:
    出于某种原因,在我的系统上,ffmpeg 退出后输入被破坏。现在我通过输入reset 来解决这个问题,直到找到更好的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-06
      • 2017-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多