一步步实现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 ...
随机推荐
- bzoj3545 Peaks
题意:多次求从点x出发经过边权不超过k的边能走到的点中第k大的权值. 解:离线排序 + 并查集 + 线段树合并. 题面有锅...是第k大的权值不是第k大的山. #include <cstdio& ...
- property(四十)
一个静态属性property本质就是实现了get,set,delete三种方法 用法: class Foo: @property def AAA(self): print('get的时候运行我啊') ...
- Apache HTTP Server应用的几个场景
Apache HTTP Server应用的几个场景 前言 尽管Apache具有重量级.耗资源.低性能(相比其它的WebServer)的特点,但是同时它也具有兼容性强.稳定性高.模块丰富等特点,且处理动 ...
- NO.11 复制时勿忘其每个成分
1.Coping 函数应该确保复制对象内的"每一个成员变量",和调用合适的 "base class"构造函数(base class 某些成员往往是private ...
- curl命令的基本使用
curl命令的基本使用 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. curl是基于URL语法在命令行方式下工作的文件传输工具,它支持FTP,FTPS,HTTP,HTTPS,GOP ...
- parted分区工具用法
parted分区工具用法 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 随着生产环境中数据量的增大,我们对硬盘的容量也有很大的需求,当硬盘的容量大于2T(工业上的最大磁盘2.2TB ...
- 深入分析HashMap
本文基于jdk1.8 HashMap特点: HashMap具体方法分析: put方法分析: 执行流程图: public V put(K key, V value) { return putVal(ha ...
- myeclipse 怎么安装与激活
摘录自:http://blog.csdn.net/u012318074/article/details/71310553 第一步:安装完成后不要运行MyEclipse 第二步:下载对应的破解文件 第三 ...
- SQL语句(一)SQL和数据库数据表的创建
SQL的组成 (1) 数据定义语言DDL(Data Definition Language) 用于数据库和数据表的创建.修改和删除等操作 CREATE (create) 创建数据库.数据表 ALTER ...
- 大量界面刷新时手动Dispose也是有必要的
在winform窗体上拖一个flowLayoutPane,一个Button,项目中再创建一个用户控件UcControl,用户控件上放几十个子控件 private void button1_Click( ...