1

我在 pyqt5 上编写了代码,以将 PCM 编解码器中的音频文件录制为 wav 格式。在 PC 上很好,但在 android 上总是用 amr 编解码器编写 mp4 文件。我该如何解决?

这是代码

recorder=QAudioRecorder(w)

audioSettings=QAudioEncoderSettings()
audioSettings.setCodec("audio/PCM")
audioSettings.setSampleRate(16000)
recorder.setAudioSettings(audioSettings);

recorder.setContainerFormat("wav");
recorder.setOutputLocation(QUrl.fromLocalFile("/sdcard/test"))

(Pyqt5 在 Android 上的 Pydroid 2 应用中从 pip 安装,从 Ministro II 应用中安装 qt5)

4

1 回答 1

0

不幸的是,我没有解决 QAudioRecorder 的问题。我找到了使用 QAudioInput 编写无头有符号整数 16 位 16khz little endian PCM 的方法:

#!/usr/bin/env python2
from PyQt5.QtCore import QFile
from PyQt5.QtMultimedia import QAudioInput,QAudioFormat,QAudio
import sys
import time
from PyQt5.QtWidgets import QApplication, QWidget,QPushButton

format=QAudioFormat()
format.setSampleRate(16000);
format.setChannelCount(1);
format.setSampleSize(16);
format.setCodec("audio/pcm")

format.setByteOrder(QAudioFormat.LittleEndian)
format.setSampleType(QAudioFormat.SignedInt)

audio=QAudioInput(format)

def onBtn():
    if audio.state()==QAudio.StoppedState:
        audio.start(destFile)
        print "started"
    else:
        audio.stop()
        print "stopped"
pass

app = QApplication(sys.argv)
w = QWidget()
btnRec = QPushButton('Rec|stop', w)
btnRec.clicked.connect(onBtn)
w.show()
app.exec_()

destFile.close()
于 2018-02-11T16:28:51.250 回答