Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Кодирование HEVC в контейнер mkv  (Прочитано 6269 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн sdf

  • Автор темы
  • Участник
  • *
  • Сообщений: 115
    • Просмотр профиля
Кодирование HEVC в контейнер mkv
« : 30 Декабря 2013, 18:52:07 »
На текущий момент времени в ffmpeg отсутствует поддержка кодирования в стандарте HEVC, только декодирование и то не всех видео.
Моожет  кто знает какие есть энкодеры или как собрать и что для этого потребуется. Дело в том, что некоторые (возможно в Win) кодируют целые фильмы в этом формате (на некоторых сайтах уже есть раздачи), а такие проекты как openHEVC & x265 позволяют кодировать только из тестовых роликов, которые меня мало интересуют, ибо и так есть документы с результатами тестов.
Lubuntu 16.04, Intel Xeon L5420, Sapphire's HD 5750, 4 GB DDR2 800MHz,HDD 250GB
Lenovo G565

Оффлайн arch!ver

  • Старожил
  • *
  • Сообщений: 1260
    • Просмотр профиля
Re: Кодирование HEVC в контейнер mkv
« Ответ #1 : 30 Декабря 2013, 19:21:36 »
sdf,
Это новый, ещё довольнотаки сырой, тестовый формат... Когда его допилят окончательно - его поддержка возможно станет заявлена везде...
А на данном этапе - не торопитесь с этим :) - x264 при хороших настройках тоже даёт очень неплохие результаты...
К тому же, ещё толком неизвестно лицензионное предпочтение данного формата...

Точнее вам смогут ответить видимо здесь: http://ffmpeg.gusari.org/
« Последнее редактирование: 30 Декабря 2013, 19:26:38 от archiver »

Оффлайн sdf

  • Автор темы
  • Участник
  • *
  • Сообщений: 115
    • Просмотр профиля
Re: Кодирование HEVC в контейнер mkv
« Ответ #2 : 31 Декабря 2013, 15:44:00 »
Сырым он был где-то в середине 2013-го, а сейчас это уже стабильный кодек, и на данном этапе идут улучшения в плане оптимизации под различные SIMD x86 и запиливание новых функций, добавляемых в новые версии энкодера HM1x, скажу даже больше теперь x264 более не развивается, а только устраняются баги последние полгода, правда сколько разработчиков, которые учавствовали в разработке энкодера x264 перешли на новый проект мне не известно. Один из разработчиков x265 на форумах doom9 сказал, что в их планах переписать оригинальный энкодер HM на 90% и часть будет взята именно из разработок x264, ведь в нем за время разработки появилось много функций, которых нет в оригинальном энкодере H.264 и энкодер x264 2008 и 2013 года сильно отличается (уже сравнивал и даже больше, новый x265 уже как 3-4 месяца превосходит x264, но требует в 2-3 раза больше времени при сопоставимом качестве и при меньшем на 20-45% битрейте, даже при разрешении 480p)
Спасибо за ссылку, попытаю счастья там.
Lubuntu 16.04, Intel Xeon L5420, Sapphire's HD 5750, 4 GB DDR2 800MHz,HDD 250GB
Lenovo G565

Оффлайн arch!ver

  • Старожил
  • *
  • Сообщений: 1260
    • Просмотр профиля
Re: Кодирование HEVC в контейнер mkv
« Ответ #3 : 31 Декабря 2013, 23:08:10 »
sdf,
Середина 2013 и конец 2013 не такой большой срок для того чтобы кодек стал повсеместным...
Обычно как минимум год уходит на обкатку и допилы - "уже не сырого" ПО...
Вы где нибудь видели ссылки и статьи в сети, где предлагается свободно скачать HEVC (включая сорцы) и использовать для своих нужд? - Я нет...
А это означает только одно - кодек находится вне свободного доступа, или в ограниченном доступе, - т.е период отладки продолжается...

Оффлайн sdf

  • Автор темы
  • Участник
  • *
  • Сообщений: 115
    • Просмотр профиля
Re: Кодирование HEVC в контейнер mkv
« Ответ #4 : 01 Января 2014, 20:09:23 »
На том же форуме сейчас стоит вопрос, что следует добавлять в новый энкодер и какие фичи будут давать качественную картинку при приемлемом уровне времени на кодирование, на текущий момент кодек превосходит х264 на низких битрейтах при сильном сжатии, на высоких картинка хуже и более мыльная. Про стабильность я имел ввиду, что энкодер не падает внезапно при кодировании, большая часть опций работает корректно. В MeGUI у меня вышло перекодировать небольшое видео, но он как и многие GUI не дает качественную картинку и часто промахивается на сложных сценах. И пока еще в кодере нет психовизуальных опций, вроде Psy RDO, который был в x264.
На основе MeGUI, как я понимаю необходимо собрать ffmpeg c x265, есть ли ссылки как собрать и какие опции следует вводить при кодировании? Видимо ffmpeg на лету что-ли переводит картинку в lossless, которую и воспринимает внешний энкодер.
PS: Я согласен в том, что на доработку уйдет как минимум два года и в сети он получит распространение только  в 2015 году. По аналогии с H.264
« Последнее редактирование: 01 Января 2014, 20:16:15 от sdf »
Lubuntu 16.04, Intel Xeon L5420, Sapphire's HD 5750, 4 GB DDR2 800MHz,HDD 250GB
Lenovo G565

Оффлайн arch!ver

  • Старожил
  • *
  • Сообщений: 1260
    • Просмотр профиля
Re: Кодирование HEVC в контейнер mkv
« Ответ #5 : 01 Января 2014, 22:01:02 »
sdf,
Если ещё короче, то сами разработчики говорят, что: "Судя по всему, кодек будет внедрён в повсеместное использование в ближайшие несколько лет"...
Так, что однозначно - торопиться ещё рано с этим...

С Новым Годом Вас! С Новым Творчеством:)

Psy RDO, который был в x264.

Честно говоря, Psy RDO - совсем не обязательная функция, баловство по большей мере :) Необходимость данной функции оправдывает себя лишь в 30% специфических случаев... В остальных - смело можно обойтись без неё ;)
« Последнее редактирование: 01 Января 2014, 22:11:22 от archiver »

Оффлайн y_tranquillity

  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: Кодирование HEVC в контейнер mkv
« Ответ #6 : 29 Июня 2014, 11:59:07 »
Да без проблем. Я себе скомпилил ffmpeg с поддержкой x265
Собирал по инструкции, выложенной на сайте ffmpeg
кроме конечно самого кодека x265 все кодеки компилировал со статическими библиотеками, а 265 пришлось компилить с динамической. Незнаю почему, но при сборке только статической библиотеки конфигуратор ffmpeg ни за какие ковришки не желает ее обнаруживать в общем чего я сделал.
#!/bin/sh
#создание дирректории для компиляции программы FFmpeg
mkdir $HOME/bin/source

#Переход в дирректорию для работы
cd $HOME/bin/source

#Получение исходного кода для компиляции кодека x264
git clone --depth 1 git://git.videolan.org/x264.git

#Переход в папку x264 для работы с паетом
cd x264

#конфигурация исходных кодов для последующей сборки
./configure --prefix=$HOME/bin --bindir=$HOME/bin --libdir=$HOME/bin/lib --enable-static --bit-depth=10

#Компиляция программ
make

#Установка программ
make install

#Очистка исходных кодов
make distclean

#Переход в рабочую директорию для сбоки следующего пакета
cd $HOME/bin/source

#Получение исходных кодов для компиляции кодека x265
hg clone http://hg.videolan.org/x265

#Переход в папку с исходными кодами для работы с пакетом
cd x265

#Конфигурация исходных кодов для последующей сборки
cmake -D BIN_INSTALL_DIR:STRING=$HOME/bin -D CHECKED_BUILD:BOOL=OFF -D CMAKE_BUILD_TYPE:STRING=Release -D CMAKE_INSTALL_PREFIX:PATH=$HOME/bin -D ENABLE_ASSEMBLY:BOOL=ON -D ENABLE_CLI:BOOL=ON -D ENABLE_PPA:BOOL=OFF -D ENABLE_SHARED:BOOL=ON -D ENABLE_TESTS:BOOL=OFF -D HIGH_BIT_DEPTH:BOOL=ON -D LIB_INSTALL_DIR:STRING=lib -D WARNINGS_AS_ERRORS:BOOL=OFF -D YASM_EXECUTABLE:FILEPATH=/usr/bin/yasm source

#Компиляция программ
make

#Установка программ
make install

#Переход в рабочую директорию для сбоки следующего пакета
cd $HOME/bin/source

#Получение исходных кодов для компиляции кодека fdk-aac
git clone --depth 1 git://git.code.sf.net/p/opencore-amr/fdk-aac

#Переход в папку с исходными кодами для работы с пакетом
cd fdk-aac

#Конфигурация исходных кодов для последующей сборки
autoreconf -fiv
./configure --prefix=$HOME/bin --bindir=$HOME/bin --disable-shared

#Компиляция программ
make

#Установка программ
make install

#Очистка исходных кодов
make distclean

#Переход в рабочую директорию для сбоки следующего пакета
cd $HOME/bin/source

#Получение исходных кодов для компиляции FFmpeg
git clone --depth 1 git://source.ffmpeg.org/ffmpeg

#Переход в папку с исходными кодами для работы с пакетом
cd ffmpeg

#Задание переменных для работы
PKG_CONFIG_PATH="$HOME/bin/lib/pkgconfig"
export PKG_CONFIG_PATH

#Конфигурация исходных кодов для последующей сборки
./configure --prefix=$HOME/bin --extra-cflags=-I$HOME/bin/include --extra-ldflags=-L$HOME/bin/lib --bindir=$HOME/bin --extra-libs=-ldl --enable-version3 --enable-gpl --enable-postproc --enable-libass --enable-libfaac --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxvid --enable-nonfree --enable-x11grab

#Компиляция программ
make

#Установка программ
make install

#Очистка исходных кодов
make distclean

hash -r

после чего я создал ссылочку для библиотеки в папке /usr/lib следующей коммандой

sudo ln $HOME/bin/lib/libx265.so.1.1 /usr/lib/libx265.so.24

и у меня все заработало

(Нажмите, чтобы показать/скрыть)
Все программные файлы расположены в домашней папке в директории bin

Нашел способ подключения статической библиотеки. Конфигурацию x265 выполняем со следующими параметрами:
cmake -D BIN_INSTALL_DIR:STRING=$HOME/bin -D CHECKED_BUILD:BOOL=OFF -D CMAKE_BUILD_TYPE:STRING=Release -D CMAKE_INSTALL_PREFIX:PATH=$HOME/bin -D ENABLE_ASSEMBLY:BOOL=ON -D ENABLE_CLI:BOOL=ON -D ENABLE_PPA:BOOL=OFF -D ENABLE_SHARED:BOOL=OFF -D ENABLE_TESTS:BOOL=OFF -D HIGH_BIT_DEPTH:BOOL=ON -D LIB_INSTALL_DIR:STRING=lib -D WARNINGS_AS_ERRORS:BOOL=OFF -D YASM_EXECUTABLE:FILEPATH=/usr/bin/yasm source

Выполняем сборку и установку после чего редактируем файл $PREFIX/lib/pkgconfig/x265.pc

Перезаписываем в нем следующие строки:

Libs: -L${libdir} -lx265

записываем в следующем виде:

Libs: -L${libdir} -lx265 -lstdc++

А строку:

Libs.private: -lstdc++ -lm -lrt

в виде:

Libs.private: -lm -lrt

После чего и выполняем сборку и компиляцию ffmpeg
« Последнее редактирование: 18 Июля 2014, 23:09:08 от y_tranquillity »

 

Страница сгенерирована за 0.072 секунд. Запросов: 25.