Два клиента разговаривают с помощью службы webrt c. Из этого у меня есть два списка rtp.Packet
, собранных с каждого узла webrt c.
var list1 []*rtp.Packet
var list2 []*rtp.Packet
Я могу сохранить каждый список в отдельном ogg
отформатированном файле.
oggFile, err := oggwriter.New("list1.ogg", 48000, 2)
if err != nil {
panic(err)
}
for _, t := range list1 {
if err := oggFile.WriteRTP(t); err != nil {
panic(err)
}
}
if err := oggFile.Close(); err != nil {
//
}
Итак, я получу два отдельных аудиофайла для каждого клиента. Работает нормально.
Но я хочу объединить эти два списка, так как это разговор. Как показано ниже
// adding all packets in a list
list := make([]*rtp.Packet, 0)
for _, p := range list1 {
list = append(list, p)
}
for _, p := range list2 {
list = append(list, p)
}
// sorting packets based on timestamp
sort.Slice(list, func(i, j int) bool {
return list[i].Timestamp < list[i].Timestamp
})
Теперь, если я сохраню этот список, я должен был получить реальный разговор между двумя клиентами.
Но это не работает. Похоже, говорит только один клиент, а другой молчит.
Насколько я понимаю, в каждом пакете что-то есть в заголовке. Когда я объединил их в один список, они запутались. И в конечном итоге не работает должным образом.
Примечание: пользователи подключены к одному серверу. все пакеты доступны в реальном времени последовательно.
Любая помощь будет принята с благодарностью.