ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Загрузка mp4 из ресурсов (https://forum.antichat.xyz/showthread.php?t=780928)

Maksim 21.06.2021 09:49

Интересует как можно сделать реализацию в C# проигрывания mp4 видео через Nuget либу WMPLib с Windows Form без сохранения на диск?

Есть какой то вариант без BoxedApp и других VM проигрывания на Windows Form?

Может есть какой то вариант загрузить в память и проиграть из неё, а после закрытия приложения выгрузить?

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

default_npc 21.06.2021 10:05

Цитата:

Сообщение от Maksim

Может есть какой то вариант загрузить в память и проиграть из неё, а после закрытия приложения выгрузить?

я конечно может не понял конечную цель, из поста не совсем понятно что ты делаешь, но если тебе надо просто видео проиграть, то почему бы не встроить его с ютуб? формы это умеют

Maksim 21.06.2021 10:08

Цитата:

Сообщение от default_npc

я конечно может не понял конечную цель, из поста не совсем понятно что ты делаешь, но если тебе надо просто видео проиграть, то почему бы не встроить его с ютуб? формы это умеют

Не хотелось бы использовать внешние проигрыватели.

Цель на заднем фоне Windows Form проигрывать видео с логотипом используя WMPLib из Nuget.

Если сохранить на диск из ресурсов все работает, но файл только мешает.

Можно конечно сохранять его в temp папку, но хотелось бы из памяти напрямую прочитать.

Просто искал все возможные варианты, но нет толком информации по этому вопросу.

default_npc 21.06.2021 10:35

Цитата:

Сообщение от Maksim

Просто искал все возможные варианты, но нет толком информации по этому вопросу.

создай на цуберфоруме подобный тред

наш форум конечно вне конкуренции, но там обитает большая куча бородатых программистов и девелоперов, вероятность получить ответ на верно заданный вопрос - 95%

kick 21.06.2021 19:30

Цитата:

Сообщение от Maksim

Интересует как можно сделать реализацию в C# проигрывания mp4 видео через Nuget либу WMPLib с Windows Form без сохранения на диск?

How to: Embed Windows Media Player on a Form

docs.microsoft.com


WinForms уже давно объявлены легаси и устарели. WPF на самом деле простой, стоит только перешагнуть через понимание MVVM и окажется, что даже проще разрабатывать, чем на винформах, к тому же есть Avalonia.

Да и вообще уже развивается WinUI 3, которая всё унифицируется и дальше. Немного инфографики по этому поводу, к тому же WPF так же уже устарел как и UWP, хотя WPF самый популярный, поэтому просто берём avalonia.

Хотя они объявлены и легаси но оптимизацию свою они получили What's new in Windows Forms runtime in .NET 5.0.

Но зачем на устаревшем делать?

Maksim 21.06.2021 19:34

Цитата:

Сообщение от kick

How to: Embed Windows Media Player on a Form

docs.microsoft.com


WinForms уже давно объявлены легаси и устарели. WPF на самом деле простой, стоит только перешагнуть через понимание MVVM и окажется, что даже проще разрабатывать, чем на винформах, к тому же есть Avalonia.
Да и вообще уже развивается WinUI 3, которая всё унифицируется и дальше. Немного инфографики по этому поводу, к тому же WPF так же уже устарел как и UWP, хотя WPF самый популярный, поэтому просто берём avalonia.

Хотя они объявлены и легаси но оптимизацию свою они получили What's new in Windows Forms runtime in .NET 5.0.
Но зачем на устаревшем делать?

Есть свои причины делать не на wpf, потому что приложение на net framework 2.0

Просто у большинства из коробки уже стоит net framework 2.0, выше возможно не у всех установлено.

Как будет времени больше, сделаю на С++ с GDI, но пока что C#.

kick 21.06.2021 19:56

Цитата:

Сообщение от Maksim

Есть свои причины делать не на wpf, потому что приложение на net framework 2.0

Не вижу причин морально устаревшее. А делать на 2.0 это значит поддерживать хрюшу, но нет 3 спокойно поддерживает как и соответственно WPF.

Цитата:

Сообщение от Maksim

Просто у большинства из коробки уже стоит net framework 2.0, выше возможно не у всех установлено.

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

Цитата:

Сообщение от Maksim

Как будет времени больше, сделаю на С++ с GDI, но пока что C#.

Какая разница? И если так то может сразу на фортране он то точно у всех будет? А может сразу на ассемблере? Вот тут то 100% не прогадать. И чем это будет отличаться от шарпового приложения? Тогда уж с QT делать.

Maksim 21.06.2021 19:58

Цитата:

Сообщение от kick

Не вижу причин морально устаревшее. А делать на 2.0 это значит поддерживать хрюшу, но нет 3 спокойно поддерживает как и соответственно WPF.

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

Какая разница? И если так то может сразу на фортране он то точно у всех будет? А может сразу на ассемблере? Вот тут то 100% не прогадать. И чем это будет отличаться от шарпового приложения? Тогда уж с QT делать.

Каждый делает на чем хочет, главное чтобы функцию свою выполнял апдейтер / лаунчер.

Можно хоть на golang сделать при желании, но главная проблема сделать проигрывание из памяти mp4 без сохранения на диск из ресурсов.

òbiòbi верифицированный пользователь. 21.06.2021 21:39

@Maksim, а такой вот вариант?)

создаем на сайте файл video.html

HTML:


Код:


video {
                width: 100%;
                height: auto;
            }

Your browser doesn't support HTML5 video tag.
            Если видео не поддерживается, наверно сможем показать тут картинку)

при загрузки формы (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

результат

Maksim 21.06.2021 21:43

Вариант с браузером хороший, но буду искать решение чтобы и на windows form можно было проиграть видео из ресурсов без сохранения на диск.

В крайнем случае если не найду решение, сделаю пусть уже на диск сохраняет в temp папку и удаляет при закрытии лаунчера.

В будущем сделаю уже не на C#.

Mizuwokiru 21.06.2021 23:51

Эм, ну так сделай через ресурс, как и хотел.

На VS 2019 вот так:

1. Открываем свойства проекта (ПКМ на проекте в Solution Explorer -> Properties).

2. Переходим на табку Resources.

3. Если файла ресурсов еще нет - там будет гиперлинк с текстом аля "У тебя нет ресурсов, давай создадим, а". Кликаем на него - в итоге создается Resources.resx.

4. В появившемся компоненте нажимаем Add Resource -> Add Existing File..., выбираем файл и переименовываем ресурс, чтобы название сгенерированной переменной, выделенной под этот ресурс, было по стайл гайду.

5. В коде стучимся напрямую к классу Resources - каждый ресурс в нем будет обявлен как internal static. К примеру, я назвал файл DotaAllstarsMapContent (даже не спрашивай, первый файл, который попался под руку ) - стучусь к нему как Resources.DotaAllstarsMapContent.

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

How to load text file from Resources in VC++?

I'm writing a DLL in VC++ and I need to use external text file. I have something like this right now: ifstream file; string line; file.open("C:\\Users\\Me\\Desktop\\textfile.txt"); getline(file,

stackoverflow.com

Maksim 21.06.2021 23:56

Цитата:

Сообщение от Mizuwokiru

Эм, ну так сделай через ресурс, как и хотел.

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

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

How to load text file from Resources in VC++?

I'm writing a DLL in VC++ and I need to use external text file. I have something like this right now: ifstream file; string line; file.open("C:\\Users\\Me\\Desktop\\textfile.txt"); getline(file,

stackoverflow.com


Это я знаю, но это не работает с видео файлами.

В моем случае WMPLib и mp4

Mizuwokiru 22.06.2021 01:05

Ну WMPLib-ой это точно не сделать. Если нужно делать под систему, на которой 2-ой фреймворк - это максимум, что можно выжать, то просто лучше писать уже сразу на плюсах, так как в любом случае от нативной либки, поддерживающей mp4 тут не обойтись. Как говорится: если долбиться в жопу, то уже сразу по жесткому.

Maksim 22.06.2021 01:07

Цитата:

Сообщение от Mizuwokiru

Ну WMPLib-ой это точно не сделать. Если нужно делать под систему, на которой 2-ой фреймворк - это максимум, что можно выжать, то просто лучше писать уже сразу на плюсах, так как в любом случае от нативной либки, поддерживающей mp4 тут не обойтись. Как говорится: если долбиться в жопу, то уже сразу по жесткому.

В общем сделаю пока что копированием mp4 на диск, потом будет времени больше сделаю на С++.

Другой вариант использовать VM и все собрать в 1, но с этим могут быть ложные срабатывания антивирусов как в случае с темидой.

Чтобы лишнее в приложении не таскать за собой так как WMPLib без исходников, закинул все через ILMerge.


Время: 10:18