新版本ffmpeg的变动整理

本文整理了FFmpeg新版本中的关键变动,包括文件打开函数更名、AVMediaType枚举变动、解码函数修改及资源分配调整等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:http://sheepssoft.blog.163.com/blog/static/178735990201210322520628/


新版本ffmpeg的变动整理


av_open_input_file() 改为 avformat_open_input() 且有参数上的变动:

 

一下函数文档来自:http://wiki.aasimon.org/doku.php?id=ffmpeg:av_open_input_file

av_open_input_file

Overview

Defined in avformat.h

Open a media file as input. The codecs are not opened. Only the file header (if present) is read.

NOTE: If no output is desired, used av_alloc_format_context instead.

int av_open_input_file(AVFormatContext **ic_ptr,                         const char *filename,                         AVInputFormat *fmt,                         int buf_size,                         AVFormatParameters *ap);

Parameters

ic_ptr
AVFormatContext **ic_ptr

A pointer to an AVFormatContext pointer. The opened media file handle is put here.

filename
const char *filename

Filename to open.

fmt
AVInputFormat *fmt

An AVInputFormat pointer. If non NULL, force the file format to use.

buf_size
int buf_size

Optional buffer size (zero if default is OK).

ap
AVFormatParameters *ap

An AVFormatParameters pointer containing additional parameters needed when opening the file (NULL if default).

Return value

0 if OK. AVERROR otherwise.

 

 

****************************************************************************************************************

 

dump_format() 更名为 av_dump_format()  参数与之前相同

 

****************************************************************************************************************

 

AVMediaType 的枚举类型有所变动:

以下解释来自于FFmpeg源码:

enum AVMediaType {
    AVMEDIA_TYPE_UNKNOWN = -1,  ///< Usually treated as AVMEDIA_TYPE_DATA
    AVMEDIA_TYPE_VIDEO,
    AVMEDIA_TYPE_AUDIO,
    AVMEDIA_TYPE_DATA,          ///< Opaque data information usually continuous
    AVMEDIA_TYPE_SUBTITLE,
    AVMEDIA_TYPE_ATTACHMENT,    ///< Opaque data information usually sparse
    AVMEDIA_TYPE_NB
};

 

**************************************************************************************************************

avcodec_decode_video()  变更为:avcodec_decode_video2() 并将 size 和 data 两参数整合成一个 const 的 Packet 参数


 **************************************************************************************************************

av_alloc_format_context() 弃用后使用 avcodec_alloc_context()


转自:http://t.hexun.com/17875038/15589174_d.html


av_read_frame - 新版本的ffmpeg用的是av_read_frame,而老版本的是av_read_packet。区别是av_read_packet读出的是包,它可能是半帧或多帧,不保证帧的完整性。av_read_frame对av_read_packet进行了封装,使读出的数据总是完整的帧



<think>好的,用户遇到了CMake安装过程中找不到文件opencv_traincascaded.exe的错误。首先,我需要回忆一下OpenCV的构建过程和相关组件。opencv_traincascaded.exe是用于训练级联分类器的工具,通常在旧版本的OpenCV中存在,而在新版本中可能被移除或名了。所以,用户可能在编译较新版本的OpenCV时遇到了这个问题。 根据引用[1],之前有ICV下载失败的问题,可能与网络或配置文件有关。但用户现在的问题是关于opencv_traincascaded.exe找不到,这可能是因为该工具在新版本中被废弃了。我需要确认这一点,比如从OpenCV的官方文档或更新日志中查看是否有相关说明。此外,用户可能在CMake配置时启用了某些旧模块,导致系统尝试安装已经不存在的文件。 另外,引用[2]中提到通过注释掉相关语句来解决文件问题,这可能适用于用户的情况。需要检查安装脚本或CMake文件,找到引用opencv_traincascaded.exe的地方,并注释或删除这些行。同时,用户可能需要更新到支持当前版本的OpenCV构建配置,或者手动添加缺失的文件,如果该工具仍然存在但未被正确生成的话。 还需要考虑编译过程中是否成功生成了该exe文件。如果编译失败导致该文件缺失,应检查编译日志,查看是否有相关错误,比如依赖项缺失或编译选项不正确。例如,是否启用了BUILD_opencv_apps这样的选项,或者是否有必要的依赖库如FFmpeg(如引用[4]提到的库目录设置)正确配置。 另外,用户的环境变量设置也可能影响路径查找,如引用[3]中的QTDIR设置,但这里可能关系不大。不过,确保所有依赖路径正确是重要的。 可能的解决步骤包括:1. 确认OpenCV版本和该工具的存在性;2. 检查CMake配置,禁用相关模块;3. 手动修CMake文件以移除对该exe的引用;4. 确保编译成功生成所需文件;5. 添加缺失文件或使用替代工具。 需要将这些步骤整理成用户友好的解决方案,并生成相关问题以帮助用户深入理解问题根源和解决方法。</think>针对CMake安装过程中出现的`opencv_traincascaded.exe`文件缺失问题,以下是分步解决方案: --- ### **问题分析** `opencv_traincascaded.exe`是OpenCV中用于训练级联分类器的工具。该错误通常由以下原因导致: 1. **版本兼容性问题**:新版本OpenCV中此工具可能已被移除或更名[^1]。 2. **编译配置错误**:未正确生成该可执行文件或相关模块未启用。 3. **安装脚本路径错误**:CMake安装脚本中引用了不存在的文件路径。 --- ### **解决方案** #### **1. 确认OpenCV版本** - **OpenCV 3.x及以上版本**:`opencv_traincascaded.exe`已被`opencv_traincascade.exe`替代。若使用旧版本脚本,需更新代码或回退到OpenCV 2.x版本。 - **检查文档**:参考OpenCV官方文档确认工具名称是否变更[^1]。 #### **2.CMake配置** - **禁用相关模块**:在CMake GUI中取消勾选`BUILD_opencv_apps`选项,避免生成旧工具。 - **手动注释安装脚本**:类似引用[2]的方法,在`CMakeLists.txt`或`.cmake`文件中找到涉及`opencv_traincascaded.exe`的语句并注释: ```cmake # install(FILES "path/opencv_traincascaded.exe" DESTINATION bin) ``` #### **3. 重新生成解决方案** - 清除CMake缓存后重新配置: ```bash rm -rf CMakeCache.txt CMakeFiles/ cmake -D BUILD_opencv_apps=OFF .. ``` #### **4. 手动添加缺失文件(备用)** - 若仍需旧版工具,从OpenCV 2.x版本源码中提取`opencv_traincascaded.exe`,放置到编译输出的`bin`目录下。 --- ### **相关问题** 1. **如何检查OpenCV版本兼容性?** OpenCV的版本更新可能导致API或工具变动,需对比官方发布说明。 2. **CMake安装脚本如何调试路径错误?** 通过`message()`命令输出变量值,定位缺失文件的具体路径[^2]。 3. **OpenCV训练级联分类器的替代方案是什么?** 新版本推荐使用`opencv_traincascade`或深度学习工具(如TensorFlow)替代传统方法。 4. **如何确保编译时生成所有必要工具?** 检查CMake日志,确认`BUILD_opencv_apps`和`BUILD_EXAMPLES`选项已启用,并解决依赖项问题[^4]。 --- ### **引用说明** - : 若工具名称变更或模块废弃,需参考OpenCV更新日志。 - : 类似方法可修安装脚本以跳过缺失文件。 - : 确保依赖库路径正确配置,避免编译失败。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值