Jak zrzucić wszystkie wpisy na liście odtwarzania za pomocą MPlayera?

0

Mogę odtwarzać wszystkie elementy z listy odtwarzania za pomocą

mplayer -playlist file.m3u

ale kiedy zrzucam strumień za pomocą

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

file.tsbędzie zawierać tylko pierwszy wpis na liście odtwarzania M3U. Jak mogę mplayerzrzucić wszystko?

Aaron Digulla
źródło

Odpowiedzi:

1

Plik m3ulub m3u8to tylko lista linków (po jednym w wierszu) zmieszanych z komentarzami. Użyłem następującego małego programu w języku Python, aby pobrać wszystkie części listy odtwarzania jeden po drugim:

#!/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)

Jeśli części to .tspliki MPEG („strumień transportowy”), zobacz pytanie, jak je połączyć: Użyj kodeka kopiującego ffmpeg, aby połączyć pliki * .ts w jeden plik MP4

W przypadku innych typów plików prawdopodobnie będziesz potrzebować narzędzi. (patrz tutaj dla mp3 )

Aaron Digulla
źródło