это не по теме вопроса, Вы где то выкладывали такое задание какому то маслёнку вроде меня:
"А практика - дело простое, напишите мне программу, которая будет брать кучу видосов из папки, проигрывать мне их последовательно с возможностью быстрого переключения по плейлисту и по нажатию кнопки (не важно, на клавиатуре или форме) копировать текущий видос в заранее выбранный каталог."
Впринципе всё что описано Выше прогу делать научил, единственное возникла проблема когда я захотел синхронизировать слайдер, который если говорить простыми словами должен отвечать за то сколько секунд прошло с момента начала видео и видеоконтрол который уже изначально был доступен в основных элементах
Т.е прошла секунда - слайдер переместился на секунду, отмотал пользователь видео на 5 сек назад - слайдер прошёл назад на 5 ед и т.п
Георгий Кузнецов, хорошо. Предположим, слайдер имеет значения счётчика от 1 до 100, тогда я бы взял длину видео, поделил на 100 и получил бы, таким образом, количество секунд, которые должны пройти, чтобы счётчик слайдера переместился на 1 пункт. Пусть это значение будет X. Затем я бы отслеживал текущее положение видео в секундах, делил бы на X и это было бы текущим значением положения слайдера. То есть событие, инициирующее сдвиг слайдера - это каждая секунда проигрывания видео.
Рональд Макдональд, в этом вся проблема, походу не существует такого обработчика событий, которой бы каким то образом регистрировал прошла ли секунда проигрывания видео или же видео откатили на 5 сек назад
Иначе я бы уже давно нашёл подобное и включил в программу
p.s. есть подозрение что такую возможность нам не дали потому что либо безопасность, либо производительность пострадает
Рональд Макдональд, если мы попытаемся в каком нибудь условном лоадере запустить поток который бы напрямую изменял положение слайдера по полученной секунде видео - нам будет выбрасывать исключение по которому слайдер будет занят основным потоком
Потому что MVVM ))) Вроде как model не может влиять на view, на view может влиять согласно этому паттерну только view-model (обработчики событий и тому подобное)
Рональд Макдональд, я кстати вроде бы нашёл нужный обработчик Storyboard.CurrentTimeInvalidated
Попробую на его основе дописать прогу когда свободен буду
Рональд Макдональд, плеер готов
Просто мне надо было внимательнее читать доки по событиям, тогда сразу увидел бы банальное и очевидное решение подписаться на событие а-ля dispatcher timer
Георгий Кузнецов, ну что ж, посмотрел.
Дизайн - моё почтение (:
Логика работы с каталогами - вообще огонь.
Но вроде работает. В принципе, неплохо, тем более, так быстро и для проекта "на коленке" если хотите, дам пачку советов, как сделать программу реально крутой и будет не стыдно показать в качестве пет-проекта.
В боевых условиях потестирую сегодня тоже к вечеру.
Георгий Кузнецов, ну, в общем, всплыла пара проблем:
1. Не открывает webm;
2. Автовоспроизведение нужно, как воздух.
Есть небольшой пример моей программы для картинок, можете ориентироваться на неё:
Как видим, там есть настраиваемые каталоги для копирования в определённую папку, есть нормальное растягивание, есть даже save/load.
Если у вас ещё и автоскейл будет в зависимости от размера видео, будет совсем круто.
Рональд Макдональд, вроде понятно всё, кроме панели слева, что делает и т.п.
Там где изображения директорий
Ну и конечно я не нашёл в WPF и половины того что здесь есть
BTW: вроде как webm сишарповский ME не открывает, хотя хрен его знает, это можно узнать лишь посмотрев что открывает просмотрщик
+BTW: я боролся с автовоспроизведением просто всеми доступными методами, походу зря )) (под термином "автовоспроизведение я понял чтобы при переключении, следующее видео начало проигрываться автоматически")
Рональд Макдональд, например в WPF скорее всего нет того элемента который внизу разделяет метки масштаб/x1.0/слайдер управляющий масштабом и т.п
Но без него можно спокойно обойтись, разве что дизайн не будет таким олдскульным (на дизайн забиваем - ставим идею превыше всего)
А то что отстутствуют всплывающие элементы "программа" "изображение" и т.п - реально малость обидно ))
Георгий Кузнецов, да нет, штука для растягивания должна быть, это точно.
Автовоспроизведение - это пушка, это надо (:
Не совсем понял про всплывающие элементы.
У меня написано на Qt, не смогу быстро сориентировать по C#, но то, что там можно реализовать полностью то же самое - это точно.
Первое, что я бы сделал на вашем месте - прикрутил масштабируемый интерфейс (пусть с фиксированным размером окна просмотра даже), прикрутил бы выбор каталогов и хотя бы базовое сохранение настроек (пути к каталогам).
Рональд Макдональд, что то вспомнил тут про Вашу задачу и у меня появился вопрос: а зачем вообще масштабировать видеоролик? Это же не имеет никакого смысла