从 Linux 命令行同时播放视频文件和音频文件
Play video file and audio file simultaneously from Linux command line
我想从 Linux 命令行同时播放单独的视频流和音频流,例如使用cvlc
或 mpv
.
更具体地说,我想使用 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 将它们合并为一个文件。
但是我不知道是否有可能在不先将它们下载到文件中的情况下播放这两个流。
好的,我想我想出了一个解决方案。
我使用的命令如下:
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
选项只会 return url 到视频或音频流。
- 在这种情况下,它会将 urls 传递给正在执行合并过程的 ffmpeg。
-f matroska
告诉 ffmpeg 使用 mkv 容器格式
-c copy
表示不应该进行重新编码
编辑:
出于某种原因,在我的 systemm 上,输入在 ffmpeg 退出后被破坏。现在我通过输入 reset
来解决这个问题,直到找到更好的解决方案。
我想从 Linux 命令行同时播放单独的视频流和音频流,例如使用cvlc
或 mpv
.
更具体地说,我想使用 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 将它们合并为一个文件。 但是我不知道是否有可能在不先将它们下载到文件中的情况下播放这两个流。
好的,我想我想出了一个解决方案。
我使用的命令如下:
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
选项只会 return url 到视频或音频流。- 在这种情况下,它会将 urls 传递给正在执行合并过程的 ffmpeg。
-f matroska
告诉 ffmpeg 使用 mkv 容器格式-c copy
表示不应该进行重新编码
编辑:
出于某种原因,在我的 systemm 上,输入在 ffmpeg 退出后被破坏。现在我通过输入 reset
来解决这个问题,直到找到更好的解决方案。