ffmpeg精简
自:http://www.chinavideo.org/viewthread.php?tid=5567&extra=page%3D1&page=2
现在更新一下目前遇到的问题:
我想裁减ffmpeg编译出来的Dll库,把avcodec.dll裁减到1MB左右就可以了,只需要用ffmpeg完成H.264的解码和对音频解码的支持. 目前搭建了MinGW+MSYS的环境来编译ffmpeg,make的版本是3.81的.
编译过程如下:
./configure --enable-shared --disable-static --enable-memalign-hack --disable-encoders --disable-decoders --enable-decoder=h264
make
make install
但最后编译生成的 avcodec.dll 还是有3.5MB ? 请问还需要在 configure 里加哪些参数,才能达到我所要求的裁减效果呢??
--enable-small
大哥,按照你的方法来做:
./configure --enable-shared --disable-static --enable-memalign-hack --disable-encoders --disable-decoders --enable-decoder=h264 --enable-small
make
make install
但最后编译生成的 avcodec.dll 还是有2620KB ? 请问还需要在 configure 里加哪些参数,才能达到我所要的裁减(精简到1MB左右)效果呢??
我现在是下载的ffmpeg-0.6.1的源代码。我在网上有看到可以把 avcodec.dll裁减到700多KB,不会吧???
--disable-avdevice
--disable-avfilter
--disable-network
然后再
--disable-everything
最后再
--enable-decoder=需要解码的codec格式
--enable-decoder=xxxx
...
--enable-demuxer=需要解码的容器格式
--enable-demuxer=xxxx
非常感谢楼上的高手!
这一两天终于把ffmpeg裁减好了,avcodec-52.dll 744KB,可以达到我们项目预期的需求.现将整个过程及遇到的问题和解决方法一一列举出来,以供大家日后做为参考:
1.首先下载ffmpeg-0.6.1的源代码,PC端使用VS2008 + SP1的开发环境;
2.搭建MinGW+MSYS的ffmpeg编译环境,这个可以参考网上很多这方面的文章.有个地方稍微提下,建议大家安装最新的MinGW环境,http://sourceforge.net/projects/mingw/files/ 到这个链接可以下载到最新版的MinGW.因为我发现如果GCC的版本太低(例如:3.4,2),编译出来的avcodec.dll在做encode编码的时候,ffmpeg会报错,提示ffmpeg在编译的过程中使用了版本太低的GCC编译器,建议>=4.2.
我目前MinGW+MSYS的编译环境,使用的 GCC 是4.5.0, Make版本是 3.81
3.配置及编译ffmpeg
./configure --disable-static --enable-shared --enable- memalign-hack --enable-small --disable-encoders --disable-decoders --enable-decoder=h264 --enable-decoder=mpeg4 --enable-decoder=mjpeg --prefix=/e/ffmpeg-sdk/
make;make install
这样,在E盘的ffmpeg-sdk目录下会有include头文件及bin目录下会有对应的avcodec/avformat等等dll和lib库.
4.用VS2008调用ffmpeg库编写应用程序(使用方法可以参考网上的相关文章),这里提一下三个问题的解决:
第一,解决:Cannot open include file: 'inttypes.h'
更新ffmpeg之后,有时编译应用ffmpeg库的工程会发现提示: Cannot open include file: 'inttypes.h': No such file or directory 的出错信息,可通过如下方法解决:
1、找到include目录中的/libavutil/common.h
2、在"#define AVUTIL_COMMON_H"之后加入如下代码,同时删除"#include <inttypes.h>" 然后保存:
#if defined(WIN32) && !defined(__MINGW32__) && !defined(__CYGWIN__)
# define CONFIG_WIN32
#endif
#if defined(WIN32) && !defined(__MINGW32__) && !defined(__CYGWIN__) && !defined(EMULATE_INTTYPES)
# define EMULATE_INTTYPES
#endif
#ifndef EMULATE_INTTYPES
# include <inttypes.h>
#else
typedef signed char int8_t;
typedef signed short int16_t;
typedef signed int int32_t;
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned int uint32_t;
# ifdef CONFIG_WIN32
typedef signed __int64 int64_t;
typedef unsigned __int64 uint64_t;
# else /* other OS */
typedef signed long long int64_t;
typedef unsigned long long uint64_t;
# endif /* other OS */
#endif /* EMULATE_INTTYPES */
第二,继'inttypes.h'之后的问题 'stdint.h'怎么解决?
解决方法:经过测试,在VC++2008+SP1下可以将#include <stdint.h>注释掉,不会影响编译和连接。
第三,是在Windows下环境使用ffmpeg库时发现报错
error C3861: 'UINT64_C': identifier not found,怎么回事?
解决方案:
在/libavutil/common.h里加入定义如下:
#ifndef INT64_C
#define INT64_C(c) (c ## LL)
#define UINT64_C(c) (c ## ULL)
#endif
好了,就写这么多吧!希望大家可以互相学习,共同进步了
Powered by Zoundry Raven
ffmpeg精简的更多相关文章
- ffmpeg精简编译
项目上需要用到ffmpeg的接收功能,把rtp流转封装为ts吐udp组播流,不涉及编码,所以需要精简一下脚本如下: #!/bin/bash dir=$(pwd) echo $dir rm -rf $d ...
- 编译:ffmpeg,精简ffmpeg.exe
网上下载的各种 ffmpeg.exe ,最少都有11M+ 而我只需要处理 mp4 和 mp3,在网上搜索了一下精简ffmpeg的文章,折腾一天,也没有完全搞定,但多少有些收获,记录一下: 从 www. ...
- 转:最简单的视频网站(JavaEE+FFmpeg)
本文记录一个最简单的视频网站系统.此前做过一些基于JavaEE中的 SSH (Strut2 + Spring + Hibernate)的网站系统,但是一直没有做过一个视频网站系统,所以就打算做一个&q ...
- iOS: FFMpeg编译和使用问题总结
iOS: FFmpeg编译和使用问题总结 折磨了我近一周多时间的FFmpeg库编译问题终于解决了,必须得把这一段时间来遇到过的坑全写出来.如果急着解决问题,编译最新版本的FFmpeg库请直接看第二部分 ...
- [转]FFMPEG视音频编解码零基础学习方法
在CSDN上的这一段日子,接触到了很多同行业的人,尤其是使用FFMPEG进行视音频编解码的人,有的已经是有多年经验的“大神”,有的是刚开始学习的初学者.在和大家探讨的过程中,我忽然发现了一个问题:在“ ...
- [总结]FFMPEG视音频编解码零基础学习方法--转
ffmpeg编解码学习 目录(?)[-] ffmpeg程序的使用ffmpegexeffplayexeffprobeexe 1 ffmpegexe 2 ffplayexe 3 ffprobeexe ...
- FFMPEG视音频编解码零基础学习方法
在CSDN上的这一段日子,接触到了很多同行业的人,尤其是使用FFMPEG进行视音频编解码的人,有的已经是有多年经验的“大神”,有的是刚开始学习的初学者.在和大家探讨的过程中,我忽然发现了一个问题:在“ ...
- FFMPEG视音频编解码零基础学习方法-b
感谢大神分享,虽然现在还看不懂,留着大家一起看啦 PS:有不少人不清楚“FFmpeg”应该怎么读.它读作“ef ef em peg” 0. 背景知识 本章主要介绍一下FFMPEG都用在了哪里(在这里仅 ...
- [总结]FFMPEG视音频编解码零基础学习方法
在CSDN上的这一段日子,接触到了很多同行业的人,尤其是使用FFMPEG进行视音频编解码的人,有的已经是有多年经验的“大神”,有的是刚开始学习的初学者.在和大家探讨的过程中,我忽然发现了一个问题:在“ ...
- 【转】[总结]FFMPEG视音频编解码零基础学习方法
在CSDN上的这一段日子,接触到了很多同行业的人,尤其是使用FFMPEG进行视音频编解码的人,有的已经是有多年经验的“大神”,有的是刚开始学习的初学者.在和大家探讨的过程中,我忽然发现了一个问题:在“ ...
随机推荐
- .Net Core 静态类获取注入服务
由于静态类中无法使用有参构造函数,从而不能使用常规的方式(构造函数获取) 获取服务,我们可以采取通过IApplicationBuilder 获取 1.首先创建一个静态类 using Microsoft ...
- 008. gitlab代码克隆与推送
推送配置 gitlab需要推送的客户端sshkey添加到gitlab服务器中 node1 推送配置 centos node1: [root@node1 ~]# cat ~/.ssh/id_rsa.pu ...
- kubernetes configmap配置方法
configmap解释 在k8s运行期间会有一些依赖的配置文件,他们存在宿主机中的一个目录中或者代码里,如果配置放生变化,pod在另一台服务器启动,在没有这些配置的时候,可能会导致pod无法正常运行, ...
- zabbix第一天 zabbix安装,添加监控项
1. zabbix 介绍 公司规模大,服务器众多,运维人员需要用到zabbix来监控整个服务器的运行状况,避免服务器故障后运维人员无法察觉. 清华zabbix源: https://mirrors.tu ...
- 【论文笔记】R-CNN系列之代码实现
代码源码 前情回顾:[论文笔记]R-CNN系列之论文理解 整体架构 由三部分组成 (1)提取特征的卷积网络extractor (2)输入特征获得建议框rois的rpn网络 (3)传入rois和特征图, ...
- ABC336
E 数位 dp. 定义 \(dp_{pos,s,t,0/1}\) 为在第 \(pos\) 位,当前数字和是 \(s\),这个数模规定的数字和为 \(t\),是 \(/\) 不是极限的情况数. 于是我们 ...
- 修改 WIN10 WIN11 操作系统启动菜单名称
修改 WIN10 WIN11 操作系统启动菜单名称 一块硬盘装双系统后,自动更新的启动菜单名称可能无法区分WIN10.WIN11,需要通过"卷2"."卷3"字样 ...
- C# .NET 国密 SM2 签名 默认USER ID
C# .NET 国密 SM2 签名 默认USER ID: 1234567812345678 string userId = "1234567812345678"; byte[] b ...
- .net6 .net core web api json 遇到 400 错误
环境: .net6 webapi 服务端模型声明 public class TongYiMinPgPayReq { public string mch_no { get; set; } public ...
- JavaScript执行模型笔记
JavaScript执行模型 引言 JavaScript是一个单线程(Single-threaded)异步(Asynchronous)非阻塞(Non-blocking)并发(Concurrent)语言 ...