Существуют MKV, в которых реальная длительность аудио дорожки отличается от длительности видео. Такие дорожки укладываются в MKV с корректировкой (масштабированием) временных меток.
Например: Был видеофайл со звуков и частотой 25 к/с, к нему добавили дорожку из видео с частотой 23,976. Чтобы все было хорошо, временные метки новой дорожки подкорректированы.
Примеры: sample.mkv (http://file.karelia.ru/fjzs6j/).
В текущих версиях MPC-BE такие файлы нормально воспроизводиться только, если подключить LAV Audio Decoder. Если использовать встроенный MpaDecFilter, то будут рывки.
[merge_posts_bbcode]Добавлено: 2018-04-30 12:47:04[/merge_posts_bbcode]
Предлагаю тестовый билд - https://yadi.sk/d/JH-cvVU23UwtTx, там сам .exe + патч(получилось немного некрасиво что в классе ffmpeg декодера используются переменные из самого фильтра, но так на самом деле удобнее чем дублировать переменные и придумывать как их передавать. Тем более что эти новые переменные пригодятся в дальнейшем).
Переделал обработку временных меток(за исключением SPDIF/HDMI Bitstream - руки еще не дошли). Взял за основу код из LAV Audio Decoder.
Пример воспроизводиться так же - с нарастающим рассинхроном.
Опцию корректировки включи в декодере :)
С включенной опцией нормально. Я думал опция больше не нужна.
Как так не нужна. Я просто избавился от резких рывков, так же корректно обрабатываются данные после парсера ffmpeg(более не нужно большое значение jitter для DTS)
[merge_posts_bbcode]Добавлено: 2018-04-30 16:07:18[/merge_posts_bbcode]
Седня-завтра доделаю для битстрима, ac3 энкодинга.
А в чем тогда смысл второго режима, который сейчас дает рассинхрон?
Чето попадалось такое, уже и не помню. Пришлось отключать корректировку. Да и что, лишним не будет.
[merge_posts_bbcode]Добавлено: 2018-04-30 18:42:21[/merge_posts_bbcode]
Окончательный вариант(сделал для битстрима и AC3 энкодинга).
https://yadi.sk/d/QctAJ4qQ3Uxmvz
Просто раньше встроенный аудиорендерер иначе работал, и отключение опции, скорее всего, под него и сделано было (https://sourceforge.net/p/mpcbe/code/2790/?page=2), чтобы звук не прерывался для некоторых файлов.
Сейчас в аудиорендерере свои часы, и он не пропускает и не добавляет сэмплы.
[merge_posts_bbcode]Добавлено: 2018-04-30 21:39:29[/merge_posts_bbcode]
По поводу файла sample.mkv и автопереключалки.
Для этого файла невозможно заранее выставить частоту дисплея. Раньше тоже нельзя было. Хоть usalex и пишет, что было лучше, но сам же признается, что звук постоянно заикался.
[merge_posts_bbcode]Добавлено: 2018-04-30 22:52:15[/merge_posts_bbcode]
Хотя такое можно разрулить на стороне аудиорендерера через ускорение-замедление (atempo), но нужен достоверный "детектор" таких случаев.
Можно будет подумать про ускорение/замедление.
Цитата: V0ltДля этого файла невозможно заранее выставить частоту дисплея
Почему это нельзя? Можно. Частота дисплея должна быть кратна частоте кадров видео. Это главное правило, необходимое для плавности картинки. А звук - это другая история. Он не на дисплей выводится и не надо на него ориентироваться при выставлении частоты дисплея.
[merge_posts_bbcode]Добавлено: 2018-05-01 05:10:38[/merge_posts_bbcode]
Цитата: V0ltХоть usalex и пишет, что было лучше, но сам же признается, что звук постоянно заикался.
Нет. Звук заикался не постоянно, а только тогда, когда я ему это разрешал (была опция выбора режима синхры).
А если какой-то фильм был более разговорного или музыкального жанра, где звук был важнее картинки, можно было поменять режим. Было лучше, потому, что был выбор.
Ну звук ВСЕГДА является "источником" времени вывода, картинки в том числе. Так работают все аудио-рендереры.
Но это никак не относиться к данной теме(тут про аудио-декодер).
Цитата: Aleksoid1978Ну звук ВСЕГДА является "источником" времени вывода, картинки в том числе. Так работают все аудио-рендереры.
Да, я знаю. Но эта схема нормально работает только там, где соблюдены стандарты при изготовлении клипа. А когда сталкиваемся с кривизной, нужен костыль. Был костыль в форме ручного выбора синхры. Но если тебе удастся побороть кривизну через правку декодера, будет супер. Хотя, я сильно сомневаюсь, что на кривизне, типа твоего клипа, возможно сделать плавными одновременно и картинку, и звук.
Плавность можно конечно сделать - для этого надо в аудио-рендерере немного разгонять/тормозить аудио-поток.
К сожалению, после переделки встроенного аудио декодера (временных меток), на некоторых видео файлах появился рассинхрон.
[merge_posts_bbcode]Добавлено: 2018-05-01 10:13:08[/merge_posts_bbcode]
И даже не на некоторых....
Да уж, эти переделки временных меток...
В общем так, после SVN r3574 появились следующие проблемы:
1. Рассинхрон
2. Джиттер, которого раньше и близко ни разу не было на некоторых видео файлах
3. Пропуски кадров во время воспроизведения, опять же из-за нарастающего джиттера, которого быть не должно на некоторых видео файлах.
Данное изменение в SVN, на текущий момент, - некорректное, нуждается в доработках и исправлениях, а также и в тщательном тестирование различных форматов видео файлов.
Ну так наверное надо выложить файлы на которых наблюдается рассинхрон, пропуски кадров и т.д.
Я проверял и на разных "тестовых" файлах, и на реальном просмотре(ну 5-10 минут - а несколько часов).
На самом деле переделывание было не из-за одного этого файла с первого поста.
Цитата: Aleksoid1978Ну так наверное надо выложить файлы на которых наблюдается рассинхрон, пропуски кадров и т.д.
Я проверял и на разных "тестовых" файлах, и на реальном просмотре(ну 5-10 минут - а несколько часов).
На самом деле переделывание было не из-за одного этого файла с первого поста.
Да, я в курсе, что вам нужны видео файлы, сейчас заливаю их.
Итак, начнем:
Проблема №1 - рассинхрон.
Evgeniy1990
Настройки декодера надеюсь сброшены?
Проблема №2 - джиттер на всех WMV (https://yadi.sk/d/A1D9bQTv3V5wr6)[merge_posts_bbcode]Добавлено: 2018-05-01 14:00:20[/merge_posts_bbcode]
Цитата: V0ltEvgeniy1990
Настройки декодера надеюсь сброшены?
Настройки по умолчанию в аудио декодере у меня стоят.
[merge_posts_bbcode]Добавлено: 2018-05-01 14:03:41[/merge_posts_bbcode]
Проблема № 3 - пропуски кадров, во время воспроизведения.
Особенно заметны пропуски кадров, при использовании LAV Splitter на Windows 10.
RealAudio исправил.
Asf(и похожие) исправил.
Цитата: Aleksoid1978RealAudio исправил.
Asf(и похожие) исправил.
Ок, буду проверять.
Проблема №4 - постоянный джиттер в AVIНа данном AVI-видео файле джиттер присутствует и должен быть только в начале, дальше его быть не должно.
Опять ситуация - наоборот, вместо частичного джиттера - постоянный.
Пофиг на джиттер, если файл воспроизводится нормально.
Если проблема воспроизводиться, только на встроенном рендерере, то скорее всего это проблема рендерера, а не декодера. Это в другую тему.
Цитата: V0ltПофиг на джиттер, если файл воспроизводится нормально.
Что значит - пофиг? Если он вместо одно места присутствия присутствует уже всегда - это уже ненормально, даже если визуально это незаметно.
Цитата: V0ltЕсли проблема воспроизводиться, только на встроенном рендерере, то скорее всего это проблема рендерера, а не декодера. Это в другую тему.
Перенес остальные проблемы в
тему переделанного встроенного "MPC Audio Renderer" (WASAPI Renderer).
[merge_posts_bbcode]Добавлено: 2018-05-02 08:53:40[/merge_posts_bbcode]
Цитата: Aleksoid1978RealAudio исправил.
Asf(и похожие) исправил.
Проверил поведение данных видео файлов в
SVN r3580.
1. Рассинхрона на RealAudio больше нет -
исправлено.
2. Постоянного джиттера на AVI больше не наблюдается -
исправлено.
3. Пропуски кадров во время воспроизведения на WMV (ASF) так и остались -
не исправлено.
Этот ASF + LAV Source - всегда играл криво, неважно с каким декодером. С системным фильтром все нормально с воспроизведением.
Поддержу. "Лечить" корявое воспроизведение WMV/ASF на сторонних сплиттерах себе дороже выйдет, тем более если на системном нормально играет.
Проблема №5 - рассинхрон, при ускоренном/замедленном воспроизведении на "OGG Vorbis Audio".
Присутствует только на нашем встроенном переделанном "MPC Audio Decoder".
Обратите внимание - при использовании внешнего стороннего аудио декодера "LAV Audio Decoder", рассинхрона на данном видео файле, при ускоренном/замедленном воспроизведении - нет.
Алгоритм воспроизведения:
1. Скачать этот видео файл (https://yadi.sk/d/v-xFCrfg3VrzCj)
2. Запустить его
3. Во время его воспроизведения увеличить скорость воспроизведения на 1.2х
В итоге произойдет рассинхрон.
Блин - не надо уже писать слово "переделанный". В любом случае ничего возвращаться не будет ))
[merge_posts_bbcode]Добавлено: 2018-05-14 19:39:38[/merge_posts_bbcode]
С этим OGG скорее проблема нашего Source фильтра. Ну не умеет он нормально такие видео перематывать. Поэтому после перемотки будет и затуп(либо рывик видео) и разрывы во времени аудио-пакетов.
А наш Audio Renderer не умеет при изменении скорость корректно обрабатывать разрывы во временных метках и вносить корректировки(как это делает при обычном воспроизведении).
Цитата: Aleksoid1978С этим OGG скорее проблема нашего Source фильтра. Ну не умеет он нормально такие видео перематывать. Поэтому после перемотки будет и затуп(либо рывик видео) и разрывы во времени аудио-пакетов.
А наш Audio Renderer не умеет при изменении скорость корректно обрабатывать разрывы во временных метках и вносить корректировки(как это делает при обычном воспроизведении).
Я проверил связку фильтров: "MPC Ogg Source" + "LAV Audio Decoder".
При использовании "LAV Audio Decoder", данный видео файл воспроизводится нормально, без рассинхрона, при ускоренном/замедленном воспроизведении.
А вот с нашим встроенным "MPC Audio Decoder" + "MPC Ogg Source", данный видео файл воспроизводится с рассинхроном, при ускоренном/замедленном воспроизведении.
Здесь проблема именно в "MPC Audio Decoder".
P.S. И потом, я не понял ваш ответ - причем тут затуп и рывки, если речь шла именно про рассинхрон, при ускоренном/замедленном воспроизведении?
Я проверил с нашим сплиттером и LAV Audio - так же при изменении скорости или даже после перемотки рассинхрон.
Цитата: Aleksoid1978Я проверил с нашим сплиттером и LAV Audio - так же при изменении скорости или даже после перемотки рассинхрон.
Совершенно верно. Я еще раз перепроверил у себя и действительно, все именно так, как вы сказали.
"MPC Ogg Source" + "MPC Audio Decoder" + "DirectSound Audio Renderer" -
рассинхрон"MPC Ogg Source" + "MPC Audio Decoder" + "MPC Audio Renderer" -
рассинхрон"MPC Ogg Source" + "LAV Audio Decoder" + "DirectSound Audio Renderer" -
рассинхрон"MPC Ogg Source" + "LAV Audio Decoder" + "MPC Audio Renderer" -
рассинхрон"LAV Splitter Source" + "MPC Audio Decoder" + "DirectSound Audio Renderer" -
нет рассинхрона"LAV Splitter Source" + "MPC Audio Decoder" + "MPC Audio Renderer" -
нет рассинхрона"LAV Splitter Source" + "LAV Audio Decoder" + "DirectSound Audio Renderer" -
нет рассинхрона"LAV Splitter Source" + "LAV Audio Decoder" + "MPC Audio Renderer" -
нет рассинхронаВывод: только при использовании "
LAV Splitter Source" на данном видео файле нет рассинхрона, при ускоренном/замедленном воспроизведении.
Действительно, проблема именно на стороне нашего фильтра-источника: "
MPC Ogg Source".
Жаль конечно, что он не умеет корректно работать с OGG/OGM-видео файлами, при ускоренном/замедленном воспроизведении.
[merge_posts_bbcode]Добавлено: 2018-05-15 04:51:41[/merge_posts_bbcode]
Aleksoid1978Тогда у меня к вам просьба - добавьте пожалуйста в список "Управление приоритетами" возможность выбора фильтров-источников для OGG/OGM, по аналогии со всеми остальными.
Да дело не в ускоренном воспроизведении - а в перемотке, наш встроенный OGG Source не все файлы умеет корректно перематывать, отсюда и проблема.