Просмотр полной версии : Загрузка mp4 из ресурсов
Интересует как можно сделать реализацию в C# проигрывания mp4 видео через Nuget либу WMPLib с Windows Form без сохранения на диск?
Есть какой то вариант без BoxedApp и других VM проигрывания на Windows Form?
Может есть какой то вариант загрузить в память и проиграть из неё, а после закрытия приложения выгрузить?
П.С: да есть wpf где проигрывание из ресурсов напрямую, но лучше на windows form.
default_npc
21.06.2021, 10:05
Может есть какой то вариант загрузить в память и проиграть из неё, а после закрытия приложения выгрузить?
я конечно может не понял конечную цель, из поста не совсем понятно что ты делаешь, но если тебе надо просто видео проиграть, то почему бы не встроить его с ютуб? формы это умеют
я конечно может не понял конечную цель, из поста не совсем понятно что ты делаешь, но если тебе надо просто видео проиграть, то почему бы не встроить его с ютуб? формы это умеют
Не хотелось бы использовать внешние проигрыватели.
Цель на заднем фоне Windows Form проигрывать видео с логотипом используя WMPLib из Nuget.
Если сохранить на диск из ресурсов все работает, но файл только мешает.
Можно конечно сохранять его в temp папку, но хотелось бы из памяти напрямую прочитать.
Просто искал все возможные варианты, но нет толком информации по этому вопросу.
default_npc
21.06.2021, 10:35
Просто искал все возможные варианты, но нет толком информации по этому вопросу.
создай на цуберфоруме подобный тред
наш форум конечно вне конкуренции, но там обитает большая куча бородатых программистов и девелоперов, вероятность получить ответ на верно заданный вопрос - 95%
Интересует как можно сделать реализацию в C# проигрывания mp4 видео через Nuget либу WMPLib с Windows Form без сохранения на диск?
How to: Embed Windows Media Player on a Form (https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2008/bb383953(v=vs.90)?redirectedfrom=MSDN)
docs.microsoft.com
WinForms уже давно объявлены легаси и устарели. WPF на самом деле простой, стоит только перешагнуть через понимание MVVM и окажется, что даже проще разрабатывать, чем на винформах, к тому же есть Avalonia (https://avaloniaui.net).
Да и вообще уже развивается WinUI 3, которая всё унифицируется и дальше. Немного инфографики по этому поводу, к тому же WPF так же уже устарел как и UWP, хотя WPF самый популярный, поэтому просто берём avalonia.
Хотя они объявлены и легаси но оптимизацию свою они получили What's new in Windows Forms runtime in .NET 5.0 (https://devblogs.microsoft.com/dotnet/whats-new-in-windows-forms-runtime-in-net-5-0/).
Но зачем на устаревшем делать?
How to: Embed Windows Media Player on a Form (https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2008/bb383953(v=vs.90)?redirectedfrom=MSDN)
docs.microsoft.com
WinForms уже давно объявлены легаси и устарели. WPF на самом деле простой, стоит только перешагнуть через понимание MVVM и окажется, что даже проще разрабатывать, чем на винформах, к тому же есть Avalonia (https://avaloniaui.net).
Да и вообще уже развивается WinUI 3, которая всё унифицируется и дальше. Немного инфографики по этому поводу, к тому же WPF так же уже устарел как и UWP, хотя WPF самый популярный, поэтому просто берём avalonia.
Хотя они объявлены и легаси но оптимизацию свою они получили What's new in Windows Forms runtime in .NET 5.0 (https://devblogs.microsoft.com/dotnet/whats-new-in-windows-forms-runtime-in-net-5-0/).
Но зачем на устаревшем делать?
Есть свои причины делать не на 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 без сохранения на диск из ресурсов.
òbiòbi верифицированный пользователь.
21.06.2021, 21:39
@Maksim (https://forum.antichat.xyz/members/893314/), а такой вот вариант?)
создаем на сайте файл 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
результат
Вариант с браузером хороший, но буду искать решение чтобы и на 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++? (https://stackoverflow.com/questions/4344486/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
Эм, ну так сделай через ресурс, как и хотел.
На 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++? (https://stackoverflow.com/questions/4344486/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 тут не обойтись. Как говорится: если долбиться в жопу, то уже сразу по жесткому.
Ну WMPLib-ой это точно не сделать. Если нужно делать под систему, на которой 2-ой фреймворк - это максимум, что можно выжать, то просто лучше писать уже сразу на плюсах, так как в любом случае от нативной либки, поддерживающей mp4 тут не обойтись. Как говорится: если долбиться в жопу, то уже сразу по жесткому.
В общем сделаю пока что копированием mp4 на диск, потом будет времени больше сделаю на С++.
Другой вариант использовать VM и все собрать в 1, но с этим могут быть ложные срабатывания антивирусов как в случае с темидой.
Чтобы лишнее в приложении не таскать за собой так как WMPLib без исходников, закинул все через ILMerge.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot