我可以使用播放列表中的所有元素
mplayer -playlist file.m3u
但是当我使用
mplayer -dumpfile file.ts -dumpstream -playlist file.m3u
file.ts
仅包含 M3U 播放列表中的第一个条目。我怎样才能告诉mplayer
转储所有内容?
答案1
m3u
or文件m3u8
只是链接列表(每行一个)和注释混合而成。我使用以下小型 Python 程序逐一下载播放列表的所有部分:
#!/usr/bin/env python3
import subprocess
import os
def dump(playlist):
urls = []
with open(playlist, 'r') as fh:
for line in fh:
if line[0] == '#':
continue
urls.append(line.strip())
count = 1
for url in urls:
dumpfile = 'part%04d.ts' % count
count += 1
if os.path.exists(dumpfile):
print('Skipping %s...' % dumpfile)
cmd = [
'mplayer',
'-dumpfile', dumpfile,
'-dumpstream',
url
]
print('%s -> %s' % (url, dumpfile))
rc = subprocess.call(cmd)
if rc != 0:
raise Exception('dump failed')
if __name__ == '__main__':
import sys
playlist = sys.argv[1]
dump(playlist)
如果各部分是 MPEG.ts
文件(“传输流”),请参阅此问题了解如何将它们合并:使用 ffmpeg 复制编解码器将 *.ts 文件合并为一个 mp4
对于其他类型的文件,您可能需要工具。(请参阅点击此处获取 mp3)