In [83]:
%matplotlib inline
import skvideo.io
import skvideo.datasets
import matplotlib.pyplot as plt

In [109]:
fn = skvideo.datasets.bigbuckbunny()

In [110]:
fn


Out[110]:
'/Users/koichiro.mori/.pyenv/versions/anaconda3-4.2.0/lib/python3.5/site-packages/skvideo/datasets/data/bigbuckbunny.mp4'

In [111]:
videogen = skvideo.io.vreader(fn)  # generator
for frame in videogen:
    print(frame.shape)
    plt.imshow(frame)
    break


(720, 1280, 3)

In [112]:
metadata = skvideo.io.ffprobe(fn)
metadata


Out[112]:
{'audio': OrderedDict([('@index', '1'),
              ('@codec_name', 'aac'),
              ('@codec_long_name', 'AAC (Advanced Audio Coding)'),
              ('@profile', 'LC'),
              ('@codec_type', 'audio'),
              ('@codec_time_base', '1/48000'),
              ('@codec_tag_string', 'mp4a'),
              ('@codec_tag', '0x6134706d'),
              ('@sample_fmt', 'fltp'),
              ('@sample_rate', '48000'),
              ('@channels', '6'),
              ('@channel_layout', '5.1'),
              ('@bits_per_sample', '0'),
              ('@r_frame_rate', '0/0'),
              ('@avg_frame_rate', '0/0'),
              ('@time_base', '1/48000'),
              ('@start_pts', '0'),
              ('@start_time', '0.000000'),
              ('@duration_ts', '254976'),
              ('@duration', '5.312000'),
              ('@bit_rate', '384828'),
              ('@max_bit_rate', '400392'),
              ('@nb_frames', '249'),
              ('disposition',
               OrderedDict([('@default', '1'),
                            ('@dub', '0'),
                            ('@original', '0'),
                            ('@comment', '0'),
                            ('@lyrics', '0'),
                            ('@karaoke', '0'),
                            ('@forced', '0'),
                            ('@hearing_impaired', '0'),
                            ('@visual_impaired', '0'),
                            ('@clean_effects', '0'),
                            ('@attached_pic', '0'),
                            ('@timed_thumbnails', '0')])),
              ('tag',
               [OrderedDict([('@key', 'creation_time'),
                             ('@value', '1970-01-01T00:00:00.000000Z')]),
                OrderedDict([('@key', 'language'), ('@value', 'und')]),
                OrderedDict([('@key', 'handler_name'),
                             ('@value', 'SoundHandler')])])]),
 'video': OrderedDict([('@index', '0'),
              ('@codec_name', 'h264'),
              ('@codec_long_name',
               'H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10'),
              ('@profile', 'Main'),
              ('@codec_type', 'video'),
              ('@codec_time_base', '1/50'),
              ('@codec_tag_string', 'avc1'),
              ('@codec_tag', '0x31637661'),
              ('@width', '1280'),
              ('@height', '720'),
              ('@coded_width', '1280'),
              ('@coded_height', '720'),
              ('@has_b_frames', '0'),
              ('@sample_aspect_ratio', '1:1'),
              ('@display_aspect_ratio', '16:9'),
              ('@pix_fmt', 'yuv420p'),
              ('@level', '31'),
              ('@chroma_location', 'left'),
              ('@refs', '1'),
              ('@is_avc', 'true'),
              ('@nal_length_size', '4'),
              ('@r_frame_rate', '25/1'),
              ('@avg_frame_rate', '25/1'),
              ('@time_base', '1/12800'),
              ('@start_pts', '0'),
              ('@start_time', '0.000000'),
              ('@duration_ts', '67584'),
              ('@duration', '5.280000'),
              ('@bit_rate', '1205959'),
              ('@bits_per_raw_sample', '8'),
              ('@nb_frames', '132'),
              ('disposition',
               OrderedDict([('@default', '1'),
                            ('@dub', '0'),
                            ('@original', '0'),
                            ('@comment', '0'),
                            ('@lyrics', '0'),
                            ('@karaoke', '0'),
                            ('@forced', '0'),
                            ('@hearing_impaired', '0'),
                            ('@visual_impaired', '0'),
                            ('@clean_effects', '0'),
                            ('@attached_pic', '0'),
                            ('@timed_thumbnails', '0')])),
              ('tag',
               [OrderedDict([('@key', 'creation_time'),
                             ('@value', '1970-01-01T00:00:00.000000Z')]),
                OrderedDict([('@key', 'language'), ('@value', 'und')]),
                OrderedDict([('@key', 'handler_name'),
                             ('@value', 'VideoHandler')])])])}

In [28]:
# 動画全体をまとめて読み込む
videodata = skvideo.io.vread(fn)
videodata.shape


Out[28]:
(132, 720, 1280, 3)

In [46]:
width, height = int(metadata['video']['@width']), int(metadata['video']['@height'])
nb_frames = int(metadata['video']['@nb_frames'])
duration = float(metadata['video']['@duration'])
r_frame_rate = metadata['video']['@r_frame_rate']
print(width, height)
print(nb_frames)
print(duration)
print(r_frame_rate)


1280 720
132
5.28
25/1

In [56]:
metadata = skvideo.io.ffprobe('../Projects/ai-cs-showroom/data/positive/0001422203-101162.mp4')
metadata


Out[56]:
{'audio': OrderedDict([('@index', '1'),
              ('@codec_name', 'aac'),
              ('@codec_long_name', 'AAC (Advanced Audio Coding)'),
              ('@profile', 'LC'),
              ('@codec_type', 'audio'),
              ('@codec_time_base', '1/44100'),
              ('@codec_tag_string', 'mp4a'),
              ('@codec_tag', '0x6134706d'),
              ('@sample_fmt', 'fltp'),
              ('@sample_rate', '44100'),
              ('@channels', '1'),
              ('@channel_layout', 'mono'),
              ('@bits_per_sample', '0'),
              ('@r_frame_rate', '0/0'),
              ('@avg_frame_rate', '0/0'),
              ('@time_base', '1/44100'),
              ('@start_pts', '0'),
              ('@start_time', '0.000000'),
              ('@duration_ts', '31125339'),
              ('@duration', '705.790000'),
              ('@bit_rate', '93599'),
              ('@max_bit_rate', '95232'),
              ('@nb_frames', '30387'),
              ('disposition',
               OrderedDict([('@default', '1'),
                            ('@dub', '0'),
                            ('@original', '0'),
                            ('@comment', '0'),
                            ('@lyrics', '0'),
                            ('@karaoke', '0'),
                            ('@forced', '0'),
                            ('@hearing_impaired', '0'),
                            ('@visual_impaired', '0'),
                            ('@clean_effects', '0'),
                            ('@attached_pic', '0'),
                            ('@timed_thumbnails', '0')])),
              ('tag',
               [OrderedDict([('@key', 'language'), ('@value', 'und')]),
                OrderedDict([('@key', 'handler_name'),
                             ('@value', 'SoundHandler')])])]),
 'video': OrderedDict([('@index', '0'),
              ('@codec_name', 'h264'),
              ('@codec_long_name',
               'H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10'),
              ('@profile', 'High'),
              ('@codec_type', 'video'),
              ('@codec_time_base', '352863/6835000'),
              ('@codec_tag_string', 'avc1'),
              ('@codec_tag', '0x31637661'),
              ('@width', '640'),
              ('@height', '360'),
              ('@coded_width', '640'),
              ('@coded_height', '360'),
              ('@has_b_frames', '0'),
              ('@sample_aspect_ratio', '0:1'),
              ('@display_aspect_ratio', '0:1'),
              ('@pix_fmt', 'yuv420p'),
              ('@level', '41'),
              ('@chroma_location', 'left'),
              ('@refs', '1'),
              ('@is_avc', 'true'),
              ('@nal_length_size', '4'),
              ('@r_frame_rate', '30000/1001'),
              ('@avg_frame_rate', '3417500/352863'),
              ('@time_base', '1/16000'),
              ('@start_pts', '0'),
              ('@start_time', '0.000000'),
              ('@duration_ts', '11291616'),
              ('@duration', '705.726000'),
              ('@bit_rate', '251043'),
              ('@bits_per_raw_sample', '8'),
              ('@nb_frames', '6835'),
              ('disposition',
               OrderedDict([('@default', '1'),
                            ('@dub', '0'),
                            ('@original', '0'),
                            ('@comment', '0'),
                            ('@lyrics', '0'),
                            ('@karaoke', '0'),
                            ('@forced', '0'),
                            ('@hearing_impaired', '0'),
                            ('@visual_impaired', '0'),
                            ('@clean_effects', '0'),
                            ('@attached_pic', '0'),
                            ('@timed_thumbnails', '0')])),
              ('tag',
               [OrderedDict([('@key', 'language'), ('@value', 'und')]),
                OrderedDict([('@key', 'handler_name'),
                             ('@value', 'VideoHandler')])])])}

In [71]:
video = skvideo.io.vread('../Projects/ai-cs-showroom/data/positive/0001422203-101162.mp4')  # generator
video.shape


Out[71]:
(6835, 360, 640, 3)

In [119]:
reader = skvideo.io.FFmpegReader(fn)
cnt = 0
gen = reader.nextFrame()
for frame in gen:
    print(cnt)
    cnt += 1
    for i in range(10):
        gen.__next__()
        cnt += 1
print(cnt)


0
11
22
33
44
55
66
77
88
99
110
121
132

In [107]:
all_frames = skvideo.io.vread(fn)

In [108]:
all_frames.shape


Out[108]:
(132, 720, 1280, 3)

In [ ]: