FFmpeg 编译静态库

news2024/11/13 23:33:54

1. 使用工具

  1.1 FFmpeg 官网:

  1.2 FFmpeg macOS 官方安装教程:

  1.3 Homebreaw 安装网站:

2. Homebreaw 介绍

  2.1 简称 brew,在 Mac 平台终端上管理软件包,安装,更新,卸载等软件

  2.2 安装 brew,终端执行指令(内部安装): 

  // ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
  // /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
  /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

  2.3 出现安装或者更新问题:

    错误:Error: Cannot download non-corrupt https://formulae.brew.sh/api/formula.json!

    解决网址: brew upgrade error:

  2.4 常用命令

    搜索软件 brew search  软件名;安装软件 brew install 软件名;卸载软件 brew remove  软件名;

  2.5 安装 FFmpeg(可选项,使用到 ffmpeg 命令行操作,必须安装)

    安装完 Homebrew,然后在终端执行指令:

// brew install ffmpeg --with-libvpx --with-libvorbis --with-ffplay
brew install ffmpeg

    执行结束,在终端中输入 ffmpeg,验证是否安装成功 

3. 编译静态库

  3.1 下载 gas-preprocessor 库(自动编译脚本的时候用到),方法一: 可以手动下载操作,方法二: 命令下载步骤,依次执行下面命令:

// https://github.com/bigsen/gas-preprocessor.git
sudo git clone https://github.com/libav/gas-preprocessor.git /usr/local/bin/gas
sudo cp /usr/local/bin/gas/gas-preprocessor.pl /usr/local/bin/gas-preprocessor.pl
sudo chmod 777 /usr/local/bin/gas-preprocessor.pl
sudo rm -rf /usr/local/bin/gas/

  3.2 安装 yams (系统现已找不到 yams 库进行安装,自带有 yaws,可进行安装) 

    yasm 是汇编编译器,ffmpeg 中提高效率用到了汇编指令,所以编译时需要安装,安装执行下面命令:

 // 报错则执行 sudo brew install yams
 brew install yams

4. 配置编译 FFmpeg 脚本

  手动编译 FFmpeg 脚本,有些复杂,这里选择的是 FFmpeg-iOS-build-script,github 一个开源的脚本,个人认为简单而实用,执行脚本会自动从 github 下载 ffmpeg 源码,并开始编译成 iOS 支持各种架构库。

  4.1 脚本下载地址,也可手动点击下载

  git clone https://github.com/kewlbear/FFmpeg-iOS-build-script.git

  4.2 下载完成后,可自行修改脚本文件,自带脚本:

#!/bin/sh

# directories
FF_VERSION="4.3.1"
#FF_VERSION="snapshot-git"
if [[ $FFMPEG_VERSION != "" ]]; then
  FF_VERSION=$FFMPEG_VERSION
fi
SOURCE="ffmpeg-$FF_VERSION"
FAT="FFmpeg-iOS"

SCRATCH="scratch"
# must be an absolute path
THIN=`pwd`/"thin"

# absolute path to x264 library
#X264=`pwd`/fat-x264

#FDK_AAC=`pwd`/../fdk-aac-build-script-for-iOS/fdk-aac-ios

CONFIGURE_FLAGS="--enable-cross-compile --disable-debug --disable-programs \
                 --disable-doc --enable-pic"

if [ "$X264" ]
then
    CONFIGURE_FLAGS="$CONFIGURE_FLAGS --enable-gpl --enable-libx264"
fi

if [ "$FDK_AAC" ]
then
    CONFIGURE_FLAGS="$CONFIGURE_FLAGS --enable-libfdk-aac --enable-nonfree"
fi

# avresample
#CONFIGURE_FLAGS="$CONFIGURE_FLAGS --enable-avresample"

ARCHS="arm64 armv7 x86_64 i386"

COMPILE="y"
LIPO="y"

DEPLOYMENT_TARGET="8.0"

if [ "$*" ]
then
    if [ "$*" = "lipo" ]
    then
        # skip compile
        COMPILE=
    else
        ARCHS="$*"
        if [ $# -eq 1 ]
        then
            # skip lipo
            LIPO=
        fi
    fi
fi

if [ "$COMPILE" ]
then
    if [ ! `which yasm` ]
    then
        echo 'Yasm not found'
        if [ ! `which brew` ]
        then
            echo 'Homebrew not found. Trying to install...'
                        ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" \
                || exit 1
        fi
        echo 'Trying to install Yasm...'
        brew install yasm || exit 1
    fi
    if [ ! `which gas-preprocessor.pl` ]
    then
        echo 'gas-preprocessor.pl not found. Trying to install...'
        (curl -L https://github.com/libav/gas-preprocessor/raw/master/gas-preprocessor.pl \
            -o /usr/local/bin/gas-preprocessor.pl \
            && chmod +x /usr/local/bin/gas-preprocessor.pl) \
            || exit 1
    fi

    if [ ! -r $SOURCE ]
    then
        echo 'FFmpeg source not found. Trying to download...'
        curl http://www.ffmpeg.org/releases/$SOURCE.tar.bz2 | tar xj \
            || exit 1
    fi

    CWD=`pwd`
    for ARCH in $ARCHS
    do
        echo "building $ARCH..."
        mkdir -p "$SCRATCH/$ARCH"
        cd "$SCRATCH/$ARCH"

        CFLAGS="-arch $ARCH"
        if [ "$ARCH" = "i386" -o "$ARCH" = "x86_64" ]
        then
            PLATFORM="iPhoneSimulator"
            CFLAGS="$CFLAGS -mios-simulator-version-min=$DEPLOYMENT_TARGET"
        else
            PLATFORM="iPhoneOS"
            CFLAGS="$CFLAGS -mios-version-min=$DEPLOYMENT_TARGET -fembed-bitcode"
            if [ "$ARCH" = "arm64" ]
            then
                EXPORT="GASPP_FIX_XCODE5=1"
            fi
        fi

        XCRUN_SDK=`echo $PLATFORM | tr '[:upper:]' '[:lower:]'`
        CC="xcrun -sdk $XCRUN_SDK clang"

        # force "configure" to use "gas-preprocessor.pl" (FFmpeg 3.3)
        if [ "$ARCH" = "arm64" ]
        then
            AS="gas-preprocessor.pl -arch aarch64 -- $CC"
        else
            AS="gas-preprocessor.pl -- $CC"
        fi

        CXXFLAGS="$CFLAGS"
        LDFLAGS="$CFLAGS"
        if [ "$X264" ]
        then
            CFLAGS="$CFLAGS -I$X264/include"
            LDFLAGS="$LDFLAGS -L$X264/lib"
        fi
        if [ "$FDK_AAC" ]
        then
            CFLAGS="$CFLAGS -I$FDK_AAC/include"
            LDFLAGS="$LDFLAGS -L$FDK_AAC/lib"
        fi

        TMPDIR=${TMPDIR/%\/} $CWD/$SOURCE/configure \
            --target-os=darwin \
            --arch=$ARCH \
            --cc="$CC" \
            --as="$AS" \
            $CONFIGURE_FLAGS \
            --extra-cflags="$CFLAGS" \
            --extra-ldflags="$LDFLAGS" \
            --prefix="$THIN/$ARCH" \
        || exit 1

        make -j3 install $EXPORT || exit 1
        cd $CWD
    done
fi

if [ "$LIPO" ]
then
    echo "building fat binaries..."
    mkdir -p $FAT/lib
    set - $ARCHS
    CWD=`pwd`
    cd $THIN/$1/lib
    for LIB in *.a
    do
        cd $CWD
        echo lipo -create `find $THIN -name $LIB` -output $FAT/lib/$LIB 1>&2
        lipo -create `find $THIN -name $LIB` -output $FAT/lib/$LIB || exit 1
    done

    cd $CWD
    cp -rf $THIN/$1/include $FAT
fi

echo Done

  4.3 脚本可根据需求修改的地方,如下图:

  4.4 编译裁剪库(可选项) 

    FFmpeg 库很庞大,不进行裁剪,编译出来的库也会很大,根据自身的需求,裁剪部分库中的内容,更改内容是在脚本文件中 CONFIGURE_FLAGS 对应的选项,进行更改之后的脚本: build-ffmpeg-simple.sh

#!/bin/sh

# directories
FF_VERSION="4.3.1"
#FF_VERSION="snapshot-git"
if [[ $FFMPEG_VERSION != "" ]]; then
  FF_VERSION=$FFMPEG_VERSION
fi
SOURCE="ffmpeg-$FF_VERSION"
FAT="FFmpeg-iOS"

SCRATCH="scratch"
# must be an absolute path
THIN=`pwd`/"thin"

# absolute path to x264 library
#X264=`pwd`/fat-x264

#FDK_AAC=`pwd`/../fdk-aac-build-script-for-iOS/fdk-aac-ios

CONFIGURE_FLAGS="--enable-cross-compile \
                 --disable-debug \
                 --disable-programs \
                 --disable-doc \
                 --enable-pic \
                 --enable-small \
                 --enable-gpl \
                 --enable-network \
                 --enable-version3 \
                 --disable-ffplay \
                 --disable-ffprobe \
                 --disable-avdevice \
                 --disable-outdevs \
                 --disable-ffmpeg \
                 --disable-postproc \
                 --disable-symver \
                 --disable-stripping \
                 --disable-iconv \
                 --enable-asm \
                 --enable-neon \
                 --enable-zlib \
                 --disable-encoders \
                 --enable-encoder=h264_videotoolbox \
                 --enable-encoder=hevc_videotoolbox \
                 --enable-encoder=aac \
                 --disable-muxers \
                 --enable-muxer=h264 \
                 --enable-muxer=hevc \
                 --enable-muxer=rtsp \
                 --enable-muxer=dts \
                 --enable-muxer=adts \
                 --enable-muxer=mp3 \
                 --disable-decoders \
                 --enable-decoder=h264 \
                 --enable-decoder=hevc \
                 --enable-decoder=aac \
                 --enable-decoder=mp3 \
                 --disable-demuxers \
                 --enable-demuxer=h264 \
                 --enable-demuxer=hevc \
                 --enable-demuxer=rtsp \
                 --enable-demuxer=sdp \
                 --enable-demuxer=aac \
                 --enable-demuxer=mp3 \
                 --disable-parsers \
                 --enable-parser=aac \
                 --enable-parser=h264 \
                 --enable-parser=hevc \
                 --disable-protocols \
                 --enable-protocol=tcp \
                 --enable-protocol=file \
                 --enable-protocol=hls \
                 --enable-protocol=concat \
                 --enable-protocol=unix \
                 --disable-filters \
                 --enable-filter=aresample \
                 --enable-filter=asetpts \
                 --enable-filter=setpts \
                 --enable-filter=scale \
                 --enable-filter=concat \
                 --enable-filter=atempo \
                 --enable-filter=movie \
                 --enable-filter=overlay \
                 --enable-filter=rotate \
                 --enable-filter=format \
                 --enable-filter=transpose \
                 --enable-filter=hflip"

if [ "$X264" ]
then
    CONFIGURE_FLAGS="$CONFIGURE_FLAGS --enable-gpl --enable-libx264"
fi

if [ "$FDK_AAC" ]
then
    CONFIGURE_FLAGS="$CONFIGURE_FLAGS --enable-libfdk-aac --enable-nonfree"
fi

# avresample
#CONFIGURE_FLAGS="$CONFIGURE_FLAGS --enable-avresample"

ARCHS="arm64 armv7 x86_64 i386"

COMPILE="y"
LIPO="y"

DEPLOYMENT_TARGET="8.0"

if [ "$*" ]
then
    if [ "$*" = "lipo" ]
    then
        # skip compile
        COMPILE=
    else
        ARCHS="$*"
        if [ $# -eq 1 ]
        then
            # skip lipo
            LIPO=
        fi
    fi
fi

if [ "$COMPILE" ]
then
    if [ ! `which yasm` ]
    then
        echo 'Yasm not found'
        if [ ! `which brew` ]
        then
            echo 'Homebrew not found. Trying to install...'
                        ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" \
                || exit 1
        fi
        echo 'Trying to install Yasm...'
        brew install yasm || exit 1
    fi
    if [ ! `which gas-preprocessor.pl` ]
    then
        echo 'gas-preprocessor.pl not found. Trying to install...'
        (curl -L https://github.com/libav/gas-preprocessor/raw/master/gas-preprocessor.pl \
            -o /usr/local/bin/gas-preprocessor.pl \
            && chmod +x /usr/local/bin/gas-preprocessor.pl) \
            || exit 1
    fi

    if [ ! -r $SOURCE ]
    then
        echo 'FFmpeg source not found. Trying to download...'
        curl http://www.ffmpeg.org/releases/$SOURCE.tar.bz2 | tar xj \
            || exit 1
    fi

    CWD=`pwd`
    for ARCH in $ARCHS
    do
        echo "building $ARCH..."
        mkdir -p "$SCRATCH/$ARCH"
        cd "$SCRATCH/$ARCH"

        CFLAGS="-arch $ARCH"
        if [ "$ARCH" = "i386" -o "$ARCH" = "x86_64" ]
        then
            PLATFORM="iPhoneSimulator"
            CFLAGS="$CFLAGS -mios-simulator-version-min=$DEPLOYMENT_TARGET"
        else
            PLATFORM="iPhoneOS"
            CFLAGS="$CFLAGS -mios-version-min=$DEPLOYMENT_TARGET -fembed-bitcode"
            if [ "$ARCH" = "arm64" ]
            then
                EXPORT="GASPP_FIX_XCODE5=1"
            fi
        fi

        XCRUN_SDK=`echo $PLATFORM | tr '[:upper:]' '[:lower:]'`
        CC="xcrun -sdk $XCRUN_SDK clang"

        # force "configure" to use "gas-preprocessor.pl" (FFmpeg 3.3)
        if [ "$ARCH" = "arm64" ]
        then
            AS="gas-preprocessor.pl -arch aarch64 -- $CC"
        else
            AS="gas-preprocessor.pl -- $CC"
        fi

        CXXFLAGS="$CFLAGS"
        LDFLAGS="$CFLAGS"
        if [ "$X264" ]
        then
            CFLAGS="$CFLAGS -I$X264/include"
            LDFLAGS="$LDFLAGS -L$X264/lib"
        fi
        if [ "$FDK_AAC" ]
        then
            CFLAGS="$CFLAGS -I$FDK_AAC/include"
            LDFLAGS="$LDFLAGS -L$FDK_AAC/lib"
        fi

        TMPDIR=${TMPDIR/%\/} $CWD/$SOURCE/configure \
            --target-os=darwin \
            --arch=$ARCH \
            --cc="$CC" \
            --as="$AS" \
            $CONFIGURE_FLAGS \
            --extra-cflags="$CFLAGS" \
            --extra-ldflags="$LDFLAGS" \
            --prefix="$THIN/$ARCH" \
        || exit 1

        make -j5 install $EXPORT || exit 1
        cd $CWD
    done
fi

if [ "$LIPO" ]
then
    echo "building fat binaries..."
    mkdir -p $FAT/lib
    set - $ARCHS
    CWD=`pwd`
    cd $THIN/$1/lib
    for LIB in *.a
    do
        cd $CWD
        echo lipo -create `find $THIN -name $LIB` -output $FAT/lib/$LIB 1>&2
        lipo -create `find $THIN -name $LIB` -output $FAT/lib/$LIB || exit 1
    done

    cd $CWD
    cp -rf $THIN/$1/include $FAT
fi

echo Done

  4.5 根据架构进行编译,编译脚本(编译的裁剪版) 

    1)如果出现权限问题,执行命令

chmod 777 ./build-ffmpeg-simple.sh

    2)编译所有版本,执行脚本指令 

./build-ffmpeg-simple.sh

    编译所有版本,操作如下图: 

    编译所有版本,scratch 文件夹,如下图: 

    编译所有版本,thin 文件夹中头文件,如下图: 

    编译所有版本,thin 文件夹中静态库文件,如下图: 

    编译所有版本,FFmpeg-iOS 文件夹,如下图: 

    3)编译 arm64 架构版本,执行脚本指令 

./build-ffmpeg-simple.sh arm64

    4)编译 armv7 x86_64 i386 架构版本,执行脚本指令

./build-ffmpeg-simple.sh armv7 x86_64 i386

    5)lipo 合成库,指令

./build-ffmpeg-simple.sh lipo

    lipo 合成库,如把 arm64,x86_64 合并, 操作如图:

    lipo 合成库,如把 arm64,x86_64 合并, 合并到文件夹如图: 

5. 查看 .a 文件支持的内核架构指令: 

lipo -info FFmpeg-iOS/lib/libavcodec.a

  查询的结果:

lihanyang@MacBook-Pro FFmpeg % lipo -info FFmpeg-iOS/lib/libavcodec.a
Architectures in the fat file: FFmpeg-iOS/lib/libavcodec.a are: x86_64 arm64 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/440396.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTTP协议详解(一)

目录 1.什么是HTTP协议? 2.HTTP的协议格式 使用fiddler抓包工具 理解代理 查看请求内容 3.HTTP请求(Request) 认识URL URL encode 认识method GET方法 POST方法 经典面试题:POST和GET之间的典型区别 其它方法 认识请求 "报头" (header) Host Conte…

Elasticsearch:为日志分析设置安全的 Elasticsearch 管道

在我之前的许多文章中,我已经详细地描述了如何配置如下的管道: 如果你想了解更多,请详细阅读文章: Logstash:Logstash 入门教程 (二) Elastic:运用 Docker 安装 Elastic Stack 并采…

企业在实施采购管理时需要注意哪些问题?

采购管理是指企业为了获得所需的物资和服务等,通过筛选供应商、谈判合同、执行采购计划等一系列过程来实现目标的管理活动。在实施过程中,采购管理需要注意以下几个问题: 1、采购策略的选择 采购策略的选择是采购管理中非常关键的环节。不同…

分享5款win10小工具,让办公学习井井有条

好用的小工具能让办公学习变得更简单便捷,这里推荐几款实用的Win10小工具。 桌面小工具——Win10 Widgets Win10 Widgets是一款实用的桌面小工具软件,可以让你在桌面上显示各种系统信息。你可以使用Win10 Widgets来查看电源、硬盘、CPU、内存、网络、时…

数据结构_第十三关(1):简单排序算法

【本关目标】 排序的概念常见排序的算法思想和实现排序算法的复杂度以及稳定性分析 目录 【本关目标】 1.排序的概念 2.常见排序的算法思想和实现(代码默认都是从小到大排序) 2.1插入排序 1)直接插入排序 2)希尔排序 2.2选…

Java 死锁的原理、检测和解决死锁

什么是死锁 两个或者多个线程互相持有对方所需要的资源(锁),都在等待对方执行完毕才能继续往下执行的时候,就称为发生了死锁,结果就是两个进程都陷入了无限的等待中。 一般是有多个锁对象的情况下并且获得锁顺序不一致造成的。 …

微服务+springcloud+springcloud alibaba学习笔记【Spring Cloud Gateway服务网关】(7/9)

Spring Cloud Gateway服务网关 7/9 1、GateWay概述2、GateWay的特性:3、GateWay与zuul的区别:4、zuul1.x的模型:5、什么是webflux:6、GateWay三大概念:6.1,路由:6.2,断言:6.3,过滤: 7、GateWay的工作原理:8、使用GateWay:8.1,建module8.2,修改pom文件8.3,写配置文件8.4,主启动类…

微服务学习——微服务框架

Nacos配置管理 统一配置管理 配置更改热更新 将配置交给Nacos管理的步骤: 在Nacos中添加配置文件在微服务中引入nacos的config依赖在微服务中添加bootstrap.yml,配置nacos地址、当前环境、服务名称、文件后缀名。这些决定了程序启动时去nacos读取哪个…

Java:JDK对IPv4和IPv6处理介绍

以下以JDK8为例说明对IPv4和IPv6是如何处理的。 一、常用代码 一般情况下,使用如下代码可以获取到域名/主机名对应的多个IP,其中部分是IPv4的,部分是IPv6的: try {InetAddress[] addrs InetAddress.getAllByName(host);for (I…

Quartz框架详解分析

文章目录 1 Quartz框架1.1 入门demo1.2 Job 讲解1.2.1 Job简介1.2.2 Job 并发1.2.3 Job 异常1.2.4 Job 中断 1.3 Trigger 触发器1.3.1 SimpleTrigger1.3.2 CornTrigger 1.4 Listener监听器1.5 Jdbc store1.5.1 简介1.5.2 添加pom依赖1.5.3 建表SQL1.5.4 配置文件quartz.propert…

23-HTTP协议

目录 1.HTTP是什么? 2.HTTP工作过程 3.HTTP协议格式 3.1.抓包工具使用 eg:抓取"必应"的包 PS:HTTP不同版本号之间的区别 3.2.抓包工具原理 3.3.抓包结果分析 ①HTTP 请求: ②HTTP 响应: 3.4.协议…

ArduPilot Kakute F7 AIO DIYF450 without GPS配置

ArduPilot Kakute F7 AIO DIYF450 without GPS配置 1. 源由2. 配置2.1 Kakute F7 AIO相关配置2.1.1 串口规划2.1.2 电传配置2.1.3 GPS配置2.1.4 CRSF接收机配置2.1.5 Compass配置2.1.6 电机配置2.1.7 TX12 遥控器配置 3. 实测效果4. 参考资料 1. 源由 鉴于GPS模块信号质量未达…

3DEXPERIENCE云可以为PLM带来什么?

在消费者领域,云的优势已显而易见,用一个词就可以概括:便利,3DEXPERIENCE云存储服务的用户可以从任何位置在任何设备上访问其数据,只要能够连接到互联网就行了。在一台设备 上所做的更改会立即反映在另一台设备上。 同…

提升10倍写作效率,这5个写作工具,文笔不好的人别错过

记得刚出来上班的时候,我的写作效率很低,经常没有思路,也找不到选题。甚至一两个小时过去了,仍然不知道如何动笔,经常写了删,删了又写。工欲善其事,必先利其器。在写作过程中,需要一…

【数据分析之道-NumPy(五)】numpy迭代数组

文章目录 专栏导读1、前言2、使用python循环语句3、使用nditer函数3.1迭代一维数组3.2迭代二维数组3.3迭代指定顺序的数组3.4迭代时修改数组中的元素 4、使用flat属性5、使用ndenumerate函数6、使用布尔索引总结 专栏导读 ✍ 作者简介:i阿极,CSDN Python…

IO多路复用—多线程网络并发通信 select poll epoll

1.IO 多路转接 (复用) ​ IO 多路转接也称为 IO 多路复用,它是一种网络通信的手段(机制),通过这种方式可以同时监测多个文件描述符并且这个过程是阻塞的,一旦检测到有文件描述符就绪( 可以读数据或者可以写…

Nginx企业级使用1(运维笔记)

Nginx企业级使用1(运维笔记) 重装和升级 信号参数 Kill 选项参数 pid ##关闭nginx ##快速关闭 kill -INT pid ##优雅关闭 kill -QUIT pid##############实操############## [rootserver01 ~]# ps -ef|grep nginx root 1668 1 0 11:09 ?…

Flask入门和视图--01

1. 概述 虚拟环境搭建和使用 Flask框架的特点,Flask框架的组成 Flask框架中MVT模式开发 蓝图Blueprint的使用 路由Route的使用 请求Request和响应Response的使用 2. Flask简介 2.1 简介 Python后端的2个主流框架:Flask 轻量级框架Django 重型框架Flask是一…

开心档之C++ 信号处理

C 信号处理 目录 C 信号处理 signal() 函数 实例 raise() 函数 实例 信号是由操作系统传给进程的中断,会提早终止一个程序。在 UNIX、LINUX、Mac OS X 或 Windows 系统上,可以通过按 CtrlC 产生中断。 有些信号不能被程序捕获,但是下表…

安全狗入选2023年福建省数字经济核心产业领域创新企业名单

近日,福建省数字福建建设领导小组办公室公布了入选2023年全省数字经济核心产业领域创新企业名单。 作为国内云原生安全领导厂商,安全狗凭借综合表现与优势入选名单,荣膺“未来独角兽”称号。 据悉,此次对“未来独角兽”的评选条件…