Как собрать vlc из исходников
Пользователям Linux необходимо хотя бы приблизительно знать как происходит сборка программ из исходников. Так как вы можете столкнуться стем, что вашей программы может и не быть скомпилированной под ваш дистрибутив. Сама сборка программ не сложна, и обычно описана в файле README или INSTALL, который идет вместе с пакетами для сборки. Так что, будьте внимательны. И так, сборку из исходников мы будем разбирать на примере программы GParted. Но, для начала давайте установим необходимые утилиты – интерпретатор и компилятор, для того, что бы можно было собирать программы. Для установки необходимых утилит вводим команду:
Debian/Ubuntu
sudo apt install build-essential automake autoconf
Arch/Manjaro
sudo pacman -S base-devel --needed
Сборка программ c Github
И начнем мы с GParted, сборку или как еще называется данный процесс – компиляцию мы будем выполнять в Ubuntu 20.04 . Вы можете спросить почему именно в Ubuntu, отвечу, для Arch Linux и подобных есть AUR. Да и со сборкой программ в Arch мы разберемся чуть позже. Там можно найти практически все программы, которые существуют для Linux. Для начала нужно скачать исходники программы, для этого переходим на сайт, скачиваем, а затем распаковываем архив. Так же можно выполнить команду:
Затем переходим в папку:
Теперь заглянем в файл README и посмотрим его внимательно. Если приглядеться, то можно увидеть какие зависимости необходимы доустановить:
Обратите внимания, что GPArted хорошо документированная, и для установки под каждый дистрибутив имеется инструкция с дополнительными зависимостями. Устанавливаем зависимости и выполняем команду для того, что бы у вас сформировался установочный файл:
Если проблема с зависимостями у вас останется, то вы увидите об этом вывод:
После того, как вы установите все необходимые зависимости, запускаете снова “autogen.sh”. В итоге он вам скажет что можно приступать к дальнейшим действиям:
Далее запускаем “make” и затем когда “make” выполнит свою работу, запускаем “sudo make install”. Обратите внимания, в некоторых инструкциях не упоминается о том, что нужно установку программы выполнять именно от “sudo”, а именно: “sudo make install”. Из за этого у вас могут возникнуть проблемы. И так продолжаем сборку программы вводим команды:
make
sudo make install
Стоит отметить, что многие программы с открытым исходным кодом, можно найти на github. Там обычно самая последняя версия программы, по этому, если есть такая возможность, то лучше собирать программы с github.
После установки можно найти программу в меню установленных программ.
Сборка программ из архива
Распаковывать архив можно из терминала, а можно при помощи графического интерфейса, например программой Ark или Менеджер архивов. Тут все зависит от того, как вам удобней. Для того что бы распаковать архив в терминале, нужно выполнить определенную команду. На примере с GParted такой командой будет:
tar xzf gparted-1.1.0.tar.gz
Примечание, tar является утилитой командной строки для распаковки архивов. И так, затем переходим в папку с распакованной программой и смотрим какие там имеются файлы. Тут как раз имеются README:
Для наглядности я открою файл README в графической утилите Mousepad. Как вы можете заметить, в инструкции подробно прописано как устанавливать данную программу из исходников:
Для того что бы собрать данную программу, достаточно выполнить команды, которые прописаны в инструкции. Так как мы уже распаковали данный архив, пропускаем это шаг. Если вы не знаете как перейти в терминале в директорию программы, поясню. А если знаете, то пропустите данный шаг. Для того что бы перейти в терминале в нужную директорию, используется команда “ cd “. Например, у вас папка с программой находится по адресу “Загрузки – папка с программой”, выполняем команду:
После чего можно посмотреть что у нас имеется в данной директории введя команду “ ls “, после чего снова вводим команду “ cd ” и переходим в нужную нам директорию. Например:
Теперь приступаем к сборке программы GParted. Для этого вводим команды которые написаны в файле README.
На этом этапе установки могут возникнуть проблемы с зависимостями. По этому их необходимо установить:
После того как все необходимые зависимости были установлены, снова запускаем “./configure” и продолжаем компиляцию программы как описано выше. А именно, после запуска “./configure” запускаем “make”, а затем “sudo make install”.
Ошибки при сборке программы
Возможно, при компилировании у вас могут возникнуть проблемы с зависимостями. Для этого надо будет устанавливать необходимые пакеты. Обычно если у вас не хватает зависимостей, вы увидите во время выполнения команды ./configure ошибки. Если же вы не знаете какой зависимости не хватает, то тут выручит поисковик.
После того как вы установите необходимые зависимости, снова необходимо запустить ./configure. А может быть и так, что у вас не будет файла ./configure, попробуйте запустить другие скрипты:
Если таких скриптов вы не смогли найти, то можно выполнить последовательно следующие команды:
aclocal
autoheader
automake --gnu --add-missing --copy --foreign
autoconf -f -Wall
В случае с дистрибутивами Arch/Manjaro необходимые пакеты вы можете подгрузить используя “Менеджер программ”, Предварительно не забыв подключить репозиторий AUR:
Пример необходимых зависимостей при установки в Manjaro программы Blender. Компиляция производилась с использованием файла PKGBUILD:
Удаление программ
Если же вы захотите в будущем удалить GParted, или какую то иную программу, оставьте папку которую скачивали. Так как только в ней есть инструкция куда устанавливались те или иные пакеты. Обычно, в файле README написано как удалять установленные программы. В случае с GParted достаточно перейти в каталог с исходниками и выполнить команду:
Сборка в Arch/Manjaro (Arch Build System – ABS)
В дистрибутивах Arch и Arch подобных есть несколько способов устанавливать программное обеспечение, собственно, как и во многих других дистрибутивах. Но, в Arch имеется AUR, это пользовательский репозиторий, где лежат программы, которые не вошли в официальные репозитории. А так же существует способ собрать программу из исходников и вот тут вы можете столкнуться с тем, что вам попадется файл “PKGBUILD”. PKGBUILD это грубо говоря скрипт, который содержит инструкцию по скачиванию необходимых пакетов. Так же вместе с PKGBUILD могут быть и другие файлы, например “blender.desktop”. Вы можете открыть PKGBUILD и изменить необходимые параметры, но, это только при условии что вы знаете что делаете. Предположительно, вы уже перешли в каталог с исходниками программы, если же нет, сделать это можно командой в терминале “cd и путь к директории”. Для сборки пакета выполняем команду:
Опишу опции которые тут применяются, опция -s произвести проверку и установку зависимостей, а опция i установку самого пакета:
В статье «Воспроизведение видео в Delphi» была упомянута возможность написания проигрывателя для видео с использованием VLC SDK. В том числе с использованием набора компонентов PasLibVlc.
Эти компоненты значительно упрощают работу с VLC SDK, так как весь низкоуровневый функционал (включая импорт функций VLC API) в них уже реализован и разработчику при написании программ предоставляется достаточно простой удобный интерфейс.
Рассмотрим работу с ними на примере простейшего проигрывателя, который обладает следующими возможностями:
- Воспроизведение видео;
- Постановка воспроизведения на паузу;
- Остановка воспроизведения видео;
- Регулировка громкости воспроизведения.
Безусловно, перечисленный набор функций более чем скромный, но для изучения основ работы с PasLibVlc и самостоятельного написания не очень сложных программ для воспроизведения видео этого вполне достаточно.
Набор PasLibVlc включает всего 2 компонента:
- TPasLibVlcPlayer – собственно он и отвечает за воспроизведение;
- TPasLibVlcMediaList – список воспроизведения.
Для реализации вышеуказанного функционала будет вполне достаточно TPasLibVlcPlayer.
После установки PasLibVlc в панели компонентов появится соответствующая группа.
Подготовка прототипа программы
Поместим компонент TPasLibVlcPlayer на форму. На эту же форму поместим 5 компонентов TButton, с помощью которых будет осуществляться воспроизведение, постановку на паузу, остановку воспроизведения и регулирование громкости. В результате получаем вот такую форму:
У компонента TPasLibVlcPlayer есть свойство AudioOutput. Оно предназначено указания технологии, которая будет использоваться для воспроизведения звука из видеофайла. Доступно 3 варианта:
- aoDefault – то, что используется в системе по умолчанию;
- aoDirectX – для воспроизведения звука используется DirectX;
- aoWaveOut – для воспроизведения звука используются стандартные средства операционной системы.
К сожалению, регулирование громкости в VLC SDK корректно работает, только если свойство AudioOutput имеет значение aoWaveOut (по крайней мере, в Windows 7 x64). Поэтому, сразу устанавливаем для него это значение.
На этом подготовительный этап завершён. Перед следующими этапами необходимо сохранить и скомпилировать проект (зачем это нужно будет пояснено ниже).
Подключение VLC SDK
VLC SDK представляет собой набор библиотек, в которых реализованы средства для воспроизведения аудио и видео файлов. Какие именно файлы и папки входят в его состав показано на скриншоте ниже.
Если не получилось скачать VLC SDK «в чистом виде», то можно также скачать zip или 7z архив с portable версией проигрывателя VideoLAN и извлечь всё это оттуда.
Для удобства поместим файлы VLC SDK в отдельную папку (назовём её, например, «VLC»). А, саму папку скопируем в ту папку, где находится ранее скомпилированный файл. Собственно для этого на предыдущем этапе и выполнялась компиляция.
Теперь можно приступить непосредственно к подключению VLC SDK к программе. Подключение будет выполняться при запуске программы. Поэтому, создадим для формы проигрывателя обработчик события OnCreate и в нём пропишем путь к папке с VLC SDK. Так как папка с VLC SDK находится в той же папке, что и программа, реализация будет предельно простой.
Медиакомбайн VLC вызывает у меня исключительно теплые чувства. Отличная поддержка видео- и аудиоформатов без установки кодеков, широкие возможности и высокое качество работы сделали эту программу неотъемлемым атрибутом компьютеров, за которыми я провожу свое время.
Я стараюсь использовать актуальные версии этого приложения, и вчера я решил обновить VLC в своём Debian Squeeze. Выкачав последние исходники, я обнаружил, что не могу их скомпилировать.
Вообще, сборка последних версий VLC в таком "старье", как замшелое окружение стабильных версий Debian - занятие, требующее дополнительных телодвижений. Как минимум, придется обновить пакет libavcodec52 для получения совместимой версии кодировщика ffmpeg. Можно делать это вручную, можно подключить репозиторий Debian Multimedia и обновить пакет оттуда. Я лично подключил репозиторий.
Располагая свежим ffmpeg, я выкачал исходники VLC 2.0.1, но при компиляции получил странным образом выглядящую ошибку:
switcher.c: In function 'VideoGetBuffer':
switcher.c:847:34: error: 'FF_I_TYPE' undeclared (first use in this function)
switcher.c:847:34: note: each undeclared identifier is reported only once for each function it appears in
switcher.c:856:34: error: 'FF_P_TYPE' undeclared (first use in this function)
switcher.c:935:10: error: 'FF_B_TYPE' undeclared (first use in this function)
Пройдясь по спискам рассылки VLC , я обнаружил источник проблемы.
Появляется вышеуказанная ошибка при компиляции исходников с опцией --enable-switcher . В заголовочном файле исходников ffmpeg-0.10.2 (/usr/include/libavcodec/avcodec.h) присутствует вот такое определение:
/* DEPRECATED, directly use the AV_PICTURE_TYPE_* enum values */
Т.е. использование констант FF_*_TYPE является устаревшим для свежих версий ffmpeg. Что есть свежие версии? Ответ на вопрос дает файл /usr/include/libavcodec/version.h:
Казалось бы, должно работать. Авторы исходников позаботились об совместимости со старыми версиями библиотек. Но авторы VLC, по-видимому, не учли этот момент, и в исходниках самого VLC в файле /modules/codec/avcodec.h, который как раз и включен в злосчастный switcher.c, мы находим определение:
Собранные вместе, эти файлы создают зацикленные друг на друга директивы (AV_PICTURE_TYPE_I -> FF_I_TYPE -> AV_PICTURE_TYPE_I), что сводит с ума компилятор GCC, и он попросту игнорирует определение всех этих констант.
Ричард Гренвиль, выполнивший этот анализ кода, просто заменил все константы FF_*_TYPE на AV_PICTURE_TYPE_* в файле /modules/stream_out/switcher.c. Я сделал то же самое, и VLC 2.0.1 был успешно собран и установлен.
Подведем итоги
Чтобы заполучить VLC 2.0.1 на Debian 6 Squeeze (или другом любом дистрибутиве с libavcodec версии меньше 54), нужно:
- Заменить все константы FF_*_TYPE на AV_PICTURE_TYPE_* в файле /modules/stream_out/switcher.c
- Подключить репозиторий Debian-Multimedia и выполнить apt-get install libavcodec52
- Выполнить команды компиляции, которые указаны в руководстве по самостоятельной сборке плеера:
[code]apt-get dep-build vlc
./bootstrap
./configure --prefix=/usr --enable-xvideo --enable-sdl --enable-wma-fixed --enable-shine --enable-omxil --enable-iomx --enable-crystalhd --enable-mad --enable-avcodec --enable-libva --enable-dxva2 --enable-switcher --enable-avformat --enable-swscale --enable-twolame --enable-real --enable-a52 --enable-dca --enable-flac --enable-libmpeg2 --enable-vorbis --enable-tremor --enable-speex --enable-theora --enable-dirac --enable-x264 --enable-png --enable-libass --enable-kate --with-x --enable-fontconfig --enable-freetype --enable-pulse --enable-alsa --enable-oss --enable-portaudio --enable-jack --enable-skins2 --enable-libtar --enable-qt4 --enable-xosd
make
checkinstall --nodoc --fstran=no[/code]
Кстати, мою готовую сборку для Debian x64 вы можете заполучить здесь. Приятной компиляции!
💡Узнавайте о новых статьях быстрее. Подпишитесь на наши каналы в Telegram и Twitter.
Судя по тому, что вы читаете этот текст, вы дочитали эту статью до конца. Если она вам понравилась, поделитесь, пожалуйста, с помощью кнопок ниже. Спасибо за вашу поддержку!
Вы здесь: Главная страница » Linux » Самостоятельная сборка VLC 2.0.1 под Linux
Публикации по теме
Автор: Сергей Ткаченко
Сергей Ткаченко создал этот сайт в далёком 2009 году, и с тех пор продолжает над ним работать, публикуя новые материалы о Windows и её приложениях практически каждый день. Посмотреть все записи автора Сергей Ткаченко
Самостоятельная сборка VLC 2.0.1 под Linux: 4 комментария
Спасибо за проделанную работу)
вот так вот пишет мне на 2.6.32-5-686 debian 6
Медиакомбайн VLC вызывает у меня исключительно теплые чувства. Отличная поддержка видео- и аудиоформатов без установки кодеков, широкие возможности и высокое качество работы сделали эту программу неотъемлемым атрибутом компьютеров, за которыми я провожу свое время.
Я стараюсь использовать актуальные версии этого приложения, и вчера я решил обновить VLC в своём Debian Squeeze. Выкачав последние исходники, я обнаружил, что не могу их скомпилировать.
Вообще, сборка последних версий VLC в таком "старье", как замшелое окружение стабильных версий Debian - занятие, требующее дополнительных телодвижений. Как минимум, придется обновить пакет libavcodec52 для получения совместимой версии кодировщика ffmpeg. Можно делать это вручную, можно подключить репозиторий Debian Multimedia и обновить пакет оттуда. Я лично подключил репозиторий.
Располагая свежим ffmpeg, я выкачал исходники VLC 2.0.1, но при компиляции получил странным образом выглядящую ошибку:
switcher.c: In function 'VideoGetBuffer':
switcher.c:847:34: error: 'FF_I_TYPE' undeclared (first use in this function)
switcher.c:847:34: note: each undeclared identifier is reported only once for each function it appears in
switcher.c:856:34: error: 'FF_P_TYPE' undeclared (first use in this function)
switcher.c:935:10: error: 'FF_B_TYPE' undeclared (first use in this function)
Пройдясь по спискам рассылки VLC , я обнаружил источник проблемы.
Появляется вышеуказанная ошибка при компиляции исходников с опцией --enable-switcher . В заголовочном файле исходников ffmpeg-0.10.2 (/usr/include/libavcodec/avcodec.h) присутствует вот такое определение:
/* DEPRECATED, directly use the AV_PICTURE_TYPE_* enum values */
Т.е. использование констант FF_*_TYPE является устаревшим для свежих версий ffmpeg. Что есть свежие версии? Ответ на вопрос дает файл /usr/include/libavcodec/version.h:
Казалось бы, должно работать. Авторы исходников позаботились об совместимости со старыми версиями библиотек. Но авторы VLC, по-видимому, не учли этот момент, и в исходниках самого VLC в файле /modules/codec/avcodec.h, который как раз и включен в злосчастный switcher.c, мы находим определение:
Собранные вместе, эти файлы создают зацикленные друг на друга директивы (AV_PICTURE_TYPE_I -> FF_I_TYPE -> AV_PICTURE_TYPE_I), что сводит с ума компилятор GCC, и он попросту игнорирует определение всех этих констант.
Ричард Гренвиль, выполнивший этот анализ кода, просто заменил все константы FF_*_TYPE на AV_PICTURE_TYPE_* в файле /modules/stream_out/switcher.c. Я сделал то же самое, и VLC 2.0.1 был успешно собран и установлен.
Подведем итоги
Чтобы заполучить VLC 2.0.1 на Debian 6 Squeeze (или другом любом дистрибутиве с libavcodec версии меньше 54), нужно:
- Заменить все константы FF_*_TYPE на AV_PICTURE_TYPE_* в файле /modules/stream_out/switcher.c
- Подключить репозиторий Debian-Multimedia и выполнить apt-get install libavcodec52
- Выполнить команды компиляции, которые указаны в руководстве по самостоятельной сборке плеера:
[code]apt-get dep-build vlc
./bootstrap
./configure --prefix=/usr --enable-xvideo --enable-sdl --enable-wma-fixed --enable-shine --enable-omxil --enable-iomx --enable-crystalhd --enable-mad --enable-avcodec --enable-libva --enable-dxva2 --enable-switcher --enable-avformat --enable-swscale --enable-twolame --enable-real --enable-a52 --enable-dca --enable-flac --enable-libmpeg2 --enable-vorbis --enable-tremor --enable-speex --enable-theora --enable-dirac --enable-x264 --enable-png --enable-libass --enable-kate --with-x --enable-fontconfig --enable-freetype --enable-pulse --enable-alsa --enable-oss --enable-portaudio --enable-jack --enable-skins2 --enable-libtar --enable-qt4 --enable-xosd
make
checkinstall --nodoc --fstran=no[/code]
Кстати, мою готовую сборку для Debian x64 вы можете заполучить здесь. Приятной компиляции!
💡Узнавайте о новых статьях быстрее. Подпишитесь на наши каналы в Telegram и Twitter.
Судя по тому, что вы читаете этот текст, вы дочитали эту статью до конца. Если она вам понравилась, поделитесь, пожалуйста, с помощью кнопок ниже. Спасибо за вашу поддержку!
Вы здесь: Главная страница » Linux » Самостоятельная сборка VLC 2.0.1 под Linux
Публикации по теме
Автор: Сергей Ткаченко
Сергей Ткаченко создал этот сайт в далёком 2009 году, и с тех пор продолжает над ним работать, публикуя новые материалы о Windows и её приложениях практически каждый день. Посмотреть все записи автора Сергей Ткаченко
Самостоятельная сборка VLC 2.0.1 под Linux: 4 комментария
Спасибо за проделанную работу)
вот так вот пишет мне на 2.6.32-5-686 debian 6
Читайте также: