FFMpeg Вопрос о пакете pts, dts и параметрах продолжительности - PullRequest
1 голос
/ 27 апреля 2020

В соответствии с примером remuxing. c Я использую следующие 3 строки кода:

Packet.pts= av_rescale_q_rnd(Packet.pts, pAVStreamIn->time_base, pAVStreamOut->time_base, static_cast<AVRounding>(AV_ROUND_NEAR_INF | AV_ROUND_PASS_MINMAX));
Packet.dts= av_rescale_q_rnd(Packet.dts, pAVStreamIn->time_base, pAVStreamOut->time_base, static_cast<AVRounding>(AV_ROUND_NEAR_INF | AV_ROUND_PASS_MINMAX));
Packet.duration= av_rescale_q(Packet.duration, pAVStreamIn->time_base, pAVStreamOut->time_base);

Код работает, но не использует камеру rtsp в качестве источника. Я получаю ошибку в функции av_interleaved_write_frame. Пожалуйста, посмотрите на следующий отчет журнала:

AudioIndex Packet.pts: 0, Packet.dts: 0, Packet.duration: 160
AudioIndex Packet.pts: 120, Packet.dts: 120, Packet.duration: 160  
AudioIndex Packet.pts: 312, Packet.dts: 312, Packet.duration: 160
AudioIndex Packet.pts: 432, Packet.dts: 432, Packet.duration: 160
AudioIndex Packet.pts: 632, Packet.dts: 632, Packet.duration: 160
AudioIndex Packet.pts: 752, Packet.dts: 752, Packet.duration: 160
AudioIndex Packet.pts: 952, Packet.dts: 952, Packet.duration: 160
AudioIndex Packet.pts: 1072, Packet.dts: 1072, Packet.duration: 160
AudioIndex Packet.pts: 1272, Packet.dts: 1272, Packet.duration: 160
AudioIndex Packet.pts: 1392, Packet.dts: 1392, Packet.duration: 160
AudioIndex Packet.pts: 1592, Packet.dts: 1592, Packet.duration: 160
AudioIndex Packet.pts: 1712, Packet.dts: 1712, Packet.duration: 160
VideoIndex Packet.pts: 9223372036854775808, Packet.dts: 9223372036854775808, Packet.duration: 0

Как вы можете видеть, pts, dts, параметры длительности относительно аудиопотока в порядке, параметры видео абсолютно отсутствуют. Как я могу сделать, чтобы переписать параметры видео? Кто-нибудь может объяснить?

...