Потоковая передача x264 с потерей пакетов

Пишу программу, где использую x264 как кодер. Я использую следующие параметры:

av_opt_set (codecContextH264[numberCoder]-> priv_data, "profile", "baseline", 0);
av_opt_set (codecContextH264[numberCoder]-> priv_data, "preset", "ultrafast", 0);
av_opt_set (codecContextH264[numberCoder]-> priv_data, "tune", "zerolatency", 0);
codecContextH264[numberCoder]-> bit_rate =bitrate;
codecContextH264[numberCoder]-> bit_rate_tolerance=bitrate-5000;
codecContextH264[numberCoder]-> width = w;
codecContextH264[numberCoder]-> height = h;
codecContextH264[numberCoder]-> time_base.den = fps;
codecContextH264[numberCoder]-> time_base.num = 1;
codecContextH264[numberCoder]-> pix_fmt = PIX_FMT_YUV420P;
codecContextH264[numberCoder]-> gop_size = fps*3;
codecContextH264[numberCoder]-> keyint_min = fps*3;
codecContextH264[numberCoder]-> max_b_frames = 0; 
codecContextH264[numberCoder]-> slices = (int) (w*h)/1500+1;

Я использую только кадры I и P. Какие настройки x264 я должен использовать, чтобы потерять P-кадры? Может у x264 такой возможности нет?! Я читал, что если использовать "базовый" профиль, то можно потерять P-кадры... Помогите пожалуйста.


person user2629511    schedule 06.10.2014    source источник


Ответы (1)


Вы можете попробовать установить для gop_size и keyint_min значение 0 — это должно привести к потоку только с I-кадрами, но при этом теряется ощущение сжатия как такового.

Дальнейшее основано на предположении, что вы используете RTP поверх UDP - если вы транслируете в среде с высокой потерей пакетов, почему бы не использовать TCP или не реализовать какой-либо качественный сервис, где, если вы видите, что порядковые номера RTP отсутствуют, вы заставить источник выдать новый ключевой кадр.

person Rudolfs Bundulis    schedule 06.10.2014