Убрана заглушка звука, из-за которой пропал звук вообще
Вчерашняя правка глушила звук, когда перебор дорожек не находил внешнюю. Задумывалось как защита: играть звук из картинки вместо отдельной дорожки монтажа нельзя. Вышло наоборот — звука не стало нигде. Перебор может не сработать по причинам, до которых из программы не дознаться, а mpv и сам предпочитает внешний список, когда тот открылся. Поэтому выбор оставлен ему, а в журнал пишется, что произошло: если звук окажется не тот, будет с чего начинать. Проверено на точном списке кусков, который строит предпросмотр: картинка 2..8 с, звук сдвинут на 4..10 с. Воспроизведение дало тишину до четвёртой секунды и тон после — ровно то, что на монтаже.
This commit is contained in:
parent
cf20a0164e
commit
d0dc22630e
2 changed files with 28 additions and 3 deletions
|
|
@ -80,6 +80,7 @@ type
|
|||
FLastLoadedEdl: string;
|
||||
FLastLoadedAudioEdl: string;
|
||||
FLastHwdec: string;
|
||||
FLastAudioNote: string;
|
||||
FLogFilePath: string;
|
||||
FLogFileStarted: Boolean;
|
||||
FLogFileBroken: Boolean;
|
||||
|
|
@ -2018,6 +2019,15 @@ begin
|
|||
end
|
||||
else
|
||||
Log('Декодирование видео: ' + Hw);
|
||||
|
||||
{ Откуда взялся звук. Строка меняется редко, поэтому пишется только при
|
||||
изменении — иначе журнал забился бы повторами. }
|
||||
if FPlayer.AudioTrackNote <> FLastAudioNote then
|
||||
begin
|
||||
FLastAudioNote := FPlayer.AudioTrackNote;
|
||||
if FLastAudioNote <> '' then
|
||||
Log(FLastAudioNote);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainForm.PlayerPauseChange(Sender: TObject);
|
||||
|
|
|
|||
|
|
@ -58,6 +58,9 @@ type
|
|||
FVideoFilter: string;
|
||||
FHwdec: string;
|
||||
FAudioSource: string;
|
||||
{ Что произошло с выбором звуковой дорожки. Читается окном для
|
||||
журнала: без этого понять, откуда взялся звук, нечем. }
|
||||
FAudioTrackNote: string;
|
||||
{ Работаем ли под Wine. Там свои правила вывода картинки, и узнать об
|
||||
этом надо до создания плеера. }
|
||||
FUnderWine: Boolean;
|
||||
|
|
@ -163,6 +166,7 @@ type
|
|||
property HasTimePos: Boolean read FHasTimePos;
|
||||
property Initialized: Boolean read FInitialized;
|
||||
property UnderWine: Boolean read FUnderWine;
|
||||
property AudioTrackNote: string read FAudioTrackNote;
|
||||
property TimePos: Double read FTimePos;
|
||||
property Duration: Double read FDuration;
|
||||
property Paused: Boolean read FPaused;
|
||||
|
|
@ -767,13 +771,24 @@ begin
|
|||
Continue;
|
||||
Id := GetPropString(Format('track-list/%d/id', [I]));
|
||||
if Id <> '' then
|
||||
begin
|
||||
mpv_set_property_string(FHandle, 'aid', PAnsiChar(Id));
|
||||
FAudioTrackNote := 'Звук: отдельная дорожка монтажа (' + Id + ').';
|
||||
end;
|
||||
Exit;
|
||||
end;
|
||||
|
||||
{ Внешней дорожки не нашлось — значит наш список кусков не открылся.
|
||||
Играть вместо него звук из картинки нельзя: на монтаже его там нет. }
|
||||
mpv_set_property_string(FHandle, 'aid', 'no');
|
||||
{ Внешней дорожки не нашлось.
|
||||
|
||||
Глушить звук здесь нельзя, и это проверено дорого: такая попытка
|
||||
привела к тому, что звука не стало вовсе. Перебор дорожек может не
|
||||
сработать по причинам, до которых отсюда не дознаться, а mpv и сам
|
||||
предпочитает внешний список, когда тот открылся.
|
||||
|
||||
Поэтому оставляем выбор ему, но записываем в журнал: если звук вдруг
|
||||
окажется не тот, будет с чего начинать. }
|
||||
FAudioTrackNote := 'Звук: внешняя дорожка не найдена среди ' +
|
||||
IntToStr(Count) + ', выбор оставлен плееру.';
|
||||
end;
|
||||
|
||||
procedure TMpvPlayer.HandleLogMessage(AMsg: Pmpv_event_log_message);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue