一步步实现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. 使用fiddler模拟http请求

    概述  与httpwath相比,fiddler能模拟http请求.能断点调试.http分析统计吸引了我,使用之后感觉这个工具非常不错,这篇文章只单介绍一下fiddler工作原理,简单介绍一下它的重要功 ...

  2. HDU 5608 - function

    HDU 5608 - function 套路题 图片来自: https://blog.csdn.net/V5ZSQ/article/details/52116285 杜教筛思想,根号递归下去. 先搞出 ...

  3. 关于:HTTP Header -> Content-Type: text/plain Cache-Control: no-cache IE浏览器弹出错误下载对话

    下午遇到一个很奇怪的现象,一个网址: http://192.168.1.3/login?action=a&fr=b.com 注意网址后面的参数形式,action参数在前,最后一个参数值的尾部含 ...

  4. 那些神奇的before和after使用方法

    在英文单词里面:before是在什么之前.after是在什么之后.诚然,在我们的css里面, 通过使用before和after伪类元素,可以在我们想要的元素前面或者后面插入内容. 下面是使用befor ...

  5. maven项目检出后报错(包括编译报错和运行报错)的常见检查处理方式

    maven项目检出后报错(包括编译报错和运行报错)的常见检查处理方式: 1.更改项目的jdk为我们安装的jdk2.更改build配置里的 output folder 目录为 xxx项目名/target ...

  6. ip更换

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

  7. RIP配置详解

    RIP配置详解 一.RIP协议概述 1.RIP是Routing Information Protocol(路由信息协议)的简称: 2.RIP是一种基于距离矢量(Distance-Vector)算法的路 ...

  8. 函数和常用模块【day04】:函数参数及调用(二)

    本节内容 1.为什么要有参数 2.返回值 3.有参数函数调用 一.为什么要有参数? 无参数实现 def CPU报警邮件() #发送邮件提醒 连接邮箱服务器 发送邮件 关闭连接 def 硬盘报警邮件() ...

  9. spring-data-jpa初步认识

    什么是spring data jpa? spirng data jpa是spring提供的一套简化JPA开发的框架,按照约定好的[方法命名规则]写dao层接口,就可以在不写接口实现的情况下,实现对数据 ...

  10. H5利用canvas实现海报功能

    最近接到一个需求,微信中用户上传图片生成海报.这个需求比较常规,实现思路也比较简单,通过利用用户的input输入,对所上传的图片进行处理,最后通过第三方库html2canvas合成对应的图片即可.思路 ...