一步步实现windows版ijkplayer系列文章之七——终结篇(附源码)
一步步实现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系列文章之七——终结篇(附源码)的更多相关文章
- 一步步实现windows版ijkplayer系列文章之六——SDL2源码分析之OpenGL ES在windows上的渲染过程
一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...
- 一步步实现windows版ijkplayer系列文章之五——使用automake生成makefile
一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...
- 一步步实现windows版ijkplayer系列文章之四——windows下编译ijkplyer版ffmpeg
一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...
- 一步步实现windows版ijkplayer系列文章之三——Ijkplayer播放器源码分析之音视频输出——音频篇
一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...
- 一步步实现windows版ijkplayer系列文章之二——Ijkplayer播放器源码分析之音视频输出——视频篇
一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...
- 一步步实现windows版ijkplayer系列文章之一——Windows10平台编译ffmpeg 4.0.2,生成ffplay
一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...
- openlayers5-webpack 入门开发系列结合 echarts4 实现散点图(附源码下载)
前言 openlayers5-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载 ...
- 微信小程序版博客——开发汇总总结(附源码)
花了点时间陆陆续续,拼拼凑凑将我的小程序版博客搭建完了,这里做个简单的分享和总结. 整体效果 对于博客来说功能页面不是很多,且有些限制于后端服务(基于ghost博客提供的服务),相关样式可以参考截图或 ...
- leaflet-webpack 入门开发系列四图层控件样式优化篇(附源码下载)
前言 leaflet-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载地址 w ...
随机推荐
- c++纯虚函数在父类中调用的规避
构造和析构函数不允许调用纯虚函数,可以先调用虚函数,里面再调用纯虚函数实现. class Base{public: virtual void foo()=0; Base() { call_ ...
- 走近HTTP协议之一 基本网络概念与理解
当今的技术领域,开发者人数最为之多的群体便是web领域,与之相关岗位的包括前端工程师,后台工程师,移动端开发工程师等等.然而由于受时代浮躁氛围的影响,许多开发者对最为基础的HTTP协议都不甚了解,这也 ...
- Faster RCNN代码理解(Python)
转自http://www.infocool.net/kb/Python/201611/209696.html#原文地址 第一步,准备 从train_faster_rcnn_alt_opt.py入: 初 ...
- C#面向对象设计的七大原则
本文我们要谈的七大原则,即:单一职责,里氏替换,迪米特法则,依赖倒转,接口隔离,合成/聚合原则,开放-封闭 . 1. 开闭原则(Open-Closed Principle, OCP) 定义:软件实 ...
- Keepalive+nginx实现高可用负载均衡方案
Keepalive+nginx实现高可用负载均衡方案 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.nginx做高可用工作在第几层? 上个月我发表了一篇keepalive+lv ...
- JS基础:求一组数中的最大最小值,以及所在位置
var arr = [0, 5, -3, 6, 2, -6, 10]; //定义一个最大值和一个最小值,把他们的索引值赋值给固定的两个变量 var maxValue = arr[0]; var min ...
- VUE2.0 饿了吗视频学习笔记(二):新版本添加路由和显示Header
https://gitee.com/1981633/vue_study.git 源码下载地址,随笔记动态更新中 webpack.dev.conf.js中添加两段代码 'use strict' cons ...
- 用Emacs的这些年
读技术博客时发现又有人提起我曾写的那篇口水文章 为何Emacs和Vim被称为两大神器.写那篇文章时,我还在Vim和Emacs之间摇摆.当然主要在用vim,博士学位论文和所有的国际会议文章都是用Vim编 ...
- ICS Hack Tools
参考链接:http://icstraining.org/en/security-tools/configurations ICS-Security-Tool: https://github.com/I ...
- Mac改键软件Karabiner使用教程
Mac改键软件Karabiner使用教程 目前Mac上比较好用的改键软件是Karabiner,不过对于最新的Sierra系统,Karabiner失效了.这里介绍的实际上是Karabiner-Eleme ...