一步步实现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下编译ijkplyer版ffmpeg

ijkplayer版本ffmpeg源码说明

ijkplayer使用了ffmpeg 3.4 release(接下来将此版本ffmpeg叫做ijkplayer-ffmpeg),ijkplayer fork版本最后一个官方的commit详细信息如下:

提交:
01e291a592452f27b3a4e811536aaaf94096e244 [01e291a]
父级:
03351cce88
作者:
Mark Thompson <sw@jkqxz.net>
日期:
2017年10月15日 GMT+8 下午7:45:15

ijkplayer团队在此基础上做了不少的改动,同时官方的3.4 release也在做更新,最近的一个3.4小版本release是3.4.4,时间在2018年7月18号。把ijkplayer的FFmpeg fork版本拿到windows下面编译一直编译不过,拿官方的3.4最新代码却能编译成功,所以首先需要把两个branch进行一下merge。

merge Ijkplayer-ffmpeg 到 ffmpeg3.4.4

ijkplayer-ffmpeg fork自 官方的ffmpeg,ijkplayer-ffmpeg可以提交pull request到官方ffmpeg,这不是我们自己能控制的。网上搜索了相关的资料,git如此强大,可以对两个fork的branch进行『移花接木』,现将过程记录如下:

  1. github上将官方ffmpeg fork一份到自己的账户。

  2. 在本地将ijkplayer-ffmpeg仓库clone下来:

     https://github.com/Bilibili/FFmpeg.git
  3. 跳转到ijkplayer-ffmpeg 根目录:

     cd root_path_of_ijkplayer-ffmpeg
  4. 将ijkplayer指定的tag检出。

     git checkout ff3.4--ijk0.8.7--20180103--001 -B ijkplayer
  5. 删除本地仓库的origin部分:

     git remote rm origin
  6. 将官方ffmpeg origin添加到本地ijkplayer-ffmpeg:

     git remote add origin https://github.com/harlanc/FFmpeg.git
  7. 重命名本地branch ijkplayer

    git branch -m ijkplayer-temp
  8. 将更新后的远端仓库拉取到本地:

     git fetch
  9. 将官方ffmpeg的3.4.4版本检出:

     git checkout n3.4.4 -B ijkplayer
  10. 最后将ijkplayer-temp merge到官方ffmpeg n3.4.4中:

     git merge ijkplayer-temp

最终的结果没有冲突,直接将代码commit和push即可。

在WinGW中编译ijkplayer-ffmpeg

将merge后的branch拷贝到windows环境中,同前面介绍的编译ffmpeg4.0.2一样进行编译,发现ijkplayer更新的ffmpeg代码存在不少问题,有一些bug,也有的缺失了windows部分的代码,做了一些改动,也有可能有问题,但最后编译通过了(具体可以看我的github)。ijkplayer-ffmpeg的android平台下,最终ffmpeg部分是生成了一个so动态库,libijkffmpeg.so,而且这个库还很小。使用ffmpeg的configure编译出来后是很多的dll和lib,想像ijkplayer一样将需要的.o文件打包成一个动态库,最后没有成功,先继续往前走吧,最关键的部分还没到,朝目标又近了一步,加油。

参考

Combining two git repositories

一步步实现windows版ijkplayer系列文章之四——windows下编译ijkplyer版ffmpeg的更多相关文章

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

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

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

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

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

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

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

    一步步实现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系列文章之二——Ijkplayer播放器源码分析之音视频输出——视频篇

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

  7. Windows Shell Extension 系列文章

    Windows Shell Extension 系列文章 http://www.codeproject.com/Articles/512956/NET-Shell-Extensions-Shell-C ...

  8. windows 下编译64位ffmpeg

    window下如何编译ffmpeg 前文已有介绍,前面介绍的都是如何编译32位的库,本文主要介绍window 下如何编译64位ffmpeg库. 一.搭建编译环境 1.下载 windows下编译64位F ...

  9. Windows Azure Platform 系列文章目录

    Windows Azure Platform (一) 云计算的出现 Windows Azure Platform (二) 云计算的分类和服务层次 Windows Azure Platform (三) ...

随机推荐

  1. sliding menu

    http://www.androiduipatterns.com/2012/06/emerging-ui-pattern-side-navigation.htmlhttps://github.com/ ...

  2. c c++ 混合编译

    单个源文件生成可执行程序 下面是一个保存在文件 helloworld.cpp 中一个简单的 C++ 程序的代码: 1 2 3 4 5 6 7 8 9 /* helloworld.cpp */    # ...

  3. Java使用SFTP和FTP两种连接方式实现对服务器的上传下载 【我改】

    []如何区分是需要使用SFTP还是FTP? []我觉得: 1.看是否已知私钥. SFTP 和 FTP 最主要的区别就是 SFTP 有私钥,也就是在创建连接对象时,SFTP 除了用户名和密码外还需要知道 ...

  4. #ifndef HeaderName_h #define HeaderName_h #endif 使用详解

    想必很多人都看到过头文件中写有:#ifndef HeaderName_h                                                #define HeaderNa ...

  5. Nginx核心配置文件常用参数详解

    Nginx核心配置文件常用参数详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 关于Nginx权威文档的话童鞋们可以参考Nginx官方文档介绍:http://nginx.org/ ...

  6. nGrinder TestRunnerInsertMysqlMore.groovy

    s C:\Users\Lindows\workspace\GroovyTest\src\com\iteye\lindows\mysql\TestRunnerInsertMysqlMore.groovy ...

  7. 面向对象【day07】:类的实例化过程剖析(三)

    本节内容 1.概述 2.类的语法 3.总结 一.概述 之前我们说关于python中的类,都一脸懵逼,都想说,类这么牛逼到底是什么,什么才是类?下面我们就来讲讲,什么是类?它具有哪些特性. 二.类的语法 ...

  8. 学习windows编程 day4 之 矩形的操作

    LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRU ...

  9. Hbase记录-HBase基本操作(二)

    HBase Exists   可以使用exists命令验证表的存在.下面的示例演示了如何使用这个命令. hbase(main):024:0> exists 'emp' Table emp doe ...

  10. Python中re(正则表达式)模块学习

    re.match re.match 尝试从字符串的开始匹配一个模式,如:下面的例子匹配第一个单词. import re text = "JGood is a handsome boy, he ...