Загрузка mp4 из ресурсов

Maksim

Легендарный
Местный
Знаток Lineage2
Любитель реакций
Неукротимое пламя
Старожил I степени
Сообщения
982
Розыгрыши
0
Решения
6
Репутация
596
Реакции
844
Баллы
1 708
Интересует как можно сделать реализацию в C# проигрывания mp4 видео через Nuget либу WMPLib с Windows Form без сохранения на диск?
Есть какой то вариант без BoxedApp и других VM проигрывания на Windows Form?
Может есть какой то вариант загрузить в память и проиграть из неё, а после закрытия приложения выгрузить?

П.С: да есть wpf где проигрывание из ресурсов напрямую, но лучше на windows form. :pandaredlol:
 

Может есть какой то вариант загрузить в память и проиграть из неё, а после закрытия приложения выгрузить?
я конечно может не понял конечную цель, из поста не совсем понятно что ты делаешь, но если тебе надо просто видео проиграть, то почему бы не встроить его с ютуб? формы это умеют
 
я конечно может не понял конечную цель, из поста не совсем понятно что ты делаешь, но если тебе надо просто видео проиграть, то почему бы не встроить его с ютуб? формы это умеют
Не хотелось бы использовать внешние проигрыватели.
Цель на заднем фоне Windows Form проигрывать видео с логотипом используя WMPLib из Nuget.
Если сохранить на диск из ресурсов все работает, но файл только мешает.
Можно конечно сохранять его в temp папку, но хотелось бы из памяти напрямую прочитать.
Просто искал все возможные варианты, но нет толком информации по этому вопросу.
 
Просто искал все возможные варианты, но нет толком информации по этому вопросу.
создай на цуберфоруме подобный тред
наш форум конечно вне конкуренции, но там обитает большая куча бородатых программистов и девелоперов, вероятность получить ответ на верно заданный вопрос - 95%
 
Интересует как можно сделать реализацию в C# проигрывания mp4 видео через Nuget либу WMPLib с Windows Form без сохранения на диск?

WinForms уже давно объявлены легаси и устарели. WPF на самом деле простой, стоит только перешагнуть через понимание MVVM и окажется, что даже проще разрабатывать, чем на винформах, к тому же есть .
Да и вообще уже развивается WinUI 3, которая всё унифицируется и дальше. Немного инфографики по этому поводу, к тому же WPF так же уже устарел как и UWP, хотя WPF самый популярный, поэтому просто берём avalonia.
1624288146038.png
Хотя они объявлены и легаси но оптимизацию свою они получили .
Но зачем на устаревшем делать?
 
WinForms уже давно объявлены легаси и устарели. WPF на самом деле простой, стоит только перешагнуть через понимание MVVM и окажется, что даже проще разрабатывать, чем на винформах, к тому же есть .
Да и вообще уже развивается WinUI 3, которая всё унифицируется и дальше. Немного инфографики по этому поводу, к тому же WPF так же уже устарел как и UWP, хотя WPF самый популярный, поэтому просто берём avalonia.
Посмотреть вложение 37489
Хотя они объявлены и легаси но оптимизацию свою они получили .
Но зачем на устаревшем делать?
Есть свои причины делать не на wpf, потому что приложение на net framework 2.0 :)
Просто у большинства из коробки уже стоит net framework 2.0, выше возможно не у всех установлено.
Как будет времени больше, сделаю на С++ с GDI, но пока что C#.
 
Есть свои причины делать не на wpf, потому что приложение на net framework 2.0 :)
Не вижу причин морально устаревшее. А делать на 2.0 это значит поддерживать хрюшу, но нет 3 спокойно поддерживает как и соответственно WPF.
Просто у большинства из коробки уже стоит net framework 2.0, выше возможно не у всех установлено.
Ну давайте тогда писать под Win98? Не ну а что у многих он стоит ещё. Не вижу проблем сделать информацию и перекидывание в случае чего на сайт майков и выкачать оттуда.
Как будет времени больше, сделаю на С++ с GDI, но пока что C#.
Какая разница? И если так то может сразу на фортране он то точно у всех будет? А может сразу на ассемблере? Вот тут то 100% не прогадать. И чем это будет отличаться от шарпового приложения? Тогда уж с QT делать.
 
Не вижу причин морально устаревшее. А делать на 2.0 это значит поддерживать хрюшу, но нет 3 спокойно поддерживает как и соответственно WPF.

Ну давайте тогда писать под Win98? Не ну а что у многих он стоит ещё. Не вижу проблем сделать информацию и перекидывание в случае чего на сайт майков и выкачать оттуда.

Какая разница? И если так то может сразу на фортране он то точно у всех будет? А может сразу на ассемблере? Вот тут то 100% не прогадать. И чем это будет отличаться от шарпового приложения? Тогда уж с QT делать.
Каждый делает на чем хочет, главное чтобы функцию свою выполнял апдейтер / лаунчер.
Можно хоть на golang сделать при желании, но главная проблема сделать проигрывание из памяти mp4 без сохранения на диск из ресурсов.
 
Maksim, а такой вот вариант?)

создаем на сайте файл video.html
HTML:
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <style>
            video {
                width: 100%;
                height: auto;
            }
        </style>
    </head>
    <body>
        <video autoplay loop>
            <source src="https://domain.ru/uploads/videos/intro.mp4" type="video/mp4">
            <source src="https://domain.ru/uploads/videos/intro.ogv" type="video/ogg">
            <source src="https://domain.ru/uploads/videos/intro.webm" type="video/webm">
            <object data="https://domain.ru/uploads/videos/intro.swf" type="application/x-shockwave-flash">
                <param name="movie" value="https://domain.ru/uploads/videos/intro.swf">
            </object>
            Your browser doesn't support HTML5 video tag.
            Если видео не поддерживается, наверно сможем показать тут картинку)
        </video>
    </body>
</html>

при загрузки формы (webBrowser1 экземпляр System.Windows.Forms.WebBrowser)
C#:
        void MainFormLoad(object sender, EventArgs e)
        {
            webBrowser1.Url = new Uri("https://domain.ru/video.html");
        }

С# 3.0
.NET Framework 2.0

результат
1624296355979.png
 
Вариант с браузером хороший, но буду искать решение чтобы и на windows form можно было проиграть видео из ресурсов без сохранения на диск.
В крайнем случае если не найду решение, сделаю пусть уже на диск сохраняет в temp папку и удаляет при закрытии лаунчера. :Coffee:
В будущем сделаю уже не на C#.
 
Эм, ну так сделай через ресурс, как и хотел.

На VS 2019 вот так:
1. Открываем свойства проекта (ПКМ на проекте в Solution Explorer -> Properties).
2. Переходим на табку Resources.
3. Если файла ресурсов еще нет - там будет гиперлинк с текстом аля "У тебя нет ресурсов, давай создадим, а". Кликаем на него - в итоге создается Resources.resx.
4. В появившемся компоненте нажимаем Add Resource -> Add Existing File..., выбираем файл и переименовываем ресурс, чтобы название сгенерированной переменной, выделенной под этот ресурс, было по стайл гайду.
5. В коде стучимся напрямую к классу Resources - каждый ресурс в нем будет обявлен как internal static. К примеру, я назвал файл DotaAllstarsMapContent (даже не спрашивай, первый файл, который попался под руку :D) - стучусь к нему как Resources.DotaAllstarsMapContent.

Похожим образом делается и на плюсах, только там винапиха юзается (еще бы).
 
Эм, ну так сделай через ресурс, как и хотел.

На VS 2019 вот так:
1. Открываем свойства проекта (ПКМ на проекте в Solution Explorer -> Properties).
2. Переходим на табку Resources.
3. Если файла ресурсов еще нет - там будет гиперлинк с текстом аля "У тебя нет ресурсов, давай создадим, а". Кликаем на него - в итоге создается Resources.resx.
4. В появившемся компоненте нажимаем Add Resource -> Add Existing File..., выбираем файл и переименовываем ресурс, чтобы название сгенерированной переменной, выделенной под этот ресурс, было по стайл гайду.
5. В коде стучимся напрямую к классу Resources - каждый ресурс в нем будет обявлен как internal static. К примеру, я назвал файл DotaAllstarsMapContent (даже не спрашивай, первый файл, который попался под руку :D) - стучусь к нему как Resources.DotaAllstarsMapContent.

Похожим образом делается и на плюсах, только там винапиха юзается (еще бы).
Это я знаю, но это не работает с видео файлами.
В моем случае WMPLib и mp4
 
Ну WMPLib-ой это точно не сделать. Если нужно делать под систему, на которой 2-ой фреймворк - это максимум, что можно выжать, то просто лучше писать уже сразу на плюсах, так как в любом случае от нативной либки, поддерживающей mp4 тут не обойтись. Как говорится: если долбиться в жопу, то уже сразу по жесткому.
 
Ну WMPLib-ой это точно не сделать. Если нужно делать под систему, на которой 2-ой фреймворк - это максимум, что можно выжать, то просто лучше писать уже сразу на плюсах, так как в любом случае от нативной либки, поддерживающей mp4 тут не обойтись. Как говорится: если долбиться в жопу, то уже сразу по жесткому.
В общем сделаю пока что копированием mp4 на диск, потом будет времени больше сделаю на С++.
Другой вариант использовать VM и все собрать в 1, но с этим могут быть ложные срабатывания антивирусов как в случае с темидой.
Чтобы лишнее в приложении не таскать за собой так как WMPLib без исходников, закинул все через ILMerge.
 
Назад
Сверху Снизу