在音频录制代码中添加一个计时器来记录实际录制时间,并将其写入OPUS音频流的首部。这将确保在播放OPUS文件时,播放器可以正确地计算时间戳,并正确地播放音频。
以下是一个示例代码段来实现这一方法:
import time
import sounddevice as sd
import soundfile as sf
# 设置录制参数
channels = 2
samplerate = 44100
blocksize = 2048
duration = 10 # seconds
filename = 'recording.opus'
# 记录实际录制时间
start_time = time.time()
# 记录OPUS音频流
with sf.SoundFile(filename, mode='w', samplerate=samplerate,
channels=channels, format='OGG', subtype='OPUS') as file:
with sd.InputStream(samplerate=samplerate, blocksize=blocksize,
channels=channels) as stream:
for i in range(int(duration * samplerate / blocksize)):
block, overflow = stream.read(blocksize)
file.write(block)
# 将记录的时间戳写入OPUS首部
with open(filename, 'rb+') as file:
file.write(b'OpusHead')
file.write(b'\x01\x00')
file.write(b'\x00' * 7)
timestamp = int((time.time() - start_time) * 48000)
file.write(timestamp.to_bytes(8, byteorder='big'))
这段代码使用Python的sounddevice和soundfile库来记录OPUS音频流,并在录制结束时将实际时间戳写入OPUS流的首部。这将确保在播放OPUS文件时,播放器可以正确地计算时间戳,并正确地播放音频。
上一篇:保存OpenGL渲染为图像文件
下一篇:保存OTP以便验证