Аудиоплеер Hikvision

deadbeef
Сообщения: 8
Зарегистрирован: 14 ноя 2022, 15:56

Аудиоплеер Hikvision

Сообщение deadbeef » 14 ноя 2022, 16:08

Приветствую. Наткнулся на форуме на замечательную штуку для воспроизведения аудиофайлов через камеру Hikvision (viewtopic.php?t=1118), начал пробовать и поймал пару проблем.

1) При значении параметра S (#define S 20) выше 15 звук начинает заикаться, точнее проигрываться с паузами
2) Мои собственные звуковые файлы почему-то сопровождаются треском в начале и в конце, с тестовыми такой проблемы нет.

Обратил внимание, что при конвертации через ffmpeg у тестовых файлов битрейт всегда ровно 64 кбит, у моих же он плавает в пределах 64.1-66.4 кбит, но с чем это связано пока понять не могу =( Пробовал конвертировать исходные файлы стерео и моно, 8 и 16 килогерц, 16 и 24 бита - разницы никакой.

Мои звуки: https://disk.yandex.ru/d/29D6XATT5h67VA
Камера DS-2CD2642FWD-IS
2022-11-14_15-07-53.png
2022-11-14_15-07-53.png (12.48 КБ) 2968 просмотров

iTuneDVR
Сообщения: 3218
Зарегистрирован: 24 авг 2013, 11:05

Re: Аудиоплеер Hikvision

Сообщение iTuneDVR » 14 ноя 2022, 19:47

deadbeef писал(а):1) При значении параметра S (#define S 20) выше 15 звук начинает заикаться, точнее проигрываться с паузами

Проект разрабатывался и тестировался на Windows 7 32bit и на всех камерах с этой машины звук шел ровно тогда и потом.
Пауза была подобрана экспериментально отрабатывала на ура на этой машине и транслировала на удаленные камеры плавно.

Были обращения от коллег, по поводу заикания звука, на Windows 10 64 bit и там на каких-то машинах было, а на каких-то не было при том же исполняемом файле 32бит....

Сейчас я на другой машине сижу Windows 10 64bit.

Запустил свой изначальный проект на камере DS-2CD2422FWD-IW V5.5.0 build 170725, на G0 пока еще не успел, но позже.
Стал пересобирать компилятором gcc под w32 платформу:
C S=20 тормоза изначально.
С S=15 более менее, но немного спешит
С S=16 начинает тормозить и промежуточного значения нет...

Пересобрал проект под 64 бит с использованием библиотек hikvision 64 бит, чтобы все было как надо.
Функцию проигрывания перенес в thread, добавил паузу как в std::this_thread::sleep_for(std::chrono::milliseconds(15));
Эффект такой же с тормозами... ;)
ЧУДЕСА!

На вот этой камере почему-то все иначе дело обстоит DS-2CD2423G0-I V5.6.5 build 200316, хотя на ней же ранее все было нормально.
S=15 и тормоза, а про S=20 и говорит не нужно...
S=ниже играет более менее, но торопится....

Не ожидал такого подвоха ;)
Причем на разных собранных вариантах..

С треском более менее все понятно на твоем файле, но ведет себя по разному на разных камерах.
Переконвертировал твой файл и на первой камере даже было ровно многократно, но потом, время от времени, после постоянного запуска сразу концовка издает звук.

Видимо такая реализация на разных камерах.
Прям озадачил.

Конечно, под G.711.alaw выставленный на камере я конвертировал под него, а под G.711.ulaw под него, потому как звучат они если перепутать по разному...

Суть алгоритма в отправке чистого блока данных в 160 байт с некой задержкой, которая и была подобрана тогда и была вынесена как переменная.
Соответственно, при конвертации разными средствами, что-то может быть вначале и в конце и это идет как данные!!!
Потому у меня в примере output.wav ничего лишнего нет ;)

Код, конечно очевиден и его не много, но видимо надо еще немного потрудиться и переписать его как-то иначе..

Какие настройки аудио на камере используются?
Вложения
2022-11-14_17-35-39.png
2022-11-14_17-35-39.png (6.36 КБ) 2967 просмотров

deadbeef
Сообщения: 8
Зарегистрирован: 14 ноя 2022, 15:56

Re: Аудиоплеер Hikvision

Сообщение deadbeef » 15 ноя 2022, 09:00

В принципе в моем частном случае можно попробовать вручную поправить файлы, благо мне их нужно штуки три от силы. Но вообще пока экспериментировал мне показалось, что чем итоговый битрейт ближе к 64 ровно, тем лучше результат. Только вот как добиться ровно такого битрейта не понял пока.

IMG_20221115_075646.jpg

iTuneDVR
Сообщения: 3218
Зарегистрирован: 24 авг 2013, 11:05

Re: Аудиоплеер Hikvision

Сообщение iTuneDVR » 15 ноя 2022, 14:14

Раз все-таки проигрывание как-то зависит от ПК, с на котором запущен софт, то какие характеристики и ОС?
В аттаче варианты конвертации твоего звука под a и u.
output.zip
(70.19 КБ) 131 скачивание

Для выравнивания битрейта надо наверное ключи дополнительные к ffmpeg или софтом править звук.
А это я использовал в первый раз, когда начал разбираться каким должен быть звук, но тогда версия была другая.
Сейчас вот так...
И потом подрезка вначале и в конце, а так же можно выровнять по порции данных.
2022-11-15_13-11-28.png

deadbeef
Сообщения: 8
Зарегистрирован: 14 ноя 2022, 15:56

Re: Аудиоплеер Hikvision

Сообщение deadbeef » 15 ноя 2022, 14:27

iTuneDVR писал(а):Раз все-таки проигрывание как-то зависит от ПК, с на котором запущен софт, то какие характеристики и ОС?

i7-4770, 16Gb RAM, Win 10 19044.2251. Потом будет другой, сильно проще, в принципе я там могу и 32-битную семерку поставить или вообще XP. Буду экспериментировать в общем =)

iTuneDVR писал(а):Для выравнивания битрейта надо наверное ключи дополнительные к ffmpeg или софтом править звук.
А это я использовал в первый раз, когда начал разбираться каким должен быть звук, но тогда версия была другая.
Сейчас вот так...
И потом подрезка вначале и в конце, а так же можно выровнять по порции данных.

Спасибо, направление куда копать понятно, буду пробовать =)

deadbeef
Сообщения: 8
Зарегистрирован: 14 ноя 2022, 15:56

Re: Аудиоплеер Hikvision

Сообщение deadbeef » 15 ноя 2022, 14:30

iTuneDVR писал(а):В аттаче варианты конвертации твоего звука под a и u.

Так же трещит. Буду пробовать вручную подрезать

deadbeef
Сообщения: 8
Зарегистрирован: 14 ноя 2022, 15:56

Re: Аудиоплеер Hikvision

Сообщение deadbeef » 15 ноя 2022, 16:05

В общем видимо придётся и вправду под конкретный комп подбирать. На этом добился приемлемого результата - звук идёт ровно, иногда чуть-чуть торопится (для речи приемлемо), в конце очень слабый щелчок. На соседнем ноутбуке с десяткой проверил - такой же результат. Соберу итоговый транслятор и буду посмотреть. S поставил 15, в файле в конце добавил 10 секунд тишины, в коде сделал обрезку конца файла и выравнивание кратно 160 байт:

Код: Выделить всё

int zzz = lof(fp1);
int yyy = (zzz % 160);
int i = zzz - yyy - 12160;


Результат не идеальный, но приемлемый. Особенно в сравнении с альтернативой тянуть по 72 тысячам квадратных метров аудиокабели =)

iTuneDVR
Сообщения: 3218
Зарегистрирован: 24 авг 2013, 11:05

Re: Аудиоплеер Hikvision

Сообщение iTuneDVR » 15 ноя 2022, 16:47

160 байт это порция пакета отправки для конкретного кодека.
Согласуется ли это с аудиоданными в целом непонятно, но я тоже делал подобное выравнивание и обрезку лишних данных.
В этих условиях твой файл 3,4 раза может проиграться без щелчка в конце, а на 5-ый раз он возникает. Откуда, не совсем понятно.
Возможно, что это не проблема буфера отправки, а проблема буфера приемки на устройстве или ....
На другой камере, как писал выше там мрак вообще и еще хуже...
Собственно, я пока недопонимаю, что происходит и почему такая разница и с чем связана, ведь все работало почти идеально ;)
Да, твой звучок отдельная тема.

Была ситуация, когда голосовой звук готовился для подобной камеры и встраивался в нее, чтобы при сработке детекции его камера проигрывала, типа приветствия. Все ровно и до сих пор это работает нормально и камера и звук, а прошло время...

Надо что-то подумать как и конечно попробовать на других устройствах.

Да, пусть это не сертифицированная система оповещения, то тем не менее, вполне полезная вещь по контексту.
Рад, что хоть как-то и кому то пригодилось ;)

deadbeef
Сообщения: 8
Зарегистрирован: 14 ноя 2022, 15:56

Re: Аудиоплеер Hikvision

Сообщение deadbeef » 23 ноя 2022, 14:31

Снова здравствуйте. С 32-битной виндой всё выглядит гораздо лучше, но почему-то по завершении работы плеера выскакивает окно с ошибкой, на 64 битах такого не было. Видимо какую-то библиотеку нужно зарегистрировать?

Код: Выделить всё

Сигнатура проблемы:
  Имя события проблемы:   APPCRASH
  Имя приложения:   HSWP.exe
  Версия приложения:   0.0.0.0
  Отметка времени приложения:   637df5f8
  Имя модуля с ошибкой:   HCVoiceTalk.dll
  Версия модуля с ошибкой:   5.3.2.15
  Отметка времени модуля с ошибкой:   5a15145d
  Код исключения:   c0000005
  Смещение исключения:   000445de
  Версия ОС:   6.1.7601.2.1.0.256.1
  Код языка:   1049
  Дополнительные сведения 1:   0a9e
  Дополнительные сведения 2:   0a9e372d3b4ad19135b953a78882e789
  Дополнительные сведения 3:   0a9e
  Дополнительные сведения 4:   0a9e372d3b4ad19135b953a78882e789

deadbeef
Сообщения: 8
Зарегистрирован: 14 ноя 2022, 15:56

Re: Аудиоплеер Hikvision

Сообщение deadbeef » 23 ноя 2022, 16:49

Я не Сишник, но как мне кажется нашёл обшибку в коде =)

Было:

Код: Выделить всё

   while (j=0 <= i) {

Стало:

Код: Выделить всё

   int j=0;
      while (j <= i) {


Треск пропал полностью и везде (ну ок, не везде, в начале небольшой щелчок есть). До этого исправления насколько я понимаю цикл выполнялся до тех пор, пока голосовая функция не вываливалась с ошибкой, потому что j на протяжении всего вывода всегда равнялось 161.


Вернуться в «IPC Hikvision»