2014-01-16 1 views
1

Я пытаюсь построить x264 от источника на Ubuntu 32bit для того, чтобы преобразовать последовательность JPG или PNG изображений в mp4 видео: x264 site, sample imagesx264 Настройка связывание и строительные проблемы

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

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

x264dist является переименовано именем двоичного файла, я загрузить с сайта.

Однако, когда я захватить источник и компилировать с простой Configure:

$ ./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 lib в Javascript, используя Emscripten. Было решение с использованием FFmpeg, но мне кажется, что мне не нужна вся библиотека обработки видео, а только простой кодек H264. Поэтому мне нужно решить проблему configure/compile/linking, чтобы правильно ее портировать.

Возможно похожи https://stackoverflow.com/questions/19445075/how-to-configure-x264-build-before-running-make-on-os-x

ответ

3

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

Для компиляции x264 с lavf вам нужно иметь FFmpeg/libav библиотеки установлены и быть в ССАГПЗ пути поиска или вам нужно будет предоставить путь для них в конфигурировании с помощью что-то вроде этого:

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

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

+0

Большое спасибо за информативный ответ. Я установил последний libav из источника. Затем перестройте все это.В результате теперь есть бинарные файлы размером 46 Мб x264. Он способен создавать последовательность изображений. Однако он слишком велик по сравнению с официальной сборкой 3.5Mb. Почему это так? Я принимаю ваш ответ. Но есть ли способ получить что-то близкое к официальной версии 3.5Mb? – Pie

+0

Сначала убедитесь, что вы скомпилировали ffmpeg/libav без отладочной информации (--disable-debug) или разделите двоичный файл. Также официальные сборки x264 сжимаются с помощью UPX iirc. – nobody555

+0

Отлично! Я попробовал, и теперь двоичные файлы уменьшены до 11 Мб (все еще немного выше официального). Затем я использую l-smash для mp4 (люди используют gpac, но мне не удалось). Все хорошо. Извините за то, что вы здесь, но что вы подразумеваете под «strip the binary»? – Pie

0

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

+0

На самом деле я пробовал либо один, либо оба, либо ни один из них, и все они приводят к использованию 1.5Mb/1.6Mb и неиспользуемых двоичных файлов. (не может использовать ничего, кроме чего-то вроде ./x264 --help.) – Pie