2016-05-04 5 views
1

私はAplayの出力を抑制しようとしていますが、成功しません。 私はstdoutで印刷文を抑制する方法を知っていますが、pydubモジュールで同じ結果をアーカイブする方法を知りませんでした。あなたはより多くのオーディオは、キー情報を失うことは容易で連結すると例えば 私はPydubとAplay:冗長出力を抑制しますか?

from pydub import AudioSegment 
from pydub.playback import play 

next_kot = AudioSegment.from_ogg('/home/effe/Voz/Hello.ogg') 
play(next_kot) 

このコードで生成された出力音を再生(赤では!)

avplay version 9.18-6:9.18-0ubuntu0.14.04.1, Copyright (c) 2003-2014 the Libav developers built on Mar 16 2015 13:19:10 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1) Input #0, wav, from '/tmp/tmp5DUj0a.wav':
Duration: 00:00:01.32, bitrate: 1411 kb/s Stream #0.0: Audio: pcm_s16le, 44100 Hz, 2 channels, s16, 1411 kb/s

です。 このような出力を遮断する方法はありますか?

ありがとうございました。

+0

@ジャアロ:何か手がかり? –

答えて

1

をすることをを使用してお勧めしたい私はこれに走ったffmpegのは常にけれどもffplayのための新しいウィンドウを開くために起こっている「この動作するはずのffplay使用して再同じissuここに私がしたことがあります。 _play_with_ffplay_suppressという名前の新しい関数を作成し、その中に次のコードを記述することができます。上記の答えと私の違いはJiaaroが

stdout=open(os.devnull, 'w') 
stderr=os.stdout 

を使用して、私は同じ名前の変数を作成した後、「devnull」を使用していることです。非常に小さな違いですが、私はあなたがコメントで述べたエラーを解決することを願っています。

#rhp - additional import added 
import os 

#rhp-custom function to supress output while playing mp3 files 
def _play_with_ffplay_suppress(seg): 
    with NamedTemporaryFile("w+b", suffix=".wav") as f: 
     seg.export(f.name, "wav") 
     devnull = open(os.devnull, 'w') 
     subprocess.call([PLAYER,"-nodisp", "-autoexit", "-hide_banner", f.name],stdout=devnull, stderr=devnull) 

詳細についてはあなたがここにhttps://docs.python.org/3/library/subprocess.html Pythonでサブプロセスモジュールにおけるコール機能について読むことができます。

stderr=devnull 
stdout=devnull 

は、ここに私のコードです。

+0

シンプルで効果的です。なぜ私はそれについて考えなかったのか分かりません。 –

1

再生機能は本当に簡単(と主にPythonの対話シェルで簡単に使用するために含まれています)です - あなたの最善の策は、あなたのニーズに適していplayback codeのコピーを作成するために、おそらくです:

あなたの場合

import os 
from pydub.utils import get_player_name 

PLAYER = get_player_name() 

def play_with_ffplay(seg): 
    with NamedTemporaryFile("w+b", suffix=".wav") as f: 
     seg.export(f.name, "wav") 
     subprocess.call(
      [PLAYER, "-nodisp", "-autoexit", f.name], 
      stdout=open(os.devnull, 'w'), 
      stderr=os.stdout 
     ) 

注: - 私はpyaudioをインストールし、代わりに再生するために

+0

stderr = os.stdout AttributeError: 'module'オブジェクトに属性 'stdout'がありません –

関連する問題