x264 настроить проблемы с компоновкой и сборкой

Я пытаюсь собрать x264 из исходного кода на Ubuntu 32bit, чтобы преобразовать последовательность изображений jpg или png в видео mp4: сайт x264, примеры изображений

Загруженные двоичные файлы могут преобразовать последовательность в видео mkv (или несколько других форматов), когда я запускаю эту команду:

./x264dist ~/Dev/x264emp/img/FLYOVER%4d.JPG -o abc.mkv

x264dist — это переименованное имя бинарника, который я скачиваю с сайта.

Однако, когда я беру исходный код и компилирую с простой настройкой:

$ ./configure --enable-shared --enable-static --enable-pic

platform:      X86
system:        LINUX
cli:           yes
libx264:       internal
shared:        yes
static:        yes
asm:           yes
interlaced:    yes
avs:           avxsynth
lavf:          no
ffms:          no
mp4:           no
gpl:           yes
thread:        posix
opencl:        yes
filters:       crop select_every 
debug:         no
gprof:         no
strip:         no
PIC:           yes
bit depth:     8
chroma format: all

затем $ make. Затем я использую двоичные файлы для запуска той же команды, что и выше, но есть эта ошибка:

./x264 ~/Dev/x264emp/img/FLYOVER%4d.JPG -o abc.mkv
raw [error]: raw input requires a resolution.
x264 [error]: could not open input file `/home/tmd/Dev/x264emp/img/FLYOVER%4d.JPG' via any method!

Кажется, что он вообще не может прочитать ввод. Но, по крайней мере, я все еще могу запустить --help на этих двоичных файлах.

Затем я понял, что скачанных двоичных файлов 3.5Mb, в то время как моя собственная компиляция приводит к 1.5Mb двоичным файлам.

Поэтому я просто хочу знать, какие конфигурации сборки используются официальной сборкой, и/или есть ли какая-либо зависимость, которую я упускаю, что приводит к этой проблеме.

Причина, по которой я пытаюсь собрать себя, заключается в том, что я хочу перенести библиотеку x264 в Javascript с помощью Emscripten. Было решение с использованием FFmpeg, но, похоже, мне не нужна вся библиотека обработки видео, а только простой кодек H264. Поэтому мне нужно решить проблему настройки/компиляции/связывания, чтобы правильно портировать ее.

Возможно, аналогично https://stackoverflow.com/questions/19445075/how-to-configure-x264-build-before-running-make-on-os-x


person Pie    schedule 16.01.2014    source источник


Ответы (2)


Он не может прочитать ваш ввод, потому что вы скомпилировали его без поддержки lavf: lavf: no, поэтому он может принимать только необработанные файлы yuv и y4m в качестве входных данных (я сомневаюсь, что у вас установлен avxsynth).

Чтобы скомпилировать x264 с помощью lavf, вам необходимо установить библиотеки ffmpeg/libav и найти путь поиска gcc, или вам нужно будет указать путь для них в конфигурации, используя что-то вроде этого:

--extra-cflags="-I/usr/local/include" --extra-ldflags="-L/usr/local/lib"

Также вам может понадобиться скомпилировать ffmpeg/libav самостоятельно, потому что x264 нуждается в достаточном количестве новых библиотек и может отказаться использовать одну из репозиториев предварительной сборки. x264 написан для использования версий из основной ветки ffmpeg/libav и может не работать со стабильными ветками, которым не нужны новые API. Поэтому, если вы считаете, что у вас установлены все необходимые библиотеки, загляните в файл config.log, чтобы узнать, почему x264 отказался с ними связываться.

person nobody555    schedule 16.01.2014
comment
Большое спасибо за информативный ответ. Я установил последнюю версию libav из исходников. Потом все восстановить. Результат теперь 46Mb x264 бинарники. Он умеет строить последовательность изображений. Однако это слишком много по сравнению с официальной сборкой в ​​3,5 МБ. Почему это так? Я принимаю ваш ответ. Но есть ли способ получить что-то близкое к этой 3,5-мегабайтной официальной сборке? - person Pie; 17.01.2014
comment
Сначала убедитесь, что вы скомпилировали ffmpeg/libav без отладочной информации (--disable-debug) или удалите двоичный файл. Также официальные сборки x264 сжаты с помощью UPX iirc. - person nobody555; 17.01.2014
comment
Большой! Попробовал и бинарник теперь урезан до 11Мб (Все же немного выше официального). Затем я использую l-smash для mp4 (люди используют gpac, но я не смог). Дела шли хорошо. Извините за нуб, но что вы подразумеваете под «удалить двоичный файл»? - person Pie; 18.01.2014
comment
Под полосой я подразумеваю использование полосы GNU от binutils или еще один стриптиз. А вот и UPX, если вы тоже не знаете, что это такое. - person nobody555; 18.01.2014

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

person jr-be    schedule 16.01.2014
comment
на самом деле я пробовал либо один, либо оба, либо ни один из них, и все они приводят к 1,5 МБ / 1,6 МБ и непригодным для использования двоичным файлам. (не могу использовать ничего, кроме чего-то вроде ./x264 --help.) - person Pie; 16.01.2014