首页 > 解决方案 > 如何在 yocto 中编译 ffmpeg 以获得可用的二进制文件

问题描述

在我们的 yocto 项目中,SDK 有默认的“poky/meta/recipes-multimedia/ffmpeg/ffmpeg_3.3.3.bb”bb 文件。这是我们的 bbappend 文件 meta-qti-bsp/recipes-multimedia/ffmpeg/ ffmpeg_%.bbappend

    EXTRA_OEMAKE = ""

FILES_${PN} += "/lib/lib*.so.*" FILES_${PN} += "/lib/pkgconfig/*" FILES_${PN}-dev += "/usr/share/*" FILES_${PN}-dev += "/lib/lib*.so"

PACKAGECONFIG = "avdevice avfilter avcodec avformat swresample swscale postproc bzlib gpl theora"

# Support multilib compilation for libav PROVIDES += "${MLPREFIX}libav"

EXTRA_CFLAGS_append += " -fPIC" EXTRA_CFLAGS_append += " ${@ bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', '-mfloat-abi=hard', '', d)}" EXTRA_CFLAGS_append += " ${@ bb.utils.contains('TUNE_FEATURES', 'neon', '-mfpu=neon', '', d)}" EXTRA_CFLAGS_append += " ${@ bb.utils.contains('TUNE_FEATURES', 'armv7a', '-march=armv7-a', '', d)}" EXTRA_CFLAGS_append += " ${@ bb.utils.contains('TUNE_FEATURES', 'cortexa8', '-mtune=cortex-a8', '', d)}"

EXTRA_OECONF_append += " \
    --target-os=linux --sysroot=${STAGING_DIR_TARGET} --arch=${TARGET_ARCH} --disable-mmx \
    --enable-shared --disable-doc --disable-htmlpages --disable-manpages --disable-podpages \
    --disable-txtpages --enable-small --disable-debug --disable-ffserver --disable-ffplay \
    --extra-cflags="${EXTRA_CFLAGS}" --disable-network --disable-zlib \
    --enable-fft --libdir=${base_libdir} --shlibdir=${base_libdir} \
    --enable-muxer=mov --enable-muxer=mp4 --enable-encoders --enable-zlib --enable-encoder=png \
    --prefix=${base_libdir} --incdir=${includedir} \ "

do_install() {
    oe_runmake 'DESTDIR=${D}' install
    # Info dir listing isn't interesting at this point so remove it if it exists.
    if [ -e "${D}${infodir}/dir" ]; then
    rm -f ${D}${infodir}/dir
    fi }  NORMAL

有了这个,我可以得到 ffmpeg bin。我将它推到设备上(vr360 芯片组:qcs605)。但是当我尝试调用任何 ffmpeg 命令时说

ffmpeg -ss 00:00:00 -i "input.mp4"  -t 00:01:00 "out.mp4"

我收到此错误

[NULL @ 0xaf61a380] 无法为“out.mp4”out.mp4 找到合适的输出格式:参数无效

对于与视频/图像处理相关的所有 ffmpeg 操作,我遇到了同样的错误。

还有什么,我需要启用吗?

标签: ffmpegyocto

解决方案


编辑 ffmpeg_%.bbappend 文件

--启用-ffmpeg

并编辑 local.conf 文件

IMAGE_INSTALL_append += "ffmpeg ffmpeg-staticdev"

并使用 bitbake 编译整个图像。


推荐阅读