9

簡単な質問。

いくつかのオーディオファイルを再生するためだけに、Linuxでpygameを実行しています。いくつかの.wavファイルがあり、適切な速度で再生するのに問題があります。

import pygame.mixer, sys, time

#plays too fast
pygame.mixer.init(44100)
pygame.mixer.music.load(sys.argv[1])
pygame.mixer.music.play()
time.sleep(5)
pygame.mixer.quit()

#plays too slow
pygame.mixer.init(22100)
pygame.mixer.music.load(sys.argv[1])
pygame.mixer.music.play()
time.sleep(5)
pygame.mixer.quit()

私はggogleコードでいくつかのものを検索しましたが、デフォルトのパラメーターを使用してinit関数を呼び出しても問題ないようです。他の人がこのスクリプトを実行して、同じ動作をするかどうかを確認することはできますか?誰かがそれをスピードアップする方法を知っていますか?または、各ファイルの速度を調整しますか?

ありがとう。

4

5 に答える 5

5

いくつかのmp3オーディオトラックの再生が遅くなりました。次のように変異原を使用して、mp3サンプルレートに基づくようにミキサー周波数を更新しました。

import pygame, mutagen.mp3

song_file = "your_music.mp3"

mp3 = mutagen.mp3.MP3(song_file)
pygame.mixer.init(frequency=mp3.info.sample_rate)

pygame.mixer.music.load(song_file)
pygame.mixer.music.play()

そしてそれは問題を修正しました。

于 2017-02-18T16:06:45.863 に答える
5

クリスHの答えを改善するために。waveライブラリの使用方法の例を次に示します。

import wave
import pygame

file_path = '/path/to/sound.wav'
file_wav = wave.open(file_path)
frequency = file_wav.getframerate()
pygame.mixer.init(frequency=frequency)
pygame.mixer.music.load(file_path)
pygame.mixer.music.play()

frequencyで使用されているパラメータやその他のパラメータを変更する場合は、最初にpygame.mixer.init呼び出す必要があることに注意してください。Pygameのドキュメントpygame.mixer.quit

于 2017-09-06T13:03:36.000 に答える
3

Audacityのような無料のオーディオツールでオーディオファイルを開きます。メディアのサンプリングレートがわかります。また、すべてのサウンドを同じにすることができるように、異なるサンプリングレートに変換することもできます。

于 2010-01-29T01:55:18.213 に答える
2

私はそれを理解しました...waveモジュールhttp://docs.python.org/library/wave.htmlがあり、wavファイルのサンプルレートを読み取ることができます。

于 2010-01-29T20:37:11.730 に答える
2

Ogg Vorbis(.ogg)エンコーディングを使用している場合、オーディオが途切れるという同じ問題が発生します。ミキサーオブジェクトを初期化する前に、再生しようとしている周波数を読み取る必要があります。

pygameを使用して適切な頻度で.oggオーディオを再生する方法は次のとおりです。

from pyogg import VorbisFile
from pygame import mixer

# path to your audio
path = "./file.ogg"
# an object representing the audio, see https://github.com/Zuzu-Typ/PyOgg
sound = VorbisFile(path)
# pull the frequency out of the Vorbis abstraction
frequency = sound.frequency
# initialize the mixer
mixer.init(frequency=frequency)
# add the audio to the mixer's music channel
mixer.music.load(path)
# mixer.music.set_volume(1.0)
# mixer.music.fadeout(15)
# play
mixer.music.play()
于 2019-07-15T18:41:04.413 に答える