В Cinelerra-CVE от Einar Rünkaru начата работа по интеграции новой версии ffmpeg релиза 2.8.х Принята новая модель работы программы c internal ffmpeg. Эта модель планируется (позже) к принятию и в главной ветке Cinelerra-CV.
Итак.
Итак.
Старая версия internal ffmpeg удалена из дерева исходного кода Cinelerra-CVE от Einar Rünkaru. Новая используемая теперь версия ffmpeg (internal) не является частью дерева исходного кода (source tree) Cinelerra-CVE и не хранится в Einar/cinelerra.git. The suffix of ffmpeg libraries is changed to cve, headers are installed under cinelerra-cve.
Используемая бранчем Cinelerra-CVE internal ffmpeg в дереве исходного кода отныне храниться не будет, но будет клонироваться с source.ffmpeg.org.
Клонированная версия не обновляется автоматически.
Текущее поведение Cinelerra-CVE (речь сейчас о бранче от Einar Rünkaru) таково, что configure производит проверку last commit from ffmpeg branch 2.8 если directory <cinelerra_root>/ffmpeg не существует.
В этом случае (если directory <cinelerra_root>/ffmpeg не существует) configure клонирует последнюю на текущий момент выпущенную версию 2.8.x РЕЛИЗА 2.8 с source.ffmpeg.org в cinelerra-directory.
Если же таковая директория в каталоге исходного кода имеется, то configure не будет делать каких-либо попыток загрузить что-либо.
Это довольно удобно, поскольку предоставляет пользователю возможность самостоятельно выбирать: обновлять ffmpeg или нет.
***
Как будет вести себя Cinelerra-CVE, если source.ffmpeg.org выпустит релиз новой stable version ffmpeg (например 2.9-stable) ?
Будет ли программа автоматически загружать в ходе компиляции новую версию ffmpeg 2.9-stable или Cinelerra-CVE будет работать со старой версией 2.8 ?
Вероятно существуют изменения API между 2.8 и 2.9. Cinelerra-CVE может перейти к использованию версии 2.9, если в её git произведены и протестированы (если таковые имеются) необходимые для этого изменения. Ни configure, ни дальнейшая компиляция не обновляют автоматически версию FFmpeg. Пользователь может удалить каталог FFmpeg из каталога исходного кода Cinelerra-CVE - в этом случае текущая версия FFmpeg 2.8.x будет клонирована при конфигурировании.
***
Предположим, что компания source.ffmpeg.org выпустила новый стабильный релиз ffmpeg - 2.9-stable.
В это время пользователь идёт и удаляет каталог исходных кодов /home/user/builds/cin-cve а затем производит `git clone` или удаляет только каталог ffmpeg (/home/user/builds/cin-cve/ffmpeg) из каталога исходного кода cinelerra-cve
В этом случае будет клонирована текущая версия ffmpeg. Но какая: 2.8.x-stable или 2.9-stable ?
Если это происходит после того, как в einar/cinelerra.git произведены необходимые изменения для перехода на новую версию, и пользователь выполняет `git pull`, configure клонирует 2.9.x
Если в Einar/cinelerra.git необходимые изменения для перехода на новую версию не производились, configure клонирует 2.8.x
***
Предположим, что компания source.ffmpeg.org выпустила новую стабильную версию ffmpeg - 2.9-stable.
В это время в einar/cinelerra.git произведены необходимые изменения для перехода на новую версию.
У пользователя в каталоге /home/user/builds/cin-cve/ffmpeg находится 2.8.x
Пользователь, не удаляя каталог /home/user/builds/cin-cve/ffmpeg , выполняет git clone .. ./autogen ./configure
В этом случае новая 2.9-stable клонирована не будет.
configure клонирует 2.8.x и компиляция программы произойдёт с 2.8.x
----------------------------------------------------------------------------------
Если Вы конфигурируете с external ffmpeg, ничего не загружается.
В настоящий момент компиляция с external ffmpeg не поддерживается, хотя опция и существует.
По завершении работы над интеграций 2.8 планируется поддержка и компиляции с external ffmpeg
Версии FFmpeg, которые не поддерживаются программой внутри, не будут поддерживаться и извне.
Опытный пользователь имеет возможность самостоятельно провести upgrade ffmpeg, если считает это необходимым. Пользователь может загрузить любую версию ffmpeg и поместить её в <cinelerra_root>/ffmpeg. Это не приведёт к конфликтам с configure.
<cinelerra_root>/.configure должно быть запущено после изменений FFmpeg, так как команда configure производит конфигурирование (настройку) internal FFmpeg. То есть исходный код ffmpeg должен быть размещен в cinelerra директории прежде, чем будет выполнено configure.
Пользователь должен знать, что компиляция cinelerra-cve с таким custom (пользовательским) ffmpeg может потерпеть неудачу, ибо изменения api происходят относительно часто.
На настоящий момент cinelerra-cv использует ffmpeg libs для mp4, h264 codecs, WMA decoding и AC3 encoding. Другой вопрос как это работает ..
Проблемы с h264.mp4, с AAC вызваны тем, что:
".. the current quicktime is incompatible with the latest libx264. Seems that initialization is not right. Fixing libquicktime means complete rewrite of it. .."
".. Which AAC-encoder is used by CVE ?
External libfaac. libfaac is used through quicktime what has its own quirks."
Поэтому принято решение избавиться от libquicktime и передать все её функции ffmpeg
Личный испытательный полигон Einar Rünkaru ".. does not use libquicktime for rendering `QuickTime for Linux` from december 2015 .. I did replacing funtionality of quicktime with other means.."
По поводу возможности использования FDK_AAC (libfdk-aac)
" ..As ffmpeg supports this, it is possible that it will be supported automatically when ffmpeg is linked to suitable library .. "
"..Though Cinelerra is linked with system libjpeg it heavily depended on quicktime - this was the reason of crash on certain jpegs.."
Все эти изменения будут портированы в main.git Конечной целью проекта заявлен полный переход программы на работу с сиcтемным (внешним) ffmpeg. Поскольку некоторые дистрибутивы не имеют ffmpeg, использование internal ffmpeg будет оставлено в качестве опции.
.. I was just wondering what the strategy will be for the new ffmpeg:
1. "Branch and embed", similarly to the current situation: Take version from upstream and embed into cinelerra-cv's main code ?
2. Link to system-based ffmpeg ?
Final destination is:
a) Link system-based ffmpeg.
b) Optionally configure can clone ffmpeg from ffmpeg.org
UPDATE:
Mon, 9 Apr 2018 Cinelerra-CVE:
Make configure parameter --with-external-ffmpeg work again.
Should work with avlibs of ffmpeg version 2.8 and above
Needs libavformat{internal,os_support}.h headers, what normally are not installed.
UPD. Jan. 2020
External ffmpeg does not work. I discovered that media file handling in Cinelerra conflicts sometimes with ffmpeg. It is rare, but conflict exists. So I am rewriting the rendering part of Cinelerra to get rid of the conflict. The list of enabled formats (containers) is in formattools.C.
UPD.-2019
На настоящий момент проект Cinelerra-CV официально числится как замороженный (c 25.05.2022 г. в РФ, РБ сайт по ссылке доступен только через VPN/proxy). Его главный разработчик Einar Rünkaru продолжает свою работу над Cinelerra-CVE https://github.com/vanakala/cinelerra-cve
Используемая бранчем Cinelerra-CVE internal ffmpeg в дереве исходного кода отныне храниться не будет, но будет клонироваться с source.ffmpeg.org.
Клонированная версия не обновляется автоматически.
Текущее поведение Cinelerra-CVE (речь сейчас о бранче от Einar Rünkaru) таково, что configure производит проверку last commit from ffmpeg branch 2.8 если directory <cinelerra_root>/ffmpeg не существует.
В этом случае (если directory <cinelerra_root>/ffmpeg не существует) configure клонирует последнюю на текущий момент выпущенную версию 2.8.x РЕЛИЗА 2.8 с source.ffmpeg.org в cinelerra-directory.
Если же таковая директория в каталоге исходного кода имеется, то configure не будет делать каких-либо попыток загрузить что-либо.
Это довольно удобно, поскольку предоставляет пользователю возможность самостоятельно выбирать: обновлять ffmpeg или нет.
***
Как будет вести себя Cinelerra-CVE, если source.ffmpeg.org выпустит релиз новой stable version ffmpeg (например 2.9-stable) ?
Будет ли программа автоматически загружать в ходе компиляции новую версию ffmpeg 2.9-stable или Cinelerra-CVE будет работать со старой версией 2.8 ?
Вероятно существуют изменения API между 2.8 и 2.9. Cinelerra-CVE может перейти к использованию версии 2.9, если в её git произведены и протестированы (если таковые имеются) необходимые для этого изменения. Ни configure, ни дальнейшая компиляция не обновляют автоматически версию FFmpeg. Пользователь может удалить каталог FFmpeg из каталога исходного кода Cinelerra-CVE - в этом случае текущая версия FFmpeg 2.8.x будет клонирована при конфигурировании.
***
Предположим, что компания source.ffmpeg.org выпустила новый стабильный релиз ffmpeg - 2.9-stable.
В это время пользователь идёт и удаляет каталог исходных кодов /home/user/builds/cin-cve а затем производит `git clone` или удаляет только каталог ffmpeg (/home/user/builds/cin-cve/ffmpeg) из каталога исходного кода cinelerra-cve
В этом случае будет клонирована текущая версия ffmpeg. Но какая: 2.8.x-stable или 2.9-stable ?
Если это происходит после того, как в einar/cinelerra.git произведены необходимые изменения для перехода на новую версию, и пользователь выполняет `git pull`, configure клонирует 2.9.x
Если в Einar/cinelerra.git необходимые изменения для перехода на новую версию не производились, configure клонирует 2.8.x
***
Предположим, что компания source.ffmpeg.org выпустила новую стабильную версию ffmpeg - 2.9-stable.
В это время в einar/cinelerra.git произведены необходимые изменения для перехода на новую версию.
У пользователя в каталоге /home/user/builds/cin-cve/ffmpeg находится 2.8.x
Пользователь, не удаляя каталог /home/user/builds/cin-cve/ffmpeg , выполняет git clone .. ./autogen ./configure
В этом случае новая 2.9-stable клонирована не будет.
configure клонирует 2.8.x и компиляция программы произойдёт с 2.8.x
----------------------------------------------------------------------------------
Если Вы конфигурируете с external ffmpeg, ничего не загружается.
В настоящий момент компиляция с external ffmpeg не поддерживается, хотя опция и существует.
По завершении работы над интеграций 2.8 планируется поддержка и компиляции с external ffmpeg
Версии FFmpeg, которые не поддерживаются программой внутри, не будут поддерживаться и извне.
Опытный пользователь имеет возможность самостоятельно провести upgrade ffmpeg, если считает это необходимым. Пользователь может загрузить любую версию ffmpeg и поместить её в <cinelerra_root>/ffmpeg. Это не приведёт к конфликтам с configure.
<cinelerra_root>/.configure должно быть запущено после изменений FFmpeg, так как команда configure производит конфигурирование (настройку) internal FFmpeg. То есть исходный код ffmpeg должен быть размещен в cinelerra директории прежде, чем будет выполнено configure.
Пользователь должен знать, что компиляция cinelerra-cve с таким custom (пользовательским) ffmpeg может потерпеть неудачу, ибо изменения api происходят относительно часто.
На настоящий момент cinelerra-cv использует ffmpeg libs для mp4, h264 codecs, WMA decoding и AC3 encoding. Другой вопрос как это работает ..
Проблемы с h264.mp4, с AAC вызваны тем, что:
".. the current quicktime is incompatible with the latest libx264. Seems that initialization is not right. Fixing libquicktime means complete rewrite of it. .."
".. Which AAC-encoder is used by CVE ?
External libfaac. libfaac is used through quicktime what has its own quirks."
Поэтому принято решение избавиться от libquicktime и передать все её функции ffmpeg
Личный испытательный полигон Einar Rünkaru ".. does not use libquicktime for rendering `QuickTime for Linux` from december 2015 .. I did replacing funtionality of quicktime with other means.."
По поводу возможности использования FDK_AAC (libfdk-aac)
" ..As ffmpeg supports this, it is possible that it will be supported automatically when ffmpeg is linked to suitable library .. "
"..Though Cinelerra is linked with system libjpeg it heavily depended on quicktime - this was the reason of crash on certain jpegs.."
.. I was just wondering what the strategy will be for the new ffmpeg:
1. "Branch and embed", similarly to the current situation: Take version from upstream and embed into cinelerra-cv's main code ?
2. Link to system-based ffmpeg ?
Final destination is:
a) Link system-based ffmpeg.
b) Optionally configure can clone ffmpeg from ffmpeg.org
git clone https://github.com/vanakala/cinelerra-cve.git
git pull
./autogen.sh
./configure --prefix=/opt/cv_einar --enable-nonfree --with-buildinfo=git/recompile
make
make install
UPDATE:
Mon, 9 Apr 2018 Cinelerra-CVE:
Make configure parameter --with-external-ffmpeg work again.
Should work with avlibs of ffmpeg version 2.8 and above
Needs libavformat{internal,os_support}.h headers, what normally are not installed.
UPD. Jan. 2020
External ffmpeg does not work. I discovered that media file handling in Cinelerra conflicts sometimes with ffmpeg. It is rare, but conflict exists. So I am rewriting the rendering part of Cinelerra to get rid of the conflict. The list of enabled formats (containers) is in formattools.C.
UPD.-2019
На настоящий момент проект Cinelerra-CV официально числится как замороженный (c 25.05.2022 г. в РФ, РБ сайт по ссылке доступен только через VPN/proxy). Его главный разработчик Einar Rünkaru продолжает свою работу над Cinelerra-CVE https://github.com/vanakala/cinelerra-cve
Cinelerra-CVE - это форк Cinelerra-CV. Краткое описание смотрите в этом блоге здесь. Узнать больше о Cinelerra-CVE можно, посетив новый официальный сайт Cinelerra-CV http://cinelerra-cv.wikidot.com/ (c 25.05.2022 г. в РФ, РБ сайт доступен только через VPN/proxy)
Комментариев нет:
Отправить комментарий