Представляю на обозрение минимальный видеоплеер, написанный на C# с использованием DirectShow. В качестве видео-/аудио-кодеков используется LAV filters, который надо скачать и установить отдельно.
Отличия от других плееров:
Абсолютный минимализм. Почти никаких дополнительных функций и настроек.
Возможность выбора режима построения Графа DirectShow: Автоматический / Интеллектуальный / Ручной.
Не требует установки и ничего не меняет в реестре.
Прикольно. А на Media Foundation это же сможете реализовать?? А то DS вроде как считается уже древней технологией снятой с поддержки и нерекомендуемой к использованию в новых реализациях.
Выбор файла слишком уж минималистичный, как догадаться, что нужно драгндропать )
Надо тогда хоть написать на изначальном черном экране.
И добавить в меню. Ну и раз минимализм, то и через консольный параметр (minplayer video.mp4).
Чтобы понять о чем вообще этот код ошибки надо смотреть исходники + он встречается в нескольких местах.
Вот поэтому и лучше кидать исключения с норм описанием.
Это всего лишь тестовая версия, демонстрирующая концепт. Объяснять значения кодов ошибок и не планировалось. Эту версию я и релизить не хотел. Я хотел exeшник залить в папку с исходниками (как у некоторых на гитхабе сделано). Но оказалось, что в уже залитую папку можно добавлять только текстовые файлы (ну или я не нашел как). По-этому, пришлось релизнуть.
Я сейчас пишу полную версию. Там, кроме прочего, будут выдаваться понятные ошибки, вместо кодов.
Я не знаю, что такое Media Foundation. Надеюсь, что можно.
Если вы это в вайне делаете, то естественно, что правильная работа виндовых плееров там не гарантирована. Однако, старую Delphi-версию этого плеера в вайне мне удавалось запустить.
Попробуйте поменять режим в меню. После смены режима, текущий файл автоматически перезапускается. И вместо mp4 попробуйте подсунуть ему avi.
Повторюсь, это только тестовая версия.
System.ArgumentOutOfRangeException: Ticks must be between DateTime.MinValue.Ticks and DateTime.MaxValue.Ticks.
Parameter name: ticks
at System.DateTime..ctor(Int64 ticks)
at Minimal_video_player.Form1.seekBar_Paint(Object sender, PaintEventArgs e)
at System.Windows.Forms.Control.OnPaint(PaintEventArgs e)
at System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer)
at System.Windows.Forms.Control.WmPaint(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Автоматический режим пригоден только для простых форматов: avi, wmv (возможно, что-то еще). Если вы в автоматическом режиме попытаетесь открыть, например, mp4 с форматом avc внутри, то либо сразу получите ошибку, либо лютый треш вместо картинки. Вы какой тип файла открыли?
на последнем кадре трека? В автоматическом режиме?