Как скомпилировать ffmpeg через Alchemy GCC? - PullRequest
0 голосов
/ 11 июня 2011

Итак, я создал файл конфигурации ffmpeg, который делает его чистым C (независимым от платформы, но только теоретически)

Итак, моя конфигурация проста (проверено 0.6.1,0.6.3):

./configure  --disable-doc  --disable-ffplay --disable-ffprobe  --disable-ffserver    --disable-avdevice   --disable-avfilter   --disable-pthreads  --disable-everything --enable-muxer=flv --enable-encoder=flv --enable-encoder=h263  --disable-mmx  --disable-shared   --prefix=bin/  --disable-protocols --disable-network --disable-optimizations --disable-debug  --disable-asm --disable-stripping

Компиляция этого в Linux разрешится в 4 библиотеках с общим размером 1 МБ.

Но мне нужно скомпилировать ffmpeg с помощью собственного компилятора (аналог gcc с открытым исходным кодом под названием Adobe Alchemy , позволяетскомпилировать C / c ++ во Flash)

Это дает мне ошибки почти в каждом файле во время стандартного запуска. Make:

Array @ARGV missing the @ in argument 1 of shift() at /home/rupert/Downloads/alchemy-ubuntu-v0.5a/achacks/gcc line 218.
cc1: error: unrecognized command line option "-Wtype-limits"
cc1: error: unrecognized command line option "-fno-signed-zeros"

Так что же мне делать - как скомпилировать ffmpeg (хотя бы наименьшийчасть этого) через алхимию?

Обновление Если бы мы исправили эти ошибки вручную (2 в configure.mak и один в alchemy gcc), мы получили бы действительногрязный и длинный вывод, как:

> $ make -w install

make: Entering directory `/home/rupert/Downloads/ffmpeg-0.6.1'
AR  libavformat/libavformat.a
llvm-ld: error opening 'avformat/libavformat.l.bc' for writing!
llvm-ranlib: Archive file does not exist
INSTALL libavformat/libavformat.a
install: cannot stat `libavformat/libavformat.a': No such file or directory
llvm-ranlib: Archive file does not exist
AR  libavcodec/libavcodec.a
llvm-ld: error opening 'avcodec/libavcodec.l.bc' for writing!
llvm-ranlib: Archive file does not exist
INSTALL libavcodec/libavcodec.a
install: cannot stat `libavcodec/libavcodec.a': No such file or directory
llvm-ranlib: Archive file does not exist
AR  libswscale/libswscale.a
llvm-ld: error opening 'swscale/libswscale.l.bc' for writing!
llvm-ranlib: Archive file does not exist
INSTALL libswscale/libswscale.a
install: cannot stat `libswscale/libswscale.a': No such file or directory
llvm-ranlib: Archive file does not exist
AR  libavutil/libavutil.a
llvm-ld: error opening 'avutil/libavutil.l.bc' for writing!
llvm-ranlib: Archive file does not exist
INSTALL libavutil/libavutil.a
install: cannot stat `libavutil/libavutil.a': No such file or directory
llvm-ranlib: Archive file does not exist
INSTALL libavformat/avformat.h
INSTALL libavformat/avio.h
INSTALL libavformat/libavformat.pc
INSTALL libavcodec/avcodec.h
INSTALL libavcodec/avfft.h
INSTALL libavcodec/dxva2.h
INSTALL libavcodec/opt.h
INSTALL libavcodec/vaapi.h
INSTALL libavcodec/vdpau.h
INSTALL libavcodec/xvmc.h
INSTALL libavcodec/libavcodec.pc
INSTALL libswscale/swscale.h
INSTALL libswscale/libswscale.pc
INSTALL libavutil/adler32.h
INSTALL libavutil/attributes.h
INSTALL libavutil/avstring.h
INSTALL libavutil/avutil.h
INSTALL libavutil/base64.h
INSTALL libavutil/common.h
INSTALL libavutil/crc.h
INSTALL libavutil/error.h
INSTALL libavutil/fifo.h
INSTALL libavutil/intfloat_readwrite.h
INSTALL libavutil/log.h
INSTALL libavutil/lzo.h
INSTALL libavutil/mathematics.h
INSTALL libavutil/md5.h
INSTALL libavutil/mem.h
INSTALL libavutil/pixdesc.h
INSTALL libavutil/pixfmt.h
INSTALL libavutil/rational.h
INSTALL libavutil/sha1.h
INSTALL libavutil/avconfig.h
INSTALL libavutil/libavutil.pc
LD  ffmpeg_g
WARNING: While resolving call to function 'main' arguments were dropped!
Cannot yet select: 0x8e707e8: i32 = ConstantPool < i64 6881500230622117888> 0
llc[0x86c7dec]
make: *** [ffmpeg_g] Error 6
make: Leaving directory `/home/rupert/Downloads/ffmpeg-0.6.1'

Ответы [ 3 ]

1 голос
/ 19 марта 2013

FlasCC (Alchemy 2) отлично компилирует ffmpeg - для тех, кто пытается, в основном вам нужно скачать исходный код ffmpeg. Перейдите в каталог ffmpeg, выполните

PATH=/cygdrive/c/PATH_TO_FLASCC/sdk/usr/bin:$PATH ./configure --prefix=/cygdrive/c/PATH_TO_FLASCC/sdk/usr

Теперь хорошо, если вы запустите configure с некоторыми ограничениями, чтобы он не включал в себя все кодеки или фильтры, которые есть (требуется много времени). Дополнительные параметры конфигурации из моего варианта использования:

--disable-ffserver --disable-everything --enable-filter=scale --enable-demuxer=flv --enable-muxer=ogg --enable-protocol=file --disable-network --disable-debug --disable-yasm --disable-asm --disable-stripping --enable-memalign-hack --disable-shared --enable-decoder=flashsv --enable-encoder=mpeg1video --enable-encoder=libtheora --enable-encoder=libvorbis --enable-libtheora --enable-libvorbis

Важно, чтобы --disable-everything, а затем включить только то, что вам нужно.

Затем запустите ./make и ./make install (с PATH перед этими командами), он должен произвести и установить библиотеки ffmpeg.

Когда я создавал тестовый SWF, все, казалось, работало. Я использовал их (модифицированный) образец, где они кодируют 25 фиктивных кадров MPEG. По крайней мере, я отслеживаю процесс кодирования и вижу, как кодируются кадры.

SWC - проблема, хотя, если вы хотите использовать это. Я получаю странные ошибки - сначала он не может найти кодек (получил NULL при использовании функции поиска кодека), когда я указал его по имени, он не может выделить контекст кодека (также получил NULL). Затем я скомпилировал его в чистом Flex, и он справился с этим, но не смог открыть кодек (в основном все это функции библиотеки av_ что-то). Я действительно не понимаю, почему SWC не работает с ними, так как с emit-swf все работает отлично.

Может быть, кто-то может осветить различия SWC / SWF.

0 голосов
/ 08 ноября 2012

Попробуйте это с новым компилятором flash c Adobe Flash cc .Я надеюсь, что это может помочь вам скомпилировать ffmpeg во флэш-памяти.

0 голосов
/ 12 июня 2011

Об этом на форумах Adobe шла дискуссия здесь .Это кажется довольно сложным, хотя некоторые люди, похоже, добились определенного прогресса.

...