【诉求】
A是一段音频,它有个长度是9秒,A_2就是播放A段音频的前2s。传入播放的时间time,效果是播放对应时常的音频。抽象出来:time = 输出音频的种类对应的长度
str audioList = [A,B,C]
Int audioLength = [9,9,10]
All_audio_Length = 28
time
如果播放时间time是7s,播放A_7
如果播放时间time是14s,播放A + B_5
如果播放时间time是20s,播放A + B + C_2
如果播放时间time是30s,播放A + B + C + A_2
【实现】
def test(time):result = ""audioList = ["A","B"]audioLengtList = [9,9]curTime = 0i = 0while time > curTime:for i in range(len(audioList)):curTime += audioLengtList[i]if result != "":result += "+"if time > curTime:result += audioList[i]continueelif time == curTime:result += audioList[i]breakelif time < curTime:needless = curTime - timeneed = audioLengtList[i] - needlessresult += audioList[i] + "_" + str(need)breaki = i % len(audioList)print(result)return resultif __name__ == '__main__':test(50)
【调用pygame实现音频播放】
pygame.mixer.Sound(“”)
Hello from the pygame community. https://www.pygame.org/contribute.html
import pygame
import argparsedef audioPlay(time):# 初始化 pygameglobal soundpygame.init()# 创建音频对象pygame.mixer.init()AudioList = ["dog.wav","aircon.wav"]AudioLengthList = []for i in AudioList:a = int(pygame.mixer.Sound(i).get_length())AudioLengthList.append(a)curTime = 0i = 0result = ""while time > curTime:for i in range(len(AudioList)):curTime += AudioLengthList[i]if result != "":result += "+"if time > curTime:result += AudioList[i]sound = pygame.mixer.Sound(AudioList[i])sound.play()pygame.time.wait(int(sound.get_length())*1000)continueelif time == curTime:result += AudioList[i]sound = pygame.mixer.Sound(AudioList[i])sound.play()pygame.time.wait(int(sound.get_length())*1000)breakelif time < curTime:needless = curTime - timeneed = AudioLengthList[i] - needlessresult += AudioList[i] + "_" + str(need)sound = pygame.mixer.Sound(AudioList[i])sound.play()pygame.time.wait(need*1000)breaki = i % len(AudioList)print(result)return resultif __name__ == '__main__':# parser = argparse.ArgumentParser()# parser.add_argument('-t', '--time', default='', type=int, required=False, help="Execution time")# args = parser.parse_args()# t = args.timeaudioPlay(30)