FFmpeg: Adjust default proxy settings
GOP size and quality are adjusted for h264 codec. These new values are based on result of benchmark on 9 random files: https://docs.google.com/spreadsheets/d/1nOyUGjoVWUyhQ2y2lAd8VtFfyaY1wQNGj1krCCNbk7Y/edit?usp=sharing Reducing quality to 50 reduces proxy filesize by about 2x on average and has no significant impact on decoding performance. Increasing GOP size from 2 to 10 also reduces proxy filesize 2x-3x while scrubbing is only about 8% slower. It is still around 100FPS with 1920x1080 media. This is unfortunately about 50% slower than MJPEG, but this can be improved with `fastdecode` tune applied to libx264 encoder Quite surprisingly h264 codec presets had little influence on proxy building performance as well as proxy filesize. So far it looks that FFmpeg does initialize encoder in different way then Blender. This applies mot only for presets but for tune and profile libx264 setting. Once this issue is resolved, performance of proxies may be optimized further. Reviewed By: sergey Differential Revision: https://developer.blender.org/D10897
This commit is contained in:
parent
9ca55b10b8
commit
b9207fb43d
Notes:
blender-bot
2023-02-14 08:38:14 +01:00
Referenced by issue #87534, Assert BLI_thread_is_main while rendering via a script Referenced by issue #81088, system reload scripts doesn't work for addons stored in an alternative file path as set in preferences/file paths/scripts Referenced by issue #79186, When returning to an open instance of Blender from other application, Blender (often) crashes immediately.
|
@ -500,7 +500,7 @@ static struct proxy_output_ctx *alloc_proxy_output_ffmpeg(
|
|||
rv->c->codec_id = AV_CODEC_ID_H264;
|
||||
rv->c->width = width;
|
||||
rv->c->height = height;
|
||||
rv->c->gop_size = 2;
|
||||
rv->c->gop_size = 10;
|
||||
rv->c->max_b_frames = 0;
|
||||
/* Correct wrong default ffmpeg param which crash x264. */
|
||||
rv->c->qmin = 10;
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
.build_size_flag = IMB_PROXY_25, \
|
||||
.build_tc_flag = IMB_TC_RECORD_RUN | IMB_TC_FREE_RUN | \
|
||||
IMB_TC_INTERPOLATED_REC_DATE_FREE_RUN | IMB_TC_RECORD_RUN_NO_GAPS, \
|
||||
.quality = 90, \
|
||||
.quality = 50, \
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -587,7 +587,7 @@ void SEQ_proxy_set(struct Sequence *seq, bool value)
|
|||
seq->flag |= SEQ_USE_PROXY;
|
||||
if (seq->strip->proxy == NULL) {
|
||||
seq->strip->proxy = MEM_callocN(sizeof(struct StripProxy), "StripProxy");
|
||||
seq->strip->proxy->quality = 90;
|
||||
seq->strip->proxy->quality = 50;
|
||||
seq->strip->proxy->build_tc_flags = SEQ_PROXY_TC_ALL;
|
||||
seq->strip->proxy->build_size_flags = SEQ_PROXY_IMAGE_SIZE_25;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue