Как собрать vlc из исходников

Обновлено: 07.07.2024

Пользователям 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 в панели компонентов появится соответствующая группа.

Компоненты PasVlcLib

Подготовка прототипа программы

Поместим компонент TPasLibVlcPlayer на форму. На эту же форму поместим 5 компонентов TButton, с помощью которых будет осуществляться воспроизведение, постановку на паузу, остановку воспроизведения и регулирование громкости. В результате получаем вот такую форму:

Плеер PasVlcLib

У компонента 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), нужно:

  1. Заменить все константы FF_*_TYPE на AV_PICTURE_TYPE_* в файле /modules/stream_out/switcher.c
  2. Подключить репозиторий Debian-Multimedia и выполнить apt-get install libavcodec52
  3. Выполнить команды компиляции, которые указаны в руководстве по самостоятельной сборке плеера:
    [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), нужно:

  1. Заменить все константы FF_*_TYPE на AV_PICTURE_TYPE_* в файле /modules/stream_out/switcher.c
  2. Подключить репозиторий Debian-Multimedia и выполнить apt-get install libavcodec52
  3. Выполнить команды компиляции, которые указаны в руководстве по самостоятельной сборке плеера:
    [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

Читайте также: