Хорошо, это не проблема производительности, а скорее проблема в том, что openRTSP не может определить правильную частоту кадров из потока RTSP. Я записал ровно 60 секунд, и, как и предполагалось, я использовал ffprobe
, чтобы получить больше информации о битовом потоке:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'output-00000-00060.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: mp42isom
creation_time : 2018-07-02 03:30:01
Duration: 00:04:00.13, start: 0.000000, bitrate: 46 kb/s
Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuvj420p(pc, bt470bg/bt470bg/iec61966-2-1), 1280x720 [SAR 561:560 DAR 187:105], 45 kb/s, 15 fps, 15 tbr, 600 tbn, 1200 tbc (default)
Metadata:
creation_time : 2018-07-02 03:30:01
handler_name : ?Apple Alias Data Handler
encoder : H.264
Две вещи не так:
- Проблема № 1: частота кадров не равна 15 к / с, но камера настроена на попытку отправки 30 к / с.
- Проблема № 2: продолжительность 4:00, но должна быть 1:00
Для вопроса № 1: Это может быть моя ошибка . Я должен был вручную указать частоту кадров, так как openRTSP не получает ее из потока. Я должен был указать опцию -f 30
.
Для вопроса № 2: После задания опции -f 30
я по-прежнему получаю видеофайл продолжительностью 2 часа вместо 1,00. Я предполагаю , что проблема в том, что камера отправляет свои данные в режиме прогрессивный , а не в режиме чересстрочный . Возможно, по умолчанию openRTSP является чересстрочным режимом. Поэтому, когда я удваиваю частоту кадров до -f 60
, все в порядке.
Может быть, кто-то может подтвердить мою догадку?