android 上的 qt5 不要使用 QAudioRecorder 录制 PCM wav 文件
qt5 on android don't record PCM wav files with QAudioRecorder
我在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)
不幸的是,我没有用QAudioRecorder 解决问题。我找到了用 QAudioInput 编写 headerless signed-int 16bit 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()
我在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)
不幸的是,我没有用QAudioRecorder 解决问题。我找到了用 QAudioInput 编写 headerless signed-int 16bit 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()