查看FFmpeg开发指南的源代码
←
FFmpeg开发指南
跳转至:
导航
,
搜索
因为以下原因,你没有权限编辑本页:
你刚才请求的操作只对属于该用户组的用户开放:
用户
您可以查看并复制此页面的源代码:
==下载 FFmpeg== :在 linux 环境下操作。 :*1. 进入 sylixos 工作空间: cd /home/user/sylixos_workspace :*2. 下载 FFmpeg: git config --global core.autocrlf false git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg :*3. 进入 FFmpeg 目录: cd ffmpeg ==修改 configure== :*1. 屏蔽 check_cflags -Wredundant-decls 避免过多报警。 :*2. 屏蔽 check_cflags -Wstrict-prototypes 避免过多报警。 :*3. 修改 if test_ldflags -Wl,--version-script,$TMPV; then 为 if false ; then :*4. 修改 ln_s="ln -s -f" 为 ln_s="cp -p" (备注:如果在 windows 下编译,缺少 ln 工具,使用 cp 代替) :*5. 屏蔽 die "C compiler test failed." 跳过编译器测试失败。 ==增加环境变量== :编译好的 SylixOS Base 工程路径根据实际情况设置: export SYLIXOS_BASE_PATH=/home/user/sylixos_workspace/sylixos-base '''开源版工具链环境变量''' :*armv4 系列处理器环境变量: export CFLAGS="-mcpu=arm920t -fPIC -DSYLIXOS \ -DSYLIXOS_LIB -fsigned-char -fno-short-enums -I$SYLIXOS_BASE_PATH/libsylixos/SylixOS -I$SYLIXOS_BASE_PATH/libsylixos/SylixOS/include \ -I$SYLIXOS_BASE_PATH/libsylixos/SylixOS/include/inet -I$SYLIXOS_BASE_PATH/libcextern/libcextern/include" export CXXFLAGS=$CFLAGS export LDFLAGS="-mcpu=arm920t -fPIC -shared -L$SYLIXOS_BASE_PATH/libsylixos/Debug -L$SYLIXOS_BASE_PATH/libcextern/Debug" export ASFLAGS="-mcpu=arm920t -fPIC -x assembler-with-cpp" '''商业版工具链环境变量''' :*armv7-a 系列处理器环境变量: export CFLAGS="-march=armv7-a -mcpu=cortex-a8 -mfloat-abi=softfp -mfpu=neon -fPIC -DSYLIXOS \ -DSYLIXOS_LIB -fsigned-char -fno-short-enums -I$SYLIXOS_BASE_PATH/libsylixos/SylixOS -I$SYLIXOS_BASE_PATH/libsylixos/SylixOS/include \ -I$SYLIXOS_BASE_PATH/libsylixos/SylixOS/include/inet -I$SYLIXOS_BASE_PATH/libcextern/libcextern/include" export CXXFLAGS=$CFLAGS export LDFLAGS="-march=armv7-a -mcpu=cortex-a8 -mfloat-abi=softfp -mfpu=neon -fPIC -shared -L$SYLIXOS_BASE_PATH/libsylixos/Debug -L$SYLIXOS_BASE_PATH/libcextern/Debug" export ASFLAGS="-march=armv7-a -mcpu=cortex-a8 -mfloat-abi=softfp -mfpu=neon -fPIC -x assembler-with-cpp" :*armv4 系列处理器环境变量: export CFLAGS="-mcpu=arm920t -fPIC -DSYLIXOS \ -DSYLIXOS_LIB -fsigned-char -fno-short-enums -I$SYLIXOS_BASE_PATH/libsylixos/SylixOS -I$SYLIXOS_BASE_PATH/libsylixos/SylixOS/include \ -I$SYLIXOS_BASE_PATH/libsylixos/SylixOS/include/inet -I$SYLIXOS_BASE_PATH/libcextern/libcextern/include" export CXXFLAGS=$CFLAGS export LDFLAGS="-mcpu=arm920t -fPIC -shared -L$SYLIXOS_BASE_PATH/libsylixos/Debug -L$SYLIXOS_BASE_PATH/libcextern/Debug" export ASFLAGS="-mcpu=arm920t -fPIC -x assembler-with-cpp" ==配置 FFmpeg== '''开源版工具链配置''' :*armv4 系列处理器配置: ./configure --arch=armv4 --cpu=arm920t --target-os=none --cross-prefix=arm-none-eabi- \ --enable-shared --disable-static --disable-doc \ --extra-libs='-nostdlib -lcextern -ldsohandle -lstdc++ -lvpmpdm -lm -lgcc' --prefix=/opt/arm-sylixos-ffmpeg '''商业版工具链配置''' :*armv7-a 系列处理器配置: ./configure --arch=armv7-a --cpu=cortex-a8 --target-os=none --cross-prefix=arm-sylixos-eabi- \ --enable-shared --disable-static --disable-doc \ --extra-libs='-nostdlib -lcextern -ldsohandle -lstdc++ -lvpmpdm -lm -lgcc' --prefix=/opt/armv7a-sylixos-ffmpeg :*armv4 系列处理器配置: ./configure --arch=armv4 --cpu=arm920t --target-os=none --cross-prefix=arm-sylixos-eabi- \ --enable-shared --disable-static --disable-doc \ --extra-libs='-nostdlib -ldsohandle -lstdc++ -lvpmpdm -lm -lgcc' --prefix=/opt/arm-sylixos-ffmpeg :如果出现 bash: ./configure: /bin/sh^M: bad interpreter: No such file or directory 错误,请用 vim 将 configure 的换行符修改为 unix 格式,vim 命令为 :set ff=unix。 :将会生成 config.h config.mak doc/config.texi libavutil/avconfig.h 文件。 ==修改 FFmpeg 代码== :*1. config.h 修改: :在文件的末尾增加如下代码: #undef HAVE_IO_H #define HAVE_IO_H 0 #undef HAVE_FLT_LIM #define HAVE_FLT_LIM 0 #undef HAVE_FORK #define HAVE_FORK 0 #undef HAVE_GLOB #define HAVE_GLOB 0 #undef HAVE_MACH_ABSOLUTE_TIME #define HAVE_MACH_ABSOLUTE_TIME 0 #undef HAVE_SYSCTL #define HAVE_SYSCTL 0 /* 增加 closesocket 定义 */ #define closesocket close :*2. ./libavutil/atomic_gcc.h 修改: #ifdef SYLIXOS #define avpriv_atomic_int_get atomic_int_get_gcc static inline int atomic_int_get_gcc(volatile int *ptr) { INTREG reg; int val; API_AtomicLock(®); val = *ptr; API_AtomicUnlock(reg); return val; } #define avpriv_atomic_int_set atomic_int_set_gcc static inline void atomic_int_set_gcc(volatile int *ptr, int val) { INTREG reg; API_AtomicLock(®); *ptr = val; API_AtomicUnlock(reg); } #define avpriv_atomic_int_add_and_fetch atomic_int_add_and_fetch_gcc static inline int atomic_int_add_and_fetch_gcc(volatile int *ptr, int inc) { INTREG reg; int val; API_AtomicLock(®); val = *ptr = *ptr + inc; API_AtomicUnlock(reg); return val; } #define avpriv_atomic_ptr_cas atomic_ptr_cas_gcc static inline void *atomic_ptr_cas_gcc(void * volatile *ptr, void *oldval, void *newval) { INTREG reg; void *val; API_AtomicLock(®); val = *ptr; if (val == oldval) { *ptr = newval; } API_AtomicUnlock(reg); return val; } #else 原有的函数定义,略。 #endif ==编译 FFmpeg== make ==安装 FFmpeg == ---- :'''安装 FFmpeg 需要在 root 用户下''',输入 su 切换到 root 用户: su :'''再修改环境变量 PATH,不然 make install 的结果会非常庞大(因为找不到 arm-none-eabi-strip)''': export PATH=/usr/lib/gcc-arm-none-eabi/bin:$PATH :输入如下命令以安装 FFmpeg: make install :会安装到配置时指定的目录 /opt/arm-sylixos-ffmpeg 里。
返回
FFmpeg开发指南
。
个人工具
登录
名字空间
页面
讨论
变种
查看
阅读
查看源代码
查看历史
操作
搜索
导航
首页
最近更改
随机页面
工具
链入页面
相关更改
特殊页面