一步步实现windows版ijkplayer系列文章之一——Windows10平台编译ffmpeg 4.0.2,生成ffplay

一步步实现windows版ijkplayer系列文章之二——Ijkplayer播放器源码分析之音视频输出——视频篇

一步步实现windows版ijkplayer系列文章之三——Ijkplayer播放器源码分析之音视频输出——音频篇

一步步实现windows版ijkplayer系列文章之四——windows下编译ijkplyer版ffmpeg

一步步实现windows版ijkplayer系列文章之五——使用automake一步步生成makefile

一步步实现windows版ijkplayer系列文章之六——SDL2源码分析之OpenGL ES在windows上的渲染过程

一步步实现windows版ijkplayer系列文章之七——终结篇(附源码)

一步步实现windows版ijkplayer系列文章之七——终结篇(附源码)

ijkplayer windows版本的移植工作终于有了一些进展,起初自己做这个项目是因为公司有可能会用到,于是用业余时间慢慢熟悉相关知识和ijkplayer的代码。现在应该是用不到了,到这里做一个总结吧,最终能够达到的效果是是能够在windows上用OpenGL ES渲染视频和用OpenAL播放声音,但是还有音画不同步的问题,以后有时间的话再去解决。各位如果有想学习音视频渲染的可以参考我的代码相互交流学习。

下面是编译源码的说明文档,如果有任何问题可以通知我。

编译环境

  • MinGW32
  • WIN7
  • Visual Studio 2017

MinGW32环境的搭建可以参考之前的帖子

准备工作

编译ijkplayer-ffmpeg

ijkplayer使用的ffmpeg直接拿来在windows上编译会出错,需要merge官方ffmpeg的最新代码,可以看之前的帖子。merge后的代码push到了github上。

将代码clone到MInGW_root_path/msys/1.0/home/Admistrator/下面

git clone https://github.com/harlanc/FFmpeg.git

将ijkplayer branch checkout下来:

git checkout origin/ijkplayer -b ijkplayer

configure

$ ./configure --disable-static --enable-shared --enable-gpl --enable-version3 --enable-sdl --enable-debug=3 --disable-optimizations --disable-mmx --disable-s tripping

make && make install

make && make install
  • 注意编译ijkplayer-windows的时候会找一个<libffmpeg/config.h>的头文件,这个文件如果在ijkplayer-ffmpeg/build目录下没有,自己新建一个文件夹libffmpeg,把ijkplayer-ffmpeg/build下面的config.h拷贝过去即可。

编译Angle库

clone到本地

git clone https://github.com/Microsoft/angle.git

调用批处理生成sln文件然后用Vistual Studio编译生成以下3个dll:

  • d3dcompiler_47.dll
  • libEGL.dll
  • libGLESv2.dll

具体流程参考微软的官方文档

将上面三个dll拷贝到 MInGW_root_path/msys/1.0/local/bin下面

编译ijkplayer-windows

clone代码到本地

git clone https://github.com/harlanc/ijkplayer-windows.git
  • 注意:一定要把ijkplayer-windows和前面的ijkplayer-ffmpeg这两个工程放在同一个目录下,不然编译ijkplayer-windows的时候会找不到ffmepg的头文件

将ijkplayer-windows branch checkout下来:

git checkout origin/ijkplayer-windows -b ijkplayer-windows

将Angle代码库下面的include文件夹拷贝到ijkplayer-windows/ijkmedia/ijksdl 下面。

到ijkplayer-windows/ijkmedia目录下执行configure命令:

./configure

执行make&& make install

make && make install

执行

最后会在ijkplayer-windows/ijkmedia/ijkplayer/windows/.libs 下面生成winplayer.exe可执行文件。将视频文件拷贝到此目录下面,执行下面的命令播放:

 ./winplayer.exe test.mp4

附一个最终的效果图:

已知问题

  • 音画不同步

一步步实现windows版ijkplayer系列文章之七——终结篇(附源码)的更多相关文章

  1. 一步步实现windows版ijkplayer系列文章之六——SDL2源码分析之OpenGL ES在windows上的渲染过程

    一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...

  2. 一步步实现windows版ijkplayer系列文章之五——使用automake生成makefile

    一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...

  3. 一步步实现windows版ijkplayer系列文章之四——windows下编译ijkplyer版ffmpeg

    一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...

  4. 一步步实现windows版ijkplayer系列文章之三——Ijkplayer播放器源码分析之音视频输出——音频篇

    一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...

  5. 一步步实现windows版ijkplayer系列文章之二——Ijkplayer播放器源码分析之音视频输出——视频篇

    一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...

  6. 一步步实现windows版ijkplayer系列文章之一——Windows10平台编译ffmpeg 4.0.2,生成ffplay

    一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...

  7. openlayers5-webpack 入门开发系列结合 echarts4 实现散点图(附源码下载)

    前言 openlayers5-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载 ...

  8. 微信小程序版博客——开发汇总总结(附源码)

    花了点时间陆陆续续,拼拼凑凑将我的小程序版博客搭建完了,这里做个简单的分享和总结. 整体效果 对于博客来说功能页面不是很多,且有些限制于后端服务(基于ghost博客提供的服务),相关样式可以参考截图或 ...

  9. leaflet-webpack 入门开发系列四图层控件样式优化篇(附源码下载)

    前言 leaflet-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载地址 w ...

随机推荐

  1. JDK源码分析(3)HashMap

    JDK版本 HashMap简介 HashMap基于哈希表的 Map 接口的实现.此实现提供所有可选的映射操作,并允许使用 null 值和 null 键.(除了不同步和允许使用 null 之外,Hash ...

  2. Python异步IO

    在IO操作的过程中,当前线程被挂起,而其他需要CPU执行的代码就无法被当前线程执行了. 我们可以使用多线程或者多进程来并发执行代码,为多个用户服务. 但是,一旦线程数量过多,CPU的时间就花在线程切换 ...

  3. 记录一次react相关总结

    背景说明:元旦接到一个管理后台的项目,是一个关于自定义专题的项目.通过后台的配置自定义专题,前端根据专题模块进行渲染数据.由于管理后台是react做的前后分离,对于一个后端的我来说写写js也算是浅尝一 ...

  4. R语言画棒状图(bar chart)和误差棒(error bar)

    假设我们现在有CC,CG,GG三种基因型及三种基因型对应的表型,我们现在想要画出不同的基因型对应表型的棒状图及误差棒.整个命令最重要的就是最后一句了,用arrows函数画误差棒.用到的R语言如下: d ...

  5. vue2.0 之列表渲染-v-for

    v-for 数组渲染 App.vue代码 <template> <div> <ul> <li v-for="item in list"&g ...

  6. multidownloadXkcd 多线程抓图

    Python爬虫视频教程零基础小白到scrapy爬虫高手-轻松入门 https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.482434a6E ...

  7. 私有仓库GitLab快速入门篇

    私有仓库GitLab快速入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 安装文档请参考官网:https://about.gitlab.com/installation/#ce ...

  8. nGrinder TestGroovy.groovy

    s /** * */ package com.iteye.lindows.mysql /** * @author Lindows * */ class TestGroovy { static main ...

  9. linux useradd 的一个用法

    执行命令如下: [root@hds01 home]# useradd -s /sbin/nologin -M -g wwwgroup nginx -s表示指定用户所用的shell,此处为/sbin/n ...

  10. Linux记录-Linux Swap分区虚拟内存相关解决方案

    Swap用途:Swap意思是交换分区,通常我们说的虚拟内存,是从硬盘中划分出的一个分区.当物理内存不够用的时候,内核就会释放缓存区(buffers/cache)里一些长时间不用的程序,然后将这些程序临 ...