MRPT
1.9.9
CFFMPEG_InputStream.h
Go to the documentation of this file.
1
/* +------------------------------------------------------------------------+
2
| Mobile Robot Programming Toolkit (MRPT) |
3
| http://www.mrpt.org/ |
4
| |
5
| Copyright (c) 2005-2018, Individual contributors, see AUTHORS file |
6
| See: http://www.mrpt.org/Authors - All rights reserved. |
7
| Released under BSD License. See details in http://www.mrpt.org/License |
8
+------------------------------------------------------------------------+ */
9
10
#ifndef CFFMPEG_InputStream_H
11
#define CFFMPEG_InputStream_H
12
13
#include <
mrpt/img/CImage.h
>
14
#include <
mrpt/core/pimpl.h
>
15
16
/*---------------------------------------------------------------
17
Class
18
---------------------------------------------------------------*/
19
namespace
mrpt::hwdrivers
20
{
21
/** A generic class which process a video file or other kind of input stream
22
* (http, rtsp) and allows the extraction of images frame by frame.
23
* Video sources can be open with "openURL", which can manage both video files
24
* and "rtsp://" sources (IP cameras).
25
*
26
* Frames are retrieved by calling CFFMPEG_InputStream::retrieveFrame
27
*
28
* For an example of usage, see the file "samples/grab_camera_ffmpeg"
29
*
30
* \note This class is an easy to use C++ wrapper for ffmpeg libraries
31
* (libavcodec). In Unix systems these libraries must be installed in the system
32
* as explained in <a
33
* href="http://www.mrpt.org/Building_and_Installing_Instructions" > MRPT's
34
* wiki</a>. In Win32, a precompiled version for Visual Studio must be also
35
* downloaded as explained in <a
36
* href="http://www.mrpt.org/Building_and_Installing_Instructions" >the
37
* wiki</a>.
38
* \ingroup mrpt_hwdrivers_grp
39
*/
40
class
CFFMPEG_InputStream
41
{
42
private
:
43
/** The internal ffmpeg state */
44
struct
Impl
;
45
mrpt::pimpl<Impl>
m_impl
;
46
/** The open URL */
47
std::string
m_url
;
48
bool
m_grab_as_grayscale
;
49
50
public
:
51
/** Default constructor, does not open any video source at startup */
52
CFFMPEG_InputStream
();
53
/** Destructor */
54
virtual
~CFFMPEG_InputStream
();
55
56
/** Open a video file or a video stream (rtsp://)
57
* This can be used to open local video files (eg. "myVideo.avi",
58
* "c:\a.mpeg") and also IP cameras (e. "rtsp://a.b.c.d/live.sdp").
59
* However, note that there is currently no support for user/password in
60
* IP access.
61
* If verbose is set to true, more information about the video will be
62
* dumped to cout.
63
*
64
* \sa close, retrieveFrame
65
* \return false on any error (and error info dumped to cerr), true on
66
* success.
67
*/
68
bool
openURL
(
69
const
std::string
&
url
,
bool
grab_as_grayscale =
false
,
70
bool
verbose =
false
);
71
72
/** Return whether the video source was open correctly */
73
bool
isOpen
()
const
;
74
75
/** Close the video stream (this is called automatically at destruction).
76
* \sa openURL
77
*/
78
void
close
();
79
80
/** Get the frame-per-second (FPS) of the video source, or "-1" if the video
81
* is not open. */
82
double
getVideoFPS
()
const
;
83
84
/** Get the next frame from the video stream.
85
* Note that for remote streams (IP cameras) this method may block until
86
* enough information is read to generate a new frame.
87
* Images are returned as 8-bit depth grayscale if "grab_as_grayscale" is
88
* true.
89
* \return false on any error, true on success.
90
* \sa openURL, close, isOpen
91
*/
92
bool
retrieveFrame
(
mrpt::img::CImage
& out_img);
93
};
94
}
95
#endif
96
97
mrpt::hwdrivers::CFFMPEG_InputStream::retrieveFrame
bool retrieveFrame(mrpt::img::CImage &out_img)
Get the next frame from the video stream.
Definition:
CFFMPEG_InputStream.cpp:340
mrpt::pimpl
spimpl::impl_ptr< T > pimpl
Definition:
pimpl.h:15
CImage.h
mrpt::hwdrivers
Contains classes for various device interfaces.
Definition:
C2DRangeFinderAbstract.h:20
mrpt::hwdrivers::CFFMPEG_InputStream::m_grab_as_grayscale
bool m_grab_as_grayscale
Definition:
CFFMPEG_InputStream.h:48
mrpt::hwdrivers::CFFMPEG_InputStream
A generic class which process a video file or other kind of input stream (http, rtsp) and allows the ...
Definition:
CFFMPEG_InputStream.h:40
mrpt::hwdrivers::CFFMPEG_InputStream::Impl
Definition:
CFFMPEG_InputStream.cpp:55
mrpt::hwdrivers::CFFMPEG_InputStream::isOpen
bool isOpen() const
Return whether the video source was open correctly.
Definition:
CFFMPEG_InputStream.cpp:103
mrpt::hwdrivers::CFFMPEG_InputStream::m_impl
mrpt::pimpl< Impl > m_impl
Definition:
CFFMPEG_InputStream.h:44
url
string url
Definition:
vision_stereo_rectify/test.cpp:22
mrpt::hwdrivers::CFFMPEG_InputStream::openURL
bool openURL(const std::string &url, bool grab_as_grayscale=false, bool verbose=false)
Open a video file or a video stream (rtsp://) This can be used to open local video files (eg...
Definition:
CFFMPEG_InputStream.cpp:116
string
GLsizei const GLchar ** string
Definition:
glext.h:4101
mrpt::hwdrivers::CFFMPEG_InputStream::m_url
std::string m_url
The open URL.
Definition:
CFFMPEG_InputStream.h:47
mrpt::hwdrivers::CFFMPEG_InputStream::CFFMPEG_InputStream
CFFMPEG_InputStream()
Default constructor, does not open any video source at startup.
Definition:
CFFMPEG_InputStream.cpp:65
mrpt::hwdrivers::CFFMPEG_InputStream::close
void close()
Close the video stream (this is called automatically at destruction).
Definition:
CFFMPEG_InputStream.cpp:281
mrpt::hwdrivers::CFFMPEG_InputStream::~CFFMPEG_InputStream
virtual ~CFFMPEG_InputStream()
Destructor.
Definition:
CFFMPEG_InputStream.cpp:91
mrpt::hwdrivers::CFFMPEG_InputStream::getVideoFPS
double getVideoFPS() const
Get the frame-per-second (FPS) of the video source, or "-1" if the video is not open.
Definition:
CFFMPEG_InputStream.cpp:431
mrpt::img::CImage
A class for storing images as grayscale or RGB bitmaps.
Definition:
img/CImage.h:130
pimpl.h
Page generated by
Doxygen 1.8.14
for MRPT 1.9.9 Git: 7d5e6d718 Fri Aug 24 01:51:28 2018 +0200 at lun nov 2 08:35:50 CET 2020