参照ffmpeg重新写makefile文件提取prores编解码库

2023-12-11 13:08

本文主要是介绍参照ffmpeg重新写makefile文件提取prores编解码库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我们知道,ffmpeg源码是在linux底下开发出来的,而如果我们要在windows底下进行ffmpeg相关代码的修改和优化的话,则是需要借助mingw,mingw中提供了msys编译环境,这样的话,你修改和优化后的ffmpeg代码如果要在windows下应用的话,则可以通过编译生成相关的dll和lib库进行引用,达到最大化利用ffmpeg性能的目的。

接下来,以自己近期做的prores编解码器代码修改优化部分过程为例,来说明下如何在windows平台上通过重写makefile文件,重新编译生成新的prores编解码库。有的人可能会问,为什么不直接在vs2013平台上进行修改并编译好库,这样不也可以编译得到相应的dll和lib库吗?当然是可以的,不过由于visual studio平台在编译ffmpeg部分代码过程中并不支持部分编译选项,比如AT&T汇编优化,因此在visual studio平台上编译出的库也就不支持AT&T汇编优化,从而影响了ffmpeg进行相关流媒体处理的性能。那可能又有一部分人会问,那你直接在linux上进行开发不就行了么?当然也是可以的,只是笔者习惯了在windows下进行开发,虽说笔者电脑上也装了一个linux的虚拟机,不过老是切来切去的也不方便,所以干脆就直接在mingw上倒腾了,反正功能和linux基本一样。

好了,接下来开始上干货了。。。

1、  先上ffmpeg官网下载ffmpeg源码,分别在library.mak和common.mak的图1和图2位置处增加这两条语句:echo-e "$(YASM) $(YASMFLAGS) -I $(<D)/ -o $@$<\n">>asmout.log和echo -e "$($(1)) $($(1)FLAGS) $($(1)_DEPFLAGS) $($(1)_C)$($(1)_O) $<\n">>output.log,然后分别采用mingw 32位和64位,按32位和64位编译得到dll和lib库,其中32位的configure选项为:./configure–enable-shared, 64位的configure选项为:./configure –arch=x86-64 –enable-shared,编译完成后,可以在libavutil,libavcodec等文件夹中看到各个.c文档被编译得到了.o和.d文件,其中.d文件就是代表把这个.c文档编译成.o文档需要的依赖文件。比如,我这里修改优化后需要编译的有proresdec2.c文档,那么我们可以查看proresdec2.d文件中的依赖文档有哪些,如下图3


图1


图2


图3

接下来保存好ffmpeg一级目录下的config.h以及config.asm两个文件,将32位和64位下分别编译得到的这两个config文件分别保存到config_x86和config_x64中。

2、  在vs2013中,新建两个工程,这里我自己命名为BaseLib和 ProResCodec,将步骤一后得到的ffmpeg重新make clean一下,然后将ffmpeg中的libavutil和libavcodec两个源码文件夹复制到自己的vs工程目录下,并在两个工程属性中,将libavutil和libavcodec中头文件全部包含进去。接下来重新利用vs编译器和msys一起编译ffmpeg,此时32位的configure选项为:./configure –enable-shared –toolchain=msvc, 64位的configure选项为:./configure–arch=x86-64 –enable-shared –toolchain=msvc,重新编译后,可得到新的config.h和config.asm,将32位和64位下分别编译得到的这两个config文件分别保存到config_x86和config_x64中,将这两个文件夹也复制到vs工程目录下,并根据不同的vs平台包含进项目BaseLib和ProResCodec中去。将proresdec2.c文档加入到ProResCodec工程,编译链接,发现有些函数没有定义或者链接不了,肯定还需要其他.c文件加入进来,根据函数名在libavutil和libavcodec文件夹中查找,逐个将相应的.c文件加入,直至最后两个工程项目都可以完全编译链接通过。

这一步主要是为了下一步进行makefile编写时需要哪些文件加入mingw编译提供参考。

3、  参考网络资料《跟我一起学makefile》(http://blog.csdn.net/haoel/article/details/2886/)资料,熟悉makefile书写规则和一般技巧。重新建立新的文件夹,将第一步中得到的config_x86和config_x64文件夹复制到新的文件夹目录下,且将ffmpeg中的源码文件夹libavutil和libavcodec复制到新的文件夹目录下,分别在两个文件夹中新建makefile文档,根据步骤二中的两个项目BaseLib和ProResCodec下分别包含的.c文件分别书写libavutil和libavcodec中的两个makefile文件,其中我自己32位的两个makefile文件参考如下:

Libavutil中makefile:

vpath %.c ../compat/msvc

这篇关于参照ffmpeg重新写makefile文件提取prores编解码库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/480803

相关文章

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

C/C++的OpenCV 进行图像梯度提取的几种实现

《C/C++的OpenCV进行图像梯度提取的几种实现》本文主要介绍了C/C++的OpenCV进行图像梯度提取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录预www.chinasem.cn备知识1. 图像加载与预处理2. Sobel 算子计算 X 和 Y

Python使用FFmpeg实现高效音频格式转换工具

《Python使用FFmpeg实现高效音频格式转换工具》在数字音频处理领域,音频格式转换是一项基础但至关重要的功能,本文主要为大家介绍了Python如何使用FFmpeg实现强大功能的图形化音频转换工具... 目录概述功能详解软件效果展示主界面布局转换过程截图完成提示开发步骤详解1. 环境准备2. 项目功能结

SpringBoot使用ffmpeg实现视频压缩

《SpringBoot使用ffmpeg实现视频压缩》FFmpeg是一个开源的跨平台多媒体处理工具集,用于录制,转换,编辑和流式传输音频和视频,本文将使用ffmpeg实现视频压缩功能,有需要的可以参考... 目录核心功能1.格式转换2.编解码3.音视频处理4.流媒体支持5.滤镜(Filter)安装配置linu

Python对PDF书签进行添加,修改提取和删除操作

《Python对PDF书签进行添加,修改提取和删除操作》PDF书签是PDF文件中的导航工具,通常包含一个标题和一个跳转位置,本教程将详细介绍如何使用Python对PDF文件中的书签进行操作... 目录简介使用工具python 向 PDF 添加书签添加书签添加嵌套书签Python 修改 PDF 书签Pytho

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

Android NDK版本迭代与FFmpeg交叉编译完全指南

《AndroidNDK版本迭代与FFmpeg交叉编译完全指南》在Android开发中,使用NDK进行原生代码开发是一项常见需求,特别是当我们需要集成FFmpeg这样的多媒体处理库时,本文将深入分析A... 目录一、android NDK版本迭代分界线二、FFmpeg交叉编译关键注意事项三、完整编译脚本示例四

使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)

《使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)》PPT是一种高效的信息展示工具,广泛应用于教育、商务和设计等多个领域,PPT文档中常常包含丰富的图片内容,这些图片不仅提升了... 目录一、引言二、环境与工具三、python 提取PPT背景图片3.1 提取幻灯片背景图片3.2 提取

Python实现word文档内容智能提取以及合成

《Python实现word文档内容智能提取以及合成》这篇文章主要为大家详细介绍了如何使用Python实现从10个左右的docx文档中抽取内容,再调整语言风格后生成新的文档,感兴趣的小伙伴可以了解一下... 目录核心思路技术路径实现步骤阶段一:准备工作阶段二:内容提取 (python 脚本)阶段三:语言风格调

一文详解如何在Python中从字符串中提取部分内容

《一文详解如何在Python中从字符串中提取部分内容》:本文主要介绍如何在Python中从字符串中提取部分内容的相关资料,包括使用正则表达式、Pyparsing库、AST(抽象语法树)、字符串操作... 目录前言解决方案方法一:使用正则表达式方法二:使用 Pyparsing方法三:使用 AST方法四:使用字