На данный момент в моем проекте работает FFMpegCore с файлом ffmpeg.exe, помещенным в каталог проекта. Это работает, но для соответствия лицензии LGPL FFmpeg требует динамического связывания:
Используйте динамическое связывание (в Windows это означает связывание с dll) для связывания с библиотеками FFmpeg.
Хотя я понимаю базовую концепцию динамического и статического связывания, моя проблема, скорее всего, заключается в неправильном понимании того, как работают .dll и как они применяются к C# и .NET.
Правильно ли это? возможно ли скомпилировать ffmpeg в одну .dll, к которой может получить доступ кросс-платформенный FFMpegCore? Насколько я могу судить по исходному коду, FFMpegCore ищет файл ffmpeg или ffmpeg.exe в своем пути конфигурации.
Можно ли использовать .NET динамически связывать FFmpeg и предоставлять его библиотекам для использования, или это полное недоразумение, и понадобится ли мне тогда библиотека-оболочка с другими возможностями?
Я попытался найти ответ в соответствующем разделе документации, но я не нашел ни одной для этого конкретного использования какой-либо библиотеки. Я подозреваю, что моя проблема может заключаться в фундаментальном непонимании того, как эти инструменты работают и работают вместе.
Моим идеальным результатом было бы использование FFMpegCore с FFmpeg.dll, который работает кросс-платформенно вместо .exe.
Редактировать 1: ответ и изображение @taratect направили меня на путь, который немного прояснил информацию о exe и dll. .Net компилирует исходный код в не зависящий от платформы промежуточный язык в форме .dll или .exe (полностью отличающийся от вариантов этих файлов на C++), который выполняется средой Common Language Runtime с использованием Компилятор Just In Time для преобразования этого промежуточного языка в машинный код, который можно запускать на конкретной платформе, на которой установлен .Net. C++(FFmpeg) компилируется непосредственно в машинный код конкретной платформы (как показано на рисунке), что сбивает с толку в форме .dll или .exe (в Windows). .Net действительно может загружать и запускать машинный код, не управляемый средой Common Language Runtime, поскольку в конце концов все запускается как машинный код, однако памятью и другими сложностями затем должен управлять я, что, похоже, и делает FFMpegCore при упаковке исполняемого файла. Я все еще могу быть смущен/неправ в некоторых из этих вопросов, неуправляемый код пока находится за пределами моего понимания.
Это более или менее подтверждает, что FFMpegCore, вероятно, не сможет использовать FFmpeg так, как я надеялся, и лучше. Обходной путь может заключаться в том, чтобы пользователь просто предоставил исходный код FFmpeg или реализовал загрузчик как часть установки, чтобы мне вообще не приходилось его распространять.
Подробнее здесь: https://stackoverflow.com/questions/790 ... ffmpegcore
Как мне динамически связать FFmpeg в проекте C# для использования с FFMpegCore? ⇐ C#
Место общения программистов C#
1729016700
Anonymous
На данный момент в моем проекте работает FFMpegCore с файлом ffmpeg.exe, помещенным в каталог проекта. Это работает, но для соответствия лицензии LGPL FFmpeg требует динамического связывания:
Используйте динамическое связывание (в Windows это означает связывание с dll) для связывания с библиотеками FFmpeg.
Хотя я понимаю базовую концепцию динамического и статического связывания, моя проблема, скорее всего, заключается в неправильном понимании того, как работают .dll и как они применяются к C# и .NET.
Правильно ли это? возможно ли скомпилировать ffmpeg в одну .dll, к которой может получить доступ кросс-платформенный FFMpegCore? Насколько я могу судить по исходному коду, FFMpegCore ищет файл ffmpeg или ffmpeg.exe в своем пути конфигурации.
Можно ли использовать .NET динамически связывать FFmpeg и предоставлять его библиотекам для использования, или это полное недоразумение, и понадобится ли мне тогда библиотека-оболочка с другими возможностями?
Я попытался найти ответ в соответствующем разделе документации, но я не нашел ни одной для этого конкретного использования какой-либо библиотеки. Я подозреваю, что моя проблема может заключаться в фундаментальном непонимании того, как эти инструменты работают и работают вместе.
Моим идеальным результатом было бы использование FFMpegCore с FFmpeg.dll, который работает кросс-платформенно вместо .exe.
Редактировать 1: ответ и изображение @taratect направили меня на путь, который немного прояснил информацию о exe и dll. .Net компилирует исходный код в не зависящий от платформы промежуточный язык в форме .dll или .exe (полностью отличающийся от вариантов этих файлов на C++), который выполняется средой Common Language Runtime с использованием Компилятор Just In Time для преобразования этого промежуточного языка в машинный код, который можно запускать на конкретной платформе, на которой установлен .Net. C++(FFmpeg) компилируется непосредственно в машинный код конкретной платформы (как показано на рисунке), что сбивает с толку в форме .dll или .exe (в Windows). .Net действительно может загружать и запускать машинный код, не управляемый средой Common Language Runtime, поскольку в конце концов все запускается как машинный код, однако памятью и другими сложностями затем должен управлять я, что, похоже, и делает FFMpegCore при упаковке исполняемого файла. Я все еще могу быть смущен/неправ в некоторых из этих вопросов, неуправляемый код пока находится за пределами моего понимания.
Это более или менее подтверждает, что FFMpegCore, вероятно, не сможет использовать FFmpeg так, как я надеялся, и лучше. Обходной путь может заключаться в том, чтобы пользователь просто предоставил исходный код FFmpeg или реализовал загрузчик как часть установки, чтобы мне вообще не приходилось его распространять.
Подробнее здесь: [url]https://stackoverflow.com/questions/79089533/how-would-i-dynamically-link-ffmpeg-in-a-c-sharp-project-for-use-with-ffmpegcore[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия