经过前面的2个部分,我们完成了环境的搭建,接下来我们使用emcc编译ffmpeg库,注意同样由于软链接的缘故,我们不能在windows和linux的共享文件夹里使用emcc编译ffmpeg, 这里我们选择在/mnt/work/webffmpeg目录下编译

视频课程以及源码下载:
https://edu.csdn.net/course/detail/35615

章节列表:

  • 搭建webassembly网页播放器(一)—centeros 虚拟环境搭建
  • 搭建webassembly网页播放器(二)—emcc环境搭建
  • 搭建webassembly网页播放器(三)—emcc编译ffmpeg编译库
  • 搭建webassembly网页播放器(四)—网页调用ffmpeg.js单元测试用例
  • 搭建webassembly网页播放器(五)—网页播放器开发
  • 搭建webassembly网页播放器(六)—websocket后台服务程序

emcc编译ffmpeg编译库

  • ffmpeg下载
  • 编写ffmpeg编译脚本

ffmpeg下载

  • 使用git下载最新版的ffmpeg源码

git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg

  • 几个常用的编译选项的介绍:

    1. /configure --help , 查看支持的编译选项,以及ffmpeg的默认支持项.
    2. ./configure --list-decoders


    具体的大家视自己的项目需求去查看,这里不做过多介绍.

编写ffmpeg编译脚本

ffmpeg支持指定第三方gcc/g++,这里我们需要指定的gcc就是 emcc, g++就是em++,同时需要打开–enable-cross-compile,表示支持交叉编译.

首先我们把我们在web-ffmpeg的目录梳理下:


decode : 用于存放我们的调用接口,主要是编解码的代码.
doc : 编译脚本
ffmpeg :ffmpeg源码
ffmpeg-emcc-lib: emcc编译ffmpeg产生的库的存放位置

./configure 查看配置方法:

接下来, 我们在doc目录下,编写脚本: build_ffmpeg.sh

(由于我们的网页播放器需要支持解码h264以及h265,因此这2个编译选项被打开了,而其它的都被关闭了)

cd ffmpeg
make clean
emconfigure ./configure --cc="emcc" --cxx="em++" --ar="emar" \
--ranlib=emranlib --prefix=../ffmpeg-emcc/ \
--enable-cross-compile --target-os=none \
--arch=x86_32 --cpu=generic --enable-gpl \
--enable-version3 --disable-avdevice  \
--disable-postproc --disable-avfilter \
--disable-programs --disable-logging \
--disable-everything --enable-avformat  \--enable-decoder=hevc --enable-decoder=h264 --enable-decoder=h264_qsv \--enable-decoder=hevc_qsv \--enable-decoder=aac \--disable-ffplay --disable-ffprobe  --disable-asm \--disable-doc --disable-devices --disable-network \--disable-hwaccels \--disable-parsers --disable-bsfs --disable-debug \--enable-protocol=file --disable-indevs --disable-outdevs \--enable-parser=hevc --enable-parser=h264make
make install

执行:./doc/build_ffmpeg.sh
(注意这个时候我们需要在/mnt/work/web-ffmpeg目录下执行)

编译输出:

上面的步骤要开始卡大约3-5分钟,然后开始正式编译:


编译成功后,我们可以在:ffmpeg-emcc-lib目录下,看到编译生成的静态库:



OK,到了这一步,我们已经得到了我们所需要的静态库,下一步我们将要编写代码,链接这些静态库,同时在网页上调用我们自己写的C++代码.

搭建webassembly网页播放器(三)---emcc编译ffmpeg编译库相关推荐

  1. 搭建webassembly网页播放器(二)---emcc环境搭建

    emcc全称 emscripten,最重要的功能就是让网页js调用c/c++ 成为可能,是我们基于webassembly搭建网页播放器必须依赖的编译工具. emcc官网的搭建教程较为简单,安装过程中最 ...

  2. 搭建webassembly网页播放器(五)---网页播放器开发

    在前面的章节中,我们解决emcc环境以及使用emcc来编译ffmpeg得到网页开发中可以使用的js库,本章节,我们就来实现一个简单的播放器. 视频课程以及源码下载: https://edu.csdn. ...

  3. 搭建webassembly网页播放器(六)---websocket后台服务程序

    这里我们主要介绍后台搭建技术,前端搭建好后,需要后端配置展现,实现的效果就是 :网页连接上我们的 websocket服务后,我们就从H264文件中不断的提取出H264帧,然后传递给前端,前端调用web ...

  4. php_online_coding,搭建自己的网页播放器——MKOnlinePlayer

    MKOnlinePlayer 是一款开源的基于 Meting 的在线音乐播放器.具有音乐搜索.播放.下载.歌词同步显示.个人网易云音乐播放列表同步等功能.界面模仿 QQ 音乐的网页在线播放器,非常好看 ...

  5. 挑选几款开源的、优秀的H.265网页播放器,进行特征整理及使用评价

    H265和H264都是视频编码规范,H265是新一代视频编码规范,与H264相比压缩比更高,同样的码率下视频质量更高,或者说同样质量的视频占用的带宽和存储更少.之前由于终端支持有限,h265的推广使用 ...

  6. jw player flash网页播放器 参数说明以及应用配置

    jw player flash网页播放器 参数说明以及应用配置 1.参数解释 这些参数可以配置被嵌入到html中的播放器的行为和外观.如果使用swfobject.js,可以用addVariable() ...

  7. 网页播放器实现全屏的方法总结

    网页播放器全屏的方法(有点气,少写了)这是自己总结的,刚刚要完的时候点错了,重新发送一次,老子好气,该打游戏的时间,浪费了,这里就偷工减料了! 1.media player全屏方法 <scrip ...

  8. 经常使用网页播放器代码

    经常使用网页播放器代码 我们在网页上看到的播放器无外乎WMP/RealOne/Macromedia Flash Player,其它的无非是面板不同,或者加入了其它控件,对于计算机上安装的一些播放器也都 ...

  9. Dewplayer MP3网页播放器

    顺便提一下jMP3 (javaScript MP3 player):http://www.sean-o.com/jquery/jmp3/ 官网:http://www.alsacreations.fr/ ...

最新文章

  1. 如何写优雅的SQL原生语句?
  2. Codechef:Path Triples On Tree
  3. halcon的算子清点:Chapter 8线的属性
  4. 开发中为什么使用线程池的原因
  5. C/C++码农到工程师进化之路
  6. 南京软件测试自学英语,南京软件测试门槛高吗?南京软件测试学哪些
  7. ASP.NET适合做互联网吗,适合做电子商务平台吗?
  8. H5文本复制到剪切板
  9. 计算机毕业论文指导,计算机毕业论文指导
  10. 2019年MongoDB中文社区 长沙大会
  11. Linux相关命令(三)
  12. 各代iPhone iPad 内部代号
  13. 统计学---数据的误差
  14. 用计算机画有常数的函数图像,信息技术应用 用计算机画函数图象教学实录
  15. 一个 Spring Boot 面试题
  16. Ubuntu 16.04中为Chromium、Chrome、Firefox安装Flash播放器插件
  17. Go语言 -- 关于nil的幺蛾子
  18. 从Dump到POC系列一:Win32k内核提权漏洞分析
  19. 遥志无盘如何设置副服务器,CCDisk遥志虚拟磁盘使用说明图解
  20. 用友NCC2105/2111账号密码批量重置工具

热门文章

  1. Vue v-model双向数据绑定和一个简单的整数计算器
  2. Edge、Chrome网页论文的公式翻译保留脚本
  3. appscan漏洞之查询中的密码参数
  4. 五年,我成为了一名嵌入式工程师。
  5. 21:Integer Intervals
  6. 安拆网:振动打桩 液压振动锤打拔拉森钢板桩施工浅析
  7. 巨坑,绿联USB3.0集线器HUB,转千兆网络,USB双路供电原理研究和供电不足改造
  8. C语言 模板化<template>编程萌芽
  9. Appium+Python实现自动投递Boss直聘简历
  10. 程序员的语言表达能力