Мне нужна помощь в понимании того, почему мои издатели не отправляют элементы через оператор combLatest. У меня есть издатель, который излучает видеокадры, и другой издатель, который использует эти видеокадры и извлекает лица из этих кадров. Сейчас я пытаюсь объединить исходные видеокадры и преобразованный вывод в один с помощью combLatest (я использую несколько пользовательских издателей для извлечения видеокадров и преобразования кадров):
let videoPublisher = VideoPublisher //Custom Publisher that outputs CVImageBuffers
.share()
let faceDetectionPublisher = videoPublisher
.detectFaces() // Custom Publisher/subscriber that takes in video frames and outputs an array of VNFaceObservations
let featurePublisher = videoPublisher.combineLatest(faceDetectionPublisher)
.sink(receiveCompletion:{_ in
print("done")
}, receiveValue: { (video, faces) in
print("video", video)
print("faces", faces)
})
Я не получаюлюбая деятельность вне комбинатаПоследний, однако. После некоторой отладки, я думаю, проблема в том, что все видеокадры из videoPublisher публикуются до того, как они могут успешно пройти через faceDetectionPublisher. Если я присоединяю операторы печати к концу videoPublisher и faceDetectionPublisher, я вижу выходные данные из первого, но ни одного из последнего. Я читал о комбинате и других методах, таких как многоадресная рассылка, но не нашел рабочего решения. Мне бы хотелось, чтобы любой опыт или руководство по объединению помогло лучше понять структуру!