如何使用 MPlayer 转储播放列表中的所有条目?

如何使用 MPlayer 转储播放列表中的所有条目?

我可以使用播放列表中的所有元素

mplayer -playlist file.m3u

但是当我使用

mplayer -dumpfile file.ts -dumpstream -playlist file.m3u

file.ts仅包含 M3U 播放列表中的第一个条目。我怎样才能告诉mplayer转储所有内容?

答案1

m3uor文件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

相关内容