62 *out << std::fixed << std::setprecision(2) << std::boolalpha;
63 *out <<
"----------------------------" << std::endl;
64 *out <<
"----- File Information -----" << std::endl;
65 *out <<
"----------------------------" << std::endl;
69 *out <<
"--> Duration: " <<
info.
duration <<
" Seconds" << std::endl;
70 *out <<
"--> File Size: " << double(
info.
file_size) / 1024 / 1024 <<
" MB" << std::endl;
71 *out <<
"----------------------------" << std::endl;
72 *out <<
"----- Video Attributes -----" << std::endl;
73 *out <<
"----------------------------" << std::endl;
74 *out <<
"--> Width: " <<
info.
width << std::endl;
75 *out <<
"--> Height: " <<
info.
height << std::endl;
81 *out <<
"--> Video Codec: " <<
info.
vcodec << std::endl;
87 *out <<
"----------------------------" << std::endl;
88 *out <<
"----- Audio Attributes -----" << std::endl;
89 *out <<
"----------------------------" << std::endl;
90 *out <<
"--> Audio Codec: " <<
info.
acodec << std::endl;
93 *out <<
"--> # of Channels: " <<
info.
channels << std::endl;
97 *out <<
"----------------------------" << std::endl;
98 *out <<
"--------- Metadata ---------" << std::endl;
99 *out <<
"----------------------------" << std::endl;
103 *out <<
"--> " << it.first <<
": " << it.second << std::endl;
115 std::stringstream filesize_stream;
117 root[
"file_size"] = filesize_stream.str();
121 root[
"fps"] = Json::Value(Json::objectValue);
125 root[
"pixel_ratio"] = Json::Value(Json::objectValue);
128 root[
"display_ratio"] = Json::Value(Json::objectValue);
132 std::stringstream video_length_stream;
134 root[
"video_length"] = video_length_stream.str();
136 root[
"video_timebase"] = Json::Value(Json::objectValue);
147 root[
"audio_timebase"] = Json::Value(Json::objectValue);
152 root[
"metadata"] = Json::Value(Json::objectValue);
155 root[
"metadata"][it.first] = it.second;
165 if (!root[
"has_video"].isNull())
167 if (!root[
"has_audio"].isNull())
169 if (!root[
"has_single_image"].isNull())
171 if (!root[
"duration"].isNull())
173 if (!root[
"file_size"].isNull())
175 if (!root[
"height"].isNull())
177 if (!root[
"width"].isNull())
179 if (!root[
"pixel_format"].isNull())
181 if (!root[
"fps"].isNull() && root[
"fps"].isObject()) {
182 if (!root[
"fps"][
"num"].isNull())
184 if (!root[
"fps"][
"den"].isNull())
187 if (!root[
"video_bit_rate"].isNull())
189 if (!root[
"pixel_ratio"].isNull() && root[
"pixel_ratio"].isObject()) {
190 if (!root[
"pixel_ratio"][
"num"].isNull())
192 if (!root[
"pixel_ratio"][
"den"].isNull())
195 if (!root[
"display_ratio"].isNull() && root[
"display_ratio"].isObject()) {
196 if (!root[
"display_ratio"][
"num"].isNull())
198 if (!root[
"display_ratio"][
"den"].isNull())
201 if (!root[
"vcodec"].isNull())
203 if (!root[
"video_length"].isNull())
205 if (!root[
"video_stream_index"].isNull())
207 if (!root[
"video_timebase"].isNull() && root[
"video_timebase"].isObject()) {
208 if (!root[
"video_timebase"][
"num"].isNull())
210 if (!root[
"video_timebase"][
"den"].isNull())
213 if (!root[
"interlaced_frame"].isNull())
215 if (!root[
"top_field_first"].isNull())
217 if (!root[
"acodec"].isNull())
220 if (!root[
"audio_bit_rate"].isNull())
222 if (!root[
"sample_rate"].isNull())
224 if (!root[
"channels"].isNull())
226 if (!root[
"channel_layout"].isNull())
228 if (!root[
"audio_stream_index"].isNull())
230 if (!root[
"audio_timebase"].isNull() && root[
"audio_timebase"].isObject()) {
231 if (!root[
"audio_timebase"][
"num"].isNull())
233 if (!root[
"audio_timebase"][
"den"].isNull())
236 if (!root[
"metadata"].isNull() && root[
"metadata"].isObject()) {
237 for( Json::Value::const_iterator itr = root[
"metadata"].begin() ; itr != root[
"metadata"].end() ; itr++ ) {
238 std::string key = itr.key().asString();
int num
Numerator for the fraction.
Header file for ClipBase class.
Header file for ReaderBase class.
int width
The width of the video (in pixesl)
ReaderBase()
Constructor for the base reader, where many things are initialized.
float duration
Length of time (in seconds)
double ToDouble() const
Return this fraction as a double (i.e. 1/2 = 0.5)
void DisplayInfo(std::ostream *out=&std::cout)
Display file information in the standard output stream (stdout)
bool has_video
Determines if this file has a video stream.
int64_t file_size
Size of file (in bytes)
int audio_bit_rate
The bit rate of the audio stream (in bytes)
bool has_audio
Determines if this file has an audio stream.
virtual Json::Value JsonValue() const =0
Generate Json::Value for this object.
Header file for Frame class.
int audio_stream_index
The index of the audio stream.
int64_t video_length
The number of frames in the video stream.
int height
The height of the video (in pixels)
openshot::Fraction video_timebase
The video timebase determines how long each frame stays on the screen.
Header file for JSON class.
This class represents a fraction.
std::map< std::string, std::string > metadata
An optional map/dictionary of metadata for this reader.
openshot::ChannelLayout channel_layout
The channel layout (mono, stereo, 5 point surround, etc...)
bool has_single_image
Determines if this file only contains a single image.
ChannelLayout
This enumeration determines the audio channel layout (such as stereo, mono, 5 point surround...
This abstract class is the base class, used by all clips in libopenshot.
virtual void SetJsonValue(const Json::Value root)=0
Load Json::Value into this object.
openshot::ClipBase * ParentClip()
Parent clip object of this reader (which can be unparented and NULL)
openshot::ReaderInfo info
Information about the current media file.
openshot::Fraction audio_timebase
The audio timebase determines how long each audio packet should be played.
std::string vcodec
The name of the video codec used to encode / decode the video stream.
openshot::ClipBase * clip
Pointer to the parent clip instance (if any)
This namespace is the default namespace for all code in the openshot library.
int pixel_format
The pixel format (i.e. YUV420P, RGB24, etc...)
openshot::Fraction display_ratio
The ratio of width to height of the video stream (i.e. 640x480 has a ratio of 4/3) ...
int video_bit_rate
The bit rate of the video stream (in bytes)
openshot::Fraction pixel_ratio
The pixel ratio of the video stream as a fraction (i.e. some pixels are not square) ...
int den
Denominator for the fraction.
int channels
The number of audio channels used in the audio stream.
int video_stream_index
The index of the video stream.
openshot::Fraction fps
Frames per second, as a fraction (i.e. 24/1 = 24 fps)
std::string acodec
The name of the audio codec used to encode / decode the video stream.
int sample_rate
The number of audio samples per second (44100 is a common sample rate)