Я пытаюсь использовать python + ffmpeg + oggenc для преобразования любого аудиофайла в ogg. Программа работает, почти. Но для больших файлов (я думаю> 6 МБ) процесс ffmpeg начинает спать в pipe_wait. Я не знаю, какую трубу он ждет.
Если я уничтожу процесс ffmpeg, процесс oggenc продолжится, и я получу в результате ogg-файл с ~ 2: 40 всего звука.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from subprocess import Popen, PIPE
from sys import argv
ffmpeg = Popen([
"ffmpeg",
"-i", argv[1],
"-vcodec", "null",
"-acodec", "pcm_s16le",
"-ac", "2",
"-ab", "44100",
"-f", "wav",
"-"
],stdout = PIPE,stderr = PIPE)
oggenc = Popen([
"oggenc",
"-", "--raw",
"-q", "4",
"-o", argv[2]
],stdin = ffmpeg.stdout,stderr = PIPE)
oggenc.communicate()
ffmpeg.communicate()
EDIT:
Я мог бы добавить, что это прекрасно работает:
#!/bin/bash
ffmpeg -i "$1" -vcodec null -acodec pcm_s16le -ac 2 -ab 44100 -f wav - | oggenc - --raw -q 4 -o "$2"