Огрызкам на резах задаётся битрейт проекта
Перекодированный кусочек от точки реза до опорного кадра шёл без ключа битрейта, и NVENC брал своё умолчание. Замерено в готовом ролике пользователя: 5.7-6.8 Мбит/с в огрызке против 54-60 в скопированном материале рядом — мутное пятно на полсекунды. Раньше это задевало только редкие точные резы, а теперь точны все: в том ролике 98 кусков, то есть 98 таких пятен. После правки на том же материале: огрызок 86.8 Мбит/с (потолок в полтора битрейта проекта, для куска в 0.7 с с опорным кадром это нормально), соседний скопированный 61.6. Сверка кадров и звука проходит.
This commit is contained in:
parent
6617e29514
commit
0ba3bd40a6
2 changed files with 10 additions and 4 deletions
|
|
@ -909,7 +909,7 @@ begin
|
|||
FMaster.FpsNum, FMaster.FpsDen,
|
||||
FMaster.VideoCodec, FMaster.PixFmt, FMaster.AudioCodec,
|
||||
FMaster.SampleRate, FMaster.Channels, FIntermediateFormat,
|
||||
HeadFrames, WithAudio),
|
||||
HeadFrames, WithAudio, FMaster.VideoBitrate),
|
||||
'Перекодирование стыка куска ' + IntToStr(I + 1)) then
|
||||
Exit;
|
||||
|
||||
|
|
|
|||
|
|
@ -87,7 +87,8 @@ function ArgsEncodeFragment(const ASrc, ADst: string; AStart, AEnd: Double;
|
|||
AFpsNum, AFpsDen: Integer;
|
||||
const AVideoCodec, APixFmt, AAudioCodec: string;
|
||||
ASampleRate, AChannels: Integer; const AFormat: string;
|
||||
AFrames: Integer = 0; AWithAudio: Boolean = True): TArgs;
|
||||
AFrames: Integer = 0; AWithAudio: Boolean = True;
|
||||
ABitrate: Int64 = 0): TArgs;
|
||||
|
||||
{ Пересобрать кусок в параметры проекта.
|
||||
|
||||
|
|
@ -655,7 +656,7 @@ function ArgsEncodeFragment(const ASrc, ADst: string; AStart, AEnd: Double;
|
|||
AFpsNum, AFpsDen: Integer;
|
||||
const AVideoCodec, APixFmt, AAudioCodec: string;
|
||||
ASampleRate, AChannels: Integer; const AFormat: string;
|
||||
AFrames: Integer; AWithAudio: Boolean): TArgs;
|
||||
AFrames: Integer; AWithAudio: Boolean; ABitrate: Int64): TArgs;
|
||||
var
|
||||
HalfFrame, StopAt: Double;
|
||||
begin
|
||||
|
|
@ -691,8 +692,13 @@ begin
|
|||
из того же файла, что и соседние куски, так что менять ему нечего.
|
||||
Хуже того: принудительная частота включает пересчёт кадров, и на
|
||||
пробе это добавило один лишний кадр на стыке — 601 вместо 600. }
|
||||
{ Битрейт обязателен. Без него кодировщик берёт своё умолчание, а у
|
||||
NVENC оно около двух мегабит: замерено в готовом ролике 5.7 Мбит/с в
|
||||
огрызке против 54-60 в скопированном материале рядом. Раньше это
|
||||
задевало редкие точные резы, а теперь точны все — и мутный огрызок
|
||||
появлялся на каждом. }
|
||||
Result := Concat(Result, MasterOutputArgs(0, 0, 0, 0,
|
||||
AVideoCodec, APixFmt, AAudioCodec, ASampleRate, AChannels));
|
||||
AVideoCodec, APixFmt, AAudioCodec, ASampleRate, AChannels, ABitrate));
|
||||
Result := Concat(Result, NoBFramesArgs);
|
||||
{ Столько кадров, сколько просили: огрызок стыкуется с копией кадр в
|
||||
кадр, и лишнему взяться неоткуда. }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue