使用opencv分析视频,虽然是要做研究单还要保证程序的工程性(不是只读一下特定AVI式就完了)于是乎选择了支持ffmpeg的opencv2.3 一开始没有问题,程序写的很爽,但是当我想回放一下视频片段的时候,问题一下就出来了:无法使用VideoCapture来准确的定位到视
使用opencv分析视频,虽然是要做研究单还要保证程序的工程性(不是只读一下特定AVI格式就完了)于是乎选择了支持ffmpeg的opencv2.3
一开始没有问题,程序写的很爽,但是当我想回放一下视频片段的时候,问题一下就出来了:无法使用VideoCapture来准确的定位到视频中的某一特定时间
要解决问题:
opencv无法正常回放视频(原因是VideoCapture::set 函数里只有一种关键帧模式,详情参见《OpenCV 2.3.1 中关于cvCaptureProperty()定位不准的问题》)
解决方案:
上面给出的链接文章已经给出了这一问题的解决方案,但是过于笼统(我怀疑他们应该是使用的linux系统),在windows下这一编译过程可以用坑爹来形容。好吧,让我们来回顾一下这一坑爹之旅。
1 要修改的代码部分请参见OpenCV 2.3.1 中关于cvCaptureProperty()定位不准的问题 这里不再重复
2 关键的问题来了:我在windows下使用cmake安装opencv的时候,根本就没有WITH_FFMPEG这个选项,而在网上查到的解决方案都是通过修改cmake而直接搞定的,简直可谓是轻松愉快加嗨皮 ,下面给出windows下需要修改的一些内容。
2.1 先说ffmpeg的下载安装。由于一开始不是很清楚,就去ffmpeg的网站上下了最新版本编译好的程序,结果死活有函数找不到。后来google后发现,原来是因为opencv使用的是0.7x版本的ffmpeg,下载的时候大家注意一下。http://ffmpeg.zeranoe.com/builds/在这里下载,我是懒人,我下的编译完的版本。下载完,你怎么配置环境变量我就不管了,反正最后重新编译opencv时你能想起来就行。
2.2 然后我们可以打开opencv文件夹下面 CMakeLists.txt 这个文件发现
[html] view plaincopy
- if(UNIX)
- set(WITH_FFMPEG ON CACHE BOOL "Include FFMPEG support")
- if(NOT APPLE)
- set(WITH_UNICAP OFF CACHE BOOL "Include Unicap support (GPL)")
- set(WITH_GTK ON CACHE BOOL "Include GTK support")
- set(WITH_GSTREAMER ON CACHE BOOL "Include Gstreamer support")
- set(WITH_V4L ON CACHE BOOL "Include Video 4 Linux support")
- set(WITH_XINE OFF CACHE BOOL "Include Xine support (GPL)")
- endif()
- set(WITH_PVAPI ON CACHE BOOL "Include Prosilica GigE support")
- set(WITH_1394 ON CACHE BOOL "Include IEEE1394 support")
- endif()
找到opencv_highgui这个项目,打开cap_ffmpeg.cpp文件,你会发现这么一段预编译代码
[html] view plaincopy
- #ifdef HAVE_FFMPEG
- #include "cap_ffmpeg_impl.hpp"
- #else
- #include "cap_ffmpeg_api.hpp"
- #endif
2.3 下一步是将你的ffmpeg库的include文件夹加到highgui项目中去,不想细说了,还有就是ffmpeg中的静态链接库。这些没有什么难度。然后编译一下,ok,满屏的错误。
转到cap_ffmpeg_impl.hpp文件,大部分的错误是从这里来的
2.3.1 找不到msinttypes.h文件 上这里下载 http://code.google.com/p/msinttypes/ 然后塞进项目去就行了。
2.3.2 INT64_C, UINT64_C 没定义, 自己定义一下就可以了。在文件中加入
[html] view plaincopy
- #define INT64_C
- #define UINT64_C
2.3.4 如果报错 snprintf 这个函数找不到,我不知道这个函数在那个头文件里,我加上了
[html] view plaincopy
- //snprintf(oc->filename, sizeof(oc->filename), "%s", filename);
- sprintf(oc->filename, filename, "%s");
2.3.6 重新编译highgui项目,替换原有的lib,dll文件。
2.3.7 PS, 貌似还需要删除opencv_ffmpeg.dll文件,这样才能调用正确的帧跳转方法,但是删除opencv_ffmpeg后,程序就无法读取非avi类型媒体文件。 目前原因不明,有时间在慢慢鼓捣吧。
OK,整个坑爹之旅到此结束。
http://blog.csdn.net/sxy0082002/article/details/7450623

Golang与FFmpeg:如何实现音频混音和分离,需要具体代码示例摘要:音频处理是许多多媒体应用程序中必不可少的一部分。在Golang中,我们可以使用FFmpeg库来实现音频的混音和分离。本文将介绍如何使用Golang调用FFmpeg库来实现音频混音和分离,并提供了具体的代码示例。通过学习本文,读者将了解到如何使用Golang和FFmpeg来实现音频处理

利用Golang和FFmpeg实现视频拼接的实践引言:在日常生活中,我们经常会遇到需要将多个视频文件合并为一个的情况,例如将多段录制的视频拼接为一个完整的视频文件。为了实现这一目的,本文将介绍如何使用Golang和FFmpeg库来实现视频拼接的过程,并提供具体的代码示例。一、什么是Golang和FFmpeg?Golang(即Go语言)是一种开源的编程语言,由

Golang与FFmpeg:如何实现音频合成和分割,需要具体代码示例摘要:本文将介绍如何使用Golang和FFmpeg库来实现音频合成和分割。我们将用到一些具体的代码示例来帮助读者更好地理解。引言:随着音频处理技术的不断发展,音频合成和分割已经成为日常生活和工作中常见的功能需求。而Golang作为一种快速,高效且易于编写和维护的编程语言,加上FFmpeg作

如何在服务器上安装PHPFFmpeg扩展?在服务器上安装PHPFFmpeg扩展可以帮助我们在PHP项目中处理音视频文件,实现音视频文件的编解码、剪辑、处理等功能。本文将介绍如何在服务器上安装PHPFFmpeg扩展,以及具体的代码示例。首先,我们需要确保服务器上已经安装了PHP以及FFmpeg。如果没有安装FFmpeg,可以按照以下步骤安装FFmpe

Golang与FFmpeg:如何实现音频格式转换和压缩,需要具体代码示例引言:在音频文件处理中,有时会遇到需要转换音频格式或者压缩音频文件大小的需求。Golang作为一门强大的编程语言,结合FFmpeg这一流行的音视频处理工具,可以实现快速、高效的音频格式转换和压缩。本文将介绍如何利用Golang和FFmpeg来实现音频格式转换和压缩,并给出具体的代码示例

利用Golang和FFmpeg实现视频去闪烁的实践概述:视频的闪烁问题是在视频处理过程中经常遇到的一个挑战。当录制视频的帧率与照明频率不匹配时,可能会导致视频中出现闪烁的情况。本文将介绍如何利用Golang和FFmpeg库来实现视频去闪烁的方法,并提供具体的代码示例。步骤:安装FFmpeg库:首先,我们需要在Golang开发环境中安装FFmpeg库。可以通过

最近开始做毕业设计,是关于一个Linux下视频监控系统的设计,现在开始配置linux环境,为了以后方便查阅,现把安装时的想法写下来,希望大家共同学习共同进步!在安装ffmpeg之前,首先要安装yasm这么个家伙。1.安装yasm我用的yasm是yasm-1.2.0.tar.gz这个版本的tarxzvfyasm-1.2.0.tar.gz#cdyasm-1.2.0#./configure注意:不要使用prefix指定安装路径什么的,否则后患无穷啊!姐姐我深有体会,真的!#make#makeinsta

Golang与FFmpeg:实现实时视频流分析与识别的技术,需要具体代码示例引言:在当今数字化和智能化的时代,视频技术的应用越来越广泛。其中,实时视频流的分析与识别在安防监控、智能交通、人脸识别等领域发挥着重要作用。本文将介绍如何使用Golang和FFmpeg结合的技术实现实时视频流的分析与识别,并提供具体的代码示例。一、Golang介绍Golang是一种


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SublimeText3 中国語版
中国語版、とても使いやすい

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

ホットトピック



