mirror of https://github.com/open-mmlab/mmcv.git
59 lines
1.4 KiB
Markdown
59 lines
1.4 KiB
Markdown
|
## Video
|
||
|
|
||
|
This module provides the following functionalities.
|
||
|
|
||
|
- A `VideoReader` class with friendly apis to read and convert videos.
|
||
|
- Some methods for editing (cut, concat, resize) videos.
|
||
|
- Optical flow read/write.
|
||
|
|
||
|
|
||
|
The `VideoReader` class provides sequence like apis to access video frames.
|
||
|
It will internally cache the frames which have been visited.
|
||
|
|
||
|
```python
|
||
|
video = mmcv.VideoReader('test.mp4')
|
||
|
|
||
|
# obtain basic information
|
||
|
print(len(video))
|
||
|
print(video.width, video.height, video.resolution, video.fps)
|
||
|
|
||
|
# iterate over all frames
|
||
|
for frame in video:
|
||
|
print(frame.shape)
|
||
|
|
||
|
# read the next frame
|
||
|
img = video.read()
|
||
|
|
||
|
# read a frame by index
|
||
|
img = video[100]
|
||
|
|
||
|
# read some frames
|
||
|
img = video[5:10]
|
||
|
```
|
||
|
|
||
|
To convert a video to images or generate a video from a image directory.
|
||
|
|
||
|
```python
|
||
|
# split a video into frames and save to a folder
|
||
|
video = mmcv.VideoReader('test.mp4')
|
||
|
video.cvt2frames('out_dir')
|
||
|
|
||
|
# generate video from frames
|
||
|
mmcv.frames2video('out_dir', 'test.avi')
|
||
|
```
|
||
|
|
||
|
There are also some methods for editing videos, which wraps the commands of ffmpeg.
|
||
|
|
||
|
```python
|
||
|
# cut a video clip
|
||
|
mmcv.cut_video('test.mp4', 'clip1.mp4', start=3, end=10, vcodec='h264')
|
||
|
|
||
|
# join a list of video clips
|
||
|
mmcv.concat_video(['clip1.mp4', 'clip2.mp4'], 'joined.mp4', log_level='quiet')
|
||
|
|
||
|
# resize a video with the specified size
|
||
|
mmcv.resize_video('test.mp4', 'resized1.mp4', (360, 240))
|
||
|
|
||
|
# resize a video with a scaling ratio of 2
|
||
|
mmcv.resize_video('test.mp4', 'resized2.mp4', ratio=2)
|
||
|
```
|