【发布时间】:2011-01-22 11:16:21
【问题描述】:
我正在尝试使用 python + ffmpeg + oggenc 将任何音频文件转换为 ogg。该程序几乎可以正常工作。但是对于大文件(我认为 > ~6mb),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()
编辑:
我想我可以补充一下,这非常有效:
#!/bin/bash
ffmpeg -i "$1" -vcodec null -acodec pcm_s16le -ac 2 -ab 44100 -f wav - | oggenc - --raw -q 4 -o "$2"
【问题讨论】:
-
检查我的答案更新以获取您的“>/dev/null”等效项。
标签: python ffmpeg subprocess