Я попробовал следующий код, который отлично записывает вызов на симуляторе, но не на устройстве.
func startSipRecording() -> (started: Bool, startDate: NSDate?) {
var status = pj_init()
if status != PJ_SUCCESS.rawValue {
return (false, nil)
}
cpFec = pjsua_data().cp
/* Must create a pool factory before we can allocate any memory. */
pj_caching_pool_init(&cpFec!, &pj_pool_factory_default_policy, 0)
status = pjmedia_endpt_create(&cpFec!.factory, nil, 1, &med_endpt
)
if status != PJ_SUCCESS.rawValue {
return (false, nil)
}
pool = pj_pool_create(&cpFec!.factory, "app", 4000, 4000, nil)
print("Starting recording...")
let rec = Recording.getNewSipBlanckRecording()
let files = FileProvider.getRecordingUrl(fileName: rec.fileName)?.path
let fileName: pj_str_t = pj_str(convertToChar(files))
print(status == 0 ? "REecorder has been created." : "\(files ?? "")")
UserDefaults.standard.set(recorder_id, forKey: current_recorder_id)
UserDefaults.standard.synchronize()
/* Create WAVE file writer port. */
let str = String(cString: fileName.ptr, encoding: .utf8)
status = pjmedia_wav_writer_port_create(pool,
str,
CLOCK_RATE,
NCHANNELS,
SAMPLES_PER_FRAME,
BITS_PER_SAMPLE,
0, 0,
&file_port);
/* Create sound player port. */
status = pjmedia_snd_port_create_rec(pool, /* pool */
-1, /* use default dev. */
PJMEDIA_PIA_SRATE(&file_port!.pointee.info),/* clock rate. */
PJMEDIA_PIA_CCNT(&file_port!.pointee.info),/* # of channels. */
PJMEDIA_PIA_SPF(&file_port!.pointee.info), /* samples per frame. */
PJMEDIA_PIA_BITS(&file_port!.pointee.info),/* bits per sample. */
0, /* options */
&snd_port /* returned port */
)
if status != PJ_SUCCESS.rawValue {
return (false, nil)
}
status = pjmedia_snd_port_connect(snd_port, file_port)
// pj_thread_sleep(10);
return (true, rec.startDateTime)
}
Вызовите записи устройства только на 1 или 2 секунды. Получить WAV-файл всего за 2 секунды. Пожалуйста, помогите мне. Я также пытался использовать другие методы, которые работают в pjsip 2.7.1, но он зависает в 2.9.
Я тестировал его с симулятора на устройство и вызов устройства, но все время получал один и тот же результат.