# 视频解码 **Repository Path**: caiwudi/video-decoding ## Basic Information - **Project Name**: 视频解码 - **Description**: 基于webAssembly的视频解码器 - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 2 - **Created**: 2020-09-30 - **Last Updated**: 2023-11-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 构建 ## 环境需求 1. linux,可以使用wsl 1. Emscripten需要glibc2.18,所以不支持centos7 1. 支持ubuntu,centos8 1. 假如centos7 建议docker内部启动centos8镜像然后进行后续安装 ## centos8环境整备 docker里面centos8镜像缺乏必要工具,需要先进行安装。 ```bash # 进入容器 yum install -y python3 bzip2 wget which file diffutils pkgconf-pkg-config make ln -s /usr/bin/python3 /usr/bin/python ``` ## 安装Emscripten ```bash git clone https://github.com/emscripten-core/emsdk.git cd emsdk git pull #失败就重来 ./emsdk install latest ./emsdk activate latest # 替换为emsdk的路径 cd /mnt/d/dev/emsdk/wsl/emsdk source ./emsdk_env.sh ``` ## 编译ffmpeg库 ### 说明 项目中已经包含了ffmpeg库,本小节为重新编译ffmpeg库使用。 ### 环境准备 1. 需要gcc,make等gnu工具链 1. 下载ffmpeg,本文以ffmpeg-4.3.1为例 ### 编译ffmpeg生成静态库 ```bash # 替换为ffmpeg编译项目路径 cd /mnt/d/work/lib/c/ffmpeg/ffmpeg-4.3.1 mkdir -p linux-dist mkdir -p wasm-dist # ffmpeg-4.3.1-src是ffmpeg的源代码 目录名根据实际情况修改 cd ffmpeg-4.3.1-src make clean rm -rf ../linux-dist/* rm -rf ../wasm-dist/* export MAKE_CONF="--enable-cross-compile --target-os=none --arch=x86_32 --cpu=generic --enable-gpl --enable-version3 --disable-asm --disable-doc --disable-ffplay --disable-ffprobe --disable-logging --disable-debug --disable-network --disable-encoders --disable-decoders --enable-decoder=hevc --enable-decoder=h264 --enable-decoder=aac --disable-hwaccels --disable-programs --disable-avfilter --disable-swresample --disable-protocols --disable-postproc --disable-indevs --disable-outdevs --disable-large-tests --disable-pthreads" # 先生成linux库(开发用) # 假如直接编译wasm不需要生成linuxlib文件 export PREFIX=" --prefix=$(pwd)/../linux-dist " ./configure ${PREFIX} ${MAKE_CONF} make make install # 将linux-dist目录下include子目录全部文件复制到本项目的include目录下 # 将linux-dist目录下lib子目录全部文件复制到本项目的linux-lib目录下 #-------------------- rm -rf ../wasm-dist/* export PREFIX=" --prefix=$(pwd)/../wasm-dist " emconfigure ./configure --cc="emcc" --cxx="em++" --ar="emar" ${PREFIX} ${MAKE_CONF} make clean make make install # 将linux-dist目录下lib子目录全部文件复制到本项目的linux-lib目录下 ``` --- # 生成wasm文件 ```bash #路径根据实际情况换为emsdk路径 #cd到项目根目录 # cd /mnt/d/work/workspace/wasm/wasm-player source /mnt/d/dev/emsdk/wsl/emsdk/emsdk_env.sh sh build_decoder_wasm.sh ``` 将会在dist目录下生成对应的项目,js和wasm文件在dist/js下