Воспроизведение пустых данных, после выхода из режима "Пауза"

Автор Evgeniy1990, 02 июня 2016, 00:24:32

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Evgeniy1990

Тема: Воспроизведение пустых данных, после выхода из режима "Пауза"

Краткое описание проблемы:

Если ровно за 1 секунду до окончания воспроизведения видео файлов, содержащих в конце пустые данные, поставить их воспроизведение на паузу, то после возобновления воспроизведения, вместо их остановки, перемотки на начало, или же перехода на следующий файл в папке, в зависимости от определенных опций, воспроизведение продолжиться дальше в тот интервал, в котором как раз и находятся пустые данные до самого конца, после чего, такие видео файлы просто остановятся в конце воспроизведения с кнопкой "Воспроизведение" в состоянии "воспроизведения", вместо того, чтобы перемотаться на начало, просто остановиться с кнопкой воспроизведения в состоянии "паузы", или же перейти на следующий файл в папке, в зависимости от определенных опций, установленных пользователем.  

Алгоритм воспроизведения:

1. Скачать и запустить этот видео файл: https://yadi.sk/i/3Uhh1zCxsBvHM
2. Перемотать его почти в самый конец, при этом, необходимо приготовится поставить его на паузу на отметке времени: 00:24:10, где заканчиваются полные данные
3. Установить паузу на отметке времени: 00:24:10
4. Подождать 5 секунд
5. Возобновить процесс воспроизведения (нажать на кнопку "Воспроизведение", или на клавишу "Пробел")

Фактический результат: после выполнения данного алгоритма, будут воспроизводится пустые данные, входящие в интервал [00:24:11->00:24:38]. В конце воспроизведения плеер просто будет стоять в режиме "воспроизведения".
Ожидаемый результат: после выполнения данного алгоритма, воспроизведение должно было остановиться, перемотаться на начало, или же должен был просто выполниться переход на следующий файл в каталоге (папке), в зависимости от определенных соответствующих опций, установленных пользователем.

Небольшое пояснение:

Суть бага в том, что после возобновления воспроизведения, сам процесс воспроизведения продолжается в тот интервал, в котором находятся пустые данные вместо того, чтобы выполнить определенные действия в зависимости от определенных опций, установленных пользователем, например: "Перемотать на начало", "Перейти к след. в каталоге" и т.д.
Motherboards: ASUS P5Q/GIGABYTE EP35C-DS3R, CPU: Core 2 Duo E8300/E8400, Memory: DDR2/DDR3, Video: MSI GTX 465/ASUS EAH5770/GTX 650 Ti, Audio: ASUS Xonar DG 5.1/Creative SB 5.1. VX/X-Fi Xtreme Gamer.

Aleksoid1978

Да - есть такое. И тут не все просто. Сравнить с LAV Source не получиться, т.к. он всегда выдает длительность по видео-данным - т.е. 00:24:10. Выставляем нужную опцию во встроенном сплиттере - и все будет ок.

Почему такое происходит - тут ограничение самого DirectShow. Как определяется окончание проигрывания - аудио/видео пин шлет сигнал об окончании данных - который служит признаком конца воспроизведения. В данном случае после 00:24:10 есть только субтитры - сигнала EOF просто не приходит, он от кого - т.к. аудио/видео пины даже не начали работу(не поступало ни одного пакета данных).
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

Evgeniy1990

Цитата: Aleksoid1978Да - есть такое. И тут не все просто. Сравнить с LAV Source не получиться, т.к. он всегда выдает длительность по видео-данным - т.е. 00:24:10. Выставляем нужную опцию во встроенном сплиттере - и все будет ок.

Почему такое происходит - тут ограничение самого DirectShow. Как определяется окончание проигрывания - аудио/видео пин шлет сигнал об окончании данных - который служит признаком конца воспроизведения. В данном случае после 00:24:10 есть только субтитры - сигнала EOF просто не приходит, он от кого - т.к. аудио/видео пины даже не начали работу(не поступало ни одного пакета данных).
Спасибо вам за ответ - теперь мне понятно, что это ограничение самого DirectShow.

В общем, я запомнил, что для таких случаев лучше всего включать опцию "Рассчитывать длительность на основе видеоданных" в нашем встроенном "MPC Matroska Source/Splitter".

С "LAV Splitter Source" итак было уже понятно, что он всегда рассчитывает длительность из видео потока.
Motherboards: ASUS P5Q/GIGABYTE EP35C-DS3R, CPU: Core 2 Duo E8300/E8400, Memory: DDR2/DDR3, Video: MSI GTX 465/ASUS EAH5770/GTX 650 Ti, Audio: ASUS Xonar DG 5.1/Creative SB 5.1. VX/X-Fi Xtreme Gamer.

Aleksoid1978

AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

Evgeniy1990

Цитата: Aleksoid1978Но ... вот пробуем https://yadi.sk/d/aXKHNfZ_sCEH9
Проверил тестовый билд.

Теперь, после возобновления воспроизведения, происходят различные ситуации, в зависимости от опций, установленных пользователями, например "Перемотать на начало" - перемотка на начало, "Перейти к след. файлу в каталоге" - автоматический переход на следующий файл в папке и т.д.

После возобновления процесса воспроизведения, больше нет воспроизведения в пустой интервал времени, содержащий пустые данные.

Браво! Вам удалось полностью исправить эту проблему! :)
[merge_posts_bbcode]Добавлено: 2016-06-06 05:33:02[/merge_posts_bbcode]

Вы будете добавлять ваше исправление в SVN?
Motherboards: ASUS P5Q/GIGABYTE EP35C-DS3R, CPU: Core 2 Duo E8300/E8400, Memory: DDR2/DDR3, Video: MSI GTX 465/ASUS EAH5770/GTX 650 Ti, Audio: ASUS Xonar DG 5.1/Creative SB 5.1. VX/X-Fi Xtreme Gamer.

Aleksoid1978

Нет не буду. Не хочу делать костыли - тем более что это бывает очень не часто. Может со временем что придумается нормальное - тогда да.
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

Evgeniy1990

Цитата: Aleksoid1978Нет не буду. Не хочу делать костыли - тем более что это бывает очень не часто. Может со временем что придумается нормальное - тогда да.
Ясно, спасибо за ответ, я, кстати, также заметил, что далеко не на всех видео файлах, с пустыми данными, наблюдается данная проблема, когда воспроизведение, после снятия с паузы, продолжается в эти самые пустые данные.

Например, вот на этих видео файлах http://rutracker.org/forum/viewtopic.php?t=1106156 такой проблемы вообще не наблюдается, т.е. при выходе из режима "Пауза", сразу же происходит определенное действие в зависимости от настроек, установленных пользователем, например, "перемотка на начало", или же просто автоматический переход на следующую серию.

P.S. Очень удачный аниме-сериал в том плане, что в нем, практически в каждом видео файле, в каждой серии, присутствуют эти самые пустые данные. Т.е., например, одна серия имеет удвоенную общую длительность (продолжительность), например вместо 24 минут - 47 минут (например, серия 02) и т.д. Но также есть и случаи где имеется небольшой интервал с пустыми данными в самом конце воспроизведения (например, серия 03).

Все это говорит о том, что эти пустые данные, как правило, на практике, можно встретить именно в различных так называемых "DVDRip-ах".
Motherboards: ASUS P5Q/GIGABYTE EP35C-DS3R, CPU: Core 2 Duo E8300/E8400, Memory: DDR2/DDR3, Video: MSI GTX 465/ASUS EAH5770/GTX 650 Ti, Audio: ASUS Xonar DG 5.1/Creative SB 5.1. VX/X-Fi Xtreme Gamer.