probe   A
last analyzed

Complexity

Total Complexity 1

Size/Duplication

Total Lines 94
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 48
dl 0
loc 94
rs 10
c 0
b 0
f 0
wmc 1

1 Function

Rating   Name   Duplication   Size   Complexity  
A main() 0 8 1
1
"""
2
examples.probe
3
~~~~~~~~~~~~
4
5
Probe the video
6
7
8
:copyright: (c) 2019 by Amin Yazdanpanah.
9
:website: https://www.aminyazdanpanah.com
10
:email: [email protected]
11
:license: MIT, see LICENSE for more details.
12
"""
13
14
import argparse
15
import datetime
16
import logging
17
import os
18
19
from ffmpeg_streaming import FFProbe
20
21
logging.basicConfig(filename='probe.log', level=logging.NOTSET, format='[%(asctime)s] %(levelname)s: %(message)s')
22
23
24
def main():
25
    parser = argparse.ArgumentParser()
26
27
    parser.add_argument('-i', '--input', required=True, help='The path to the video file (required).')
28
29
    args = parser.parse_args()
30
31
    return FFProbe(args.input)
32
33
34
if __name__ == "__main__":
35
    ffprobe = main()
36
37
    current_dir = os.path.dirname(os.path.abspath(__file__))
38
    ffprobe.save_as_json(os.path.join(current_dir, 'probe.json'))
39
40
    all_media = ffprobe.all()
41
42
    video_format = ffprobe.format()
43
44
    streams = ffprobe.streams().all()
45
    videos = ffprobe.streams().videos()
46
    audios = ffprobe.streams().audios()
47
48
    first_stream = ffprobe.streams().first_stream()
49
    first_video = ffprobe.streams().video()
50
    first_audio = ffprobe.streams().audio()
51
52
    print("all:")
53
    print(all_media)
54
55
    print("format:")
56
    print(video_format)
57
58
    print("streams:")
59
    print(streams)
60
61
    print("videos:")
62
    for video in videos:
63
        print(video)
64
65
    print("audios:")
66
    for audio in audios:
67
        print(audio)
68
69
    print("first stream:")
70
    print(first_stream)
71
72
    print("first video:")
73
    print(first_video)
74
75
    print("first audio:")
76
    print(first_audio)
77
78
    print("duration: {}".format(str(datetime.timedelta(seconds=float(video_format.get('duration', 0))))))
79
    # duration: 00:00:10.496
80
81
    print("size: {}k".format(round(int(video_format.get('size', 0)) / 1024)))
82
    # size: 290k
83
84
    print("overall bitrate: {}k".format(round(int(video_format.get('bit_rate', 0)) / 1024)))
85
    # overall bitrate: 221k
86
87
    print("dimensions: {}x{}".format(first_video.get('width', "Unknown"), first_video.get('height', "Unknown")))
88
    # dimensions: 480x270
89
90
    print("video bitrate: {}k".format(round(int(first_video.get('bit_rate', 0)) / 1024)))
91
    # video bitrate: 149k
92
93
    print("audio bitrate: {}k".format(round(int(first_audio.get('bit_rate', 0)) / 1024)))
94
    # audio bitrate: 64k
95