QUERY_VIDEO
QUERY_VIDEO obtains information about a video file without having to open and read it.
Note: Frame counts may vary slightly depending on the method used to obtain the count. Variabilities in timestamps and video standards, discontinuities in the videos themselves, or differences in the types of frames may influence the apparent frame count.
Note: Animated GIF files do not contain header information on the frame rate, duration, or the number of frames. These values are estimated from other header information and may be incorrect.
Note: QUERY_VIDEO is not available with the IDL Virtual Machine.
Examples
Example 1 - Obtain Information About a Video File
The following example uses a NASA video displaying the Coronal Mass Ejection (CME) event of August, 2012. The video is available online (see Resources and References, below) or in the \examples\data directory of your IDL installation.
Copy the following to the IDL command line to obtain information about the CME.mp4 file:
; Define the file to query.
file = FILEPATH('CME.mp4', $
SUBDIRECTORY=['examples','data'])
myVideoQuery = QUERY_VIDEO(file, info, STREAMS=vidStreams)
PRINT, info
HELP, info
IDL returns:
From this we can tell that the dimensions are 512x288, it's a video with 574 frames, is 19.1525 seconds long, written in the H.264/MPEG-4 codec, and has 29.97 frames per second playback rate. Now check the content of the vidStreams variable:
HELP, vidStreams
IDL displays similar information stored in the vidStreams variable:
Example 2: Get Codec and Format Information
Copy the following lines of code to the IDL command line to obtain general information about the codecs and formats currently supported in IDL:
result = QUERY_VIDEO(CODECS_READ=cRead, CODECS_WRITE=cWrite, $
FORMATS_READ=fRead, FORMATS_WRITE=fWrite)
PRINT, cRead
PRINT, cWrite
PRINT, fRead
PRINT, fWrite
IDL displays all of the current codec and format information.
Syntax
Result = QUERY_VIDEO( Filename [, Info] [, /AUDIO] [, CODECS_READ=variable] [, CODECS_WRITE=variable] [, FORMATS_READ=variable] [, FORMATS_WRITE=variable] [, METADATA=variable] [, STREAMS=variable] [, /VIDEO])
Return Value
This routine returns a long with the value of 1 (one) if the query was successful and the file type was correct, or 0 (zero) on failure, along with other information about the file.
Arguments
Filename
Set Filename to a scalar string containing the full path to a video file to query.
Note: This argument is not required when retrieving information on codecs or formats.
Info
Returns an anonymous structure containing information about the file.
Field |
IDL Data Type |
IDL Data Type |
---|---|---|
Dimensions |
2-D long array |
[width, height] of the first video stream in the file. |
Type |
String |
String identifying the file format: "VIDEO". |
Num_Frames |
Long |
The number of frames in the first video stream. |
Length |
Float |
The length, in seconds, of the first video stream. |
Codec |
String |
The codec used to encode the first video stream. |
Rate |
Float |
The desired playback rate of the first video stream. |
Keywords
AUDIO
Set this keyword in conjunction with CODECS_READ or CODECS_WRITE to return the audio codecs. The default is to return both video and audio codecs.
CODECS_READ
Assign CODECS_READ to a named variable in which to return a string array listing all the readable codecs currently supported.
CODECS_WRITE
Set this keyword to a named variable in which to return a string array listing all the writable codecs currently supported.
FORMATS_READ
Set this keyword to a named variable in which to return a string array listing all the readable formats currently supported.
FORMATS_WRITE
Assign FORMATS_WRITE to a named variable in which to return a string array listing all the writable formats currently supported.
METADATA
Set this keyword to a named variable in which to return a 2-dimensional string array containing all of the metadata in the file. Each pair of strings will represent a [key, value] pair of metadata.
STREAMS
Assign STREAMS to a named variable to return an array of structures describing the streams available in the currently open file. If no streams are found, IDL returns !NULL.
Field |
IDL Data Type |
IDL Data Type |
---|---|---|
PID |
Long |
Internal ID of the stream. |
Type |
Ulong |
0=unknown; 1=video; 2=audio; 3=data. |
Rate |
Float |
For video: frames per second. For audio: Hertz |
Width |
Ulong |
For video: width in pixels of a frame |
Height |
Ulong |
For video: height in pixels of a frame |
Channels |
Ulong |
Number of audio channels in the stream. |
Codec |
String |
Codec used for encoding the stream. |
Length |
Float |
Time, in seconds, of the stream. |
Count |
Ulong |
Number of frames or data packets in the stream. |
Note: IDL takes the information returned from the metadata written in the file. It is possible, depending on the file's encoding, for the actual length and count to be different than what is returned here. To obtain the actual number of frames and the time stamp on each frame, use the TIME_OUT and NODATA keywords to READ_VIDEO.
VIDEO
Set this keyword in conjunction with CODECS_READ or CODECS_WRITE to return the video codecs. The default is to return both video and audio codecs.
Version History
8.2.3 |
Introduced |
Resources and References
The NASA "CME.mp4" video used in the example is courtesy of the Solar Dynamics Observatory (SDO) and the Solar and Heliospheric Observatory (SOHO). The file is available for download here:
https://www.nasa.gov/multimedia/videogallery/index.html?media_id=160387251
A longer, similar video that can be substituted in the example code, is available for download here:
https://www.nasa.gov/mission_pages/sdo/news/coronal-rain.html
See Also
Creating Video, IDLffVideoRead, IDLffVideoWrite, READ_VIDEO, WRITE_VIDEO