Good day, Bo Shi! 1. "profile-level-id in both sides' ffmpeg_codec_desc". Do you mean this structure?(in ffmepg_codec.c file): #if PJMEDIA_HAS_FFMPEG_CODEC_H264 { {PJMEDIA_FORMAT_H264, PJMEDIA_RTP_PT_H264, {"H264",4}, {"Constrained Baseline (level=30, pack=1)", 39}}, 0, 256000, 512000, &h264_packetize, &h264_unpacketize, &h264_preopen, &h264_postopen, &pjmedia_vid_codec_h264_match_sdp, /* Leading space for better compatibility (strange indeed!) */ {2, { {{"profile-level-id",16}, {"42e01e",6}}, {{" packetization-mode",19}, {"1",1}}, } }, }, #endif I experimented with bit rate values: set 1024000 and 2048000 instead of 256000 and 512000 respectively. - it helps. I changed "Constrained Baseline (level=30, pack=1)" to "Constrained Baseline (level=31, pack=1)", but it doesn't help. Should it help at all? I changed "42e01e" to "42e01f" - helped, because "1e" mean 30th level of H.264 encoder and "1f" mean 31st level. Are you agree with my settings? 2. "default Encoded format (code line 914 of ffmepg_codec.c )" Yes. It helps. I set "1280, 720, 30000,1001" instead of "720, 480, 30000, 1001". 3. Next question: how can I change frame rate? for example I do not need 25 FPS, I need only 10 FPS. Should I set "1280, 720, 30000, 3000"?(code line 914 of ffmepg_codec.c) Or I should change some other hard coded code? 4. I also tried to configure values: - PJMEDIA_MAX_MTU 4000 (default 1500) - helps seems like max packet size should more than default for greater resolution. - PJMEDIA_MAX_FRAME_DURATION_MS 200 (default 200) - doen't help. I achieved video 1280x720, but I dislike quality of video stream: - high action video causes frames lost, (it even visible by statistics after end of call) - after significantly change the frame(when re-paint most part of frame) - video stream has low resolution quality and appear a lot of bad coded square areas. Thank for advice.