LINUX.ORG.RU

FFmpeg 4.1.3 Win64 LGPL3, билд от lovesan

 , ,


0

1

Сделал новый LGPL билд FFmpeg под винду(x64). По ссылке внизу, в архиве. Библиотеки FFmpeg скомпилированы как DLL, все зависимости вкомпилены в них статически, таким образом, можно считать никаких сторонних дополнительных зависимостей нет. В архив включены собственно исполняемые бинарники, DLL-ки, библиотеки импорта, необходимые для линковки с ними, хидеры, и документация.

Не пытайтесь повторить это дома. Нейтив компилятор GCC под MinGW не справляется, а кросскомпиляция всех необходимых зависимостей требует огромную кучу телодвижений.

Лицензия LGPL-v3 означает, что сборку можно использовать для коммерческих и приватных целей, а также распространять бинарники без необходимости открывать код и так далее. Естественно, по причине лицензии, некоторые кодеки и сторонние зависимости были удалены, например это libx264 и libx265. Но, им есть замена - libopenh264, kvazaar, и так далее. Кроме того, включены DXVA, D3D11VA, поддержка аппаратного ускорения Nvidia, Intel, и другие плюшки.

В архиве, в README.txt, все подробно описано.

https://static.lovesan.me/ffmpeg/ffmpeg-4.1.3-win64-lgpl.zip

С разморозкой любитель безполезной работы :)

ffmpeg есть и в msys2 и в vcpkg

К тому же даже более новой версии:

https://github.com/Microsoft/vcpkg/blob/637963244b5442d41f876b41f2622654e88f3...

Лучше пользоваться пакетными менеджерами чем сборками от васянов!

Не пытайтесь повторить это дома. Нейтив компилятор GCC под MinGW не справляется, а кросскомпиляция всех необходимых зависимостей требует огромную кучу телодвижений.

Ахахаха, man vcpkg

fsb4000 ★★★★★ ()
Последнее исправление: fsb4000 (всего исправлений: 1)
Ответ на: комментарий от Deleted

Ключевой момент - LGPL.

Что это значит - это значит, что данную сборку можно использовать в коммерческих приложениях без необходимости открывать свой код и так далее.

Я сам использую свои билды в проприетарном приложении, возможно много кому еще будет полезно.

lovesan ★★ ()
Ответ на: комментарий от fsb4000

ffmpeg есть и в msys2 и в vcpkg

Под GPL. А значит, ненужно.

Ахахаха, man vcpkg

см. список зависимостей в ридми. Каким образом vcpkg может собрать все эти тонны зависимостей, использующие autotools разных версий, cmake и прочее?

lovesan ★★ ()
Ответ на: комментарий от anonymous

openh264 и kvazaar как замена вполне нормально справляются. К тому же есть nvenv и qsv

lovesan ★★ ()
Ответ на: комментарий от lovesan

Каким образом vcpkg может собрать все эти тонны зависимостей, использующие autotools разных версий, cmake и прочее?

man vcpkg, там собирает всё, и autotools и meson и другие системы сборки, которые требуются для пакетов.

Ахаха

Так много работы:

pacman -S mingw-w64-x86_64-ffmpeg
или
.\vcpkg.exe install ffmpeg:x64-windows

В общем если сюда заглянут залётные linux программисты, которые не знают про современный Windows, вместо скачивания бинарников с варезников сначала почитайте про vcpkg и msys2, почти все либы уже собраны для вас, и прозрачно видны все шаги сборки, и вы сможете повторить их локально.

Не ведитесь на

Не пытайтесь повторить это дома. Нейтив компилятор GCC под MinGW не справляется, а кросскомпиляция всех необходимых зависимостей требует огромную кучу телодвижений.

fsb4000 ★★★★★ ()

Не пытайтесь повторить это дома. Нейтив компилятор GCC под MinGW не справляется, а кросскомпиляция всех необходимых зависимостей требует огромную кучу телодвижений.

Есть готовые скрипты в интернетах. Кросскомпиляция из-под линукса быстрее нативной сборки.

Harald ★★★★★ ()
Ответ на: комментарий от fsb4000

Еще раз - openh264 собери мне им, например, и другие зависимости из ридми. А под msys я работал когда ты еще под стол пешком ходил.

lovesan ★★ ()
Ответ на: комментарий от Harald

Есть ffmpeg-windows-build-helpers, но по факту он не особо рабочий.

lovesan ★★ ()
Ответ на: комментарий от anonymous

В README написано - кросскомпиляцией из WSL, с помощью GCC 8.3.0

После танцев с бубном по исправлению тучи багов в зависимостях.

lovesan ★★ ()
Ответ на: комментарий от lovesan

еще раз
тем кому надо LGPL в состоянии собрать самим
хотя под винду они накуй не нужны
все стриммер сервера на юниксе
надо очень сильно поискать какого то дебила кому это надо будет под винду

anonymous ()

Надо бы в новости

Deleted ()
Ответ на: комментарий от anonymous

тем кому надо LGPL в состоянии собрать самим

Продрочившись полгода, как я в прошлый раз, да.

все стриммер сервера на юниксе

1) Это только в мире розовых поней. У меня лично под боком проприетарное API для дорогущих тепловизоров, работающее только на винде.

2) Клиенты как правило на винде. А стримить в браузер такие вещи, как я делаю, никому нахрен не уперлось, да и будет тормозить.

lovesan ★★ ()
Ответ на: комментарий от lovesan

А стримить в браузер такие вещи, как я делаю, никому нахрен не уперлось, да и будет тормозить.

для браузера под винду ffmpeg тоже ж кто-то собирает :)

Harald ★★★★★ ()
Ответ на: комментарий от Harald

Только вот они не делятся сборками почему-то. Я вот поделился.

lovesan ★★ ()
Ответ на: комментарий от lovesan

Тред не читай @ Сразу отвечай
Они под GPL.

Тред я читал. Я различий принципиальных увидеть не могу. Чего есть в твоей сборке, чего нет в официале. А то ты лозунгами здесь сыпишь, а всем на лозунги плевать.

Deleted ()

Не пытайтесь повторить это дома. Нейтив компилятор GCC под MinGW не справляется

Я неделю назад собирал - брат жив. Нетривиально, но ничего сверхестественного.

Там основная проблема в том, что ffmpeg использует убогий автотулс, из-за чего конфигурация занимает пару минут. Ну и ограничения CMD.exe, из-за чего аргументы могут быть длинной не больше 8192 байт. Но это обходится правкой конфига.

RazrFalcon ★★★★★ ()
Ответ на: комментарий от lovesan

Библиотеки под GPL нельзя использовать в проприетарных закрытых приложениях.

То есть на применение самого ffmpeg (а это основное) твой билд никаких плюсов не даёт?

Deleted ()
Ответ на: комментарий от RazrFalcon

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

А так то я даже поверю, что ванильный и без депенденсей, он может и соберется под нейтив MinGW, только вот он такой интересен особо не будет.

lovesan ★★ ()
Ответ на: комментарий от RazrFalcon

Там основная проблема в том, что ffmpeg использует убогий автотулс

вызывающе неверная информация

они там на почве автотулзохейтерства навелосипедили свой огромный configure скрипт с нестандартными параметрами

Harald ★★★★★ ()
Ответ на: комментарий от fsb4000

И сколько эта сборка весит? ffmpeg, по умолчанию, соберётся в 60-и метровый бинарь. А если оставить только нужное - получим <10МБ.

RazrFalcon ★★★★★ ()
Ответ на: комментарий от Deleted

Всмысле? Почитай что такое GPL.

Если у тебя FFmpeg зависит от GPL библиотек, всё, его лицензия автоматом становится GPL.

lovesan ★★ ()
Ответ на: комментарий от lovesan

их больше людей использует, аудитория не ограничена ЛОРом

Harald ★★★★★ ()
Ответ на: комментарий от lovesan

Я ничего не правил. Правда у меня зависимостей почти нет: libx264, hevc, lame и nvenc.

RazrFalcon ★★★★★ ()
Ответ на: комментарий от Harald

Да всяко лучше чем автотулзовый гной. А то минорная версия какого-нибудь autoconf не та - и всё, хоть вешайся. Про .la файлы я вообще не говорю, это надо было такое говно придумать..

lovesan ★★ ()
Ответ на: комментарий от Harald

Из проприетарной C++ библиотеки в реалтайм прилетают фреймы, их надо транскодировать и стримить. Из другой библиотеки прилетает звук. Надо синхронизировать с видео. Давай опиши мне алгоритм с внешним FFmpeg.

lovesan ★★ ()
Последнее исправление: lovesan (всего исправлений: 1)
Ответ на: комментарий от lovesan

Как бинарь его можно использовать для оффлайн транскодинга разве что.

Ты о чём, дядя? Это его основное назначение.

Deleted ()
Ответ на: комментарий от lovesan

вы чушь несете
стриммеры.... броузеры... клиенты....
почитайте ограничение GPL что бы понимать что вы сделали никому не нужный билд

anonymous ()
Ответ на: комментарий от anonymous

GPL это рак, заражающий код. Стоит только коду слинковаться с GPL кодом, он сам становится GPL.

Нашему коду это не надо.

lovesan ★★ ()
Ответ на: комментарий от lovesan

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

Harald ★★★★★ ()
Ответ на: комментарий от Harald

А теперь внимание, преобразование в подходящий формат и называется транскодирование, т.е. то чем должен заниматься FFmpeg.

lovesan ★★ ()
Ответ на: комментарий от lovesan

Из другой библиотеки прилетает звук. Надо синхронизировать с видео.

ffmpeg умеет в несколько источников

Harald ★★★★★ ()
Ответ на: комментарий от lovesan

разве что в вашей голове
обернитесь, наверняка за вами еще бегает столлман что бы наказать рублем

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.