1
+ import logging
2
+
3
+ logging .basicConfig (level = logging .DEBUG )
4
+
5
+ from fractions import Fraction
6
+ import ffmpegio
7
+ from tempfile import TemporaryDirectory
8
+ from os import path
9
+ import numpy as np
10
+
11
+
12
+ def test_gray12le ():
13
+
14
+ # codec = "h264"
15
+ # size = [256, 256]
16
+ # pix_fmt = "gray"
17
+ # vmax = 2**8
18
+ # dtype = "u1"
19
+ # framerate = Fraction(30, 1)
20
+
21
+ codec = "ffv1"
22
+ size = [254 , 177 ]
23
+ pix_fmt = "gray12le"
24
+ vmax = 2 ** 12
25
+ dtype = "<u2"
26
+ framerate = Fraction (32 , 1 )
27
+
28
+ show_log = True
29
+
30
+ with TemporaryDirectory () as dir :
31
+ filepath = path .join (dir , "temp.mkv" )
32
+ with ffmpegio .open (
33
+ filepath ,
34
+ "vw" ,
35
+ framerate ,
36
+ # s_in=size,
37
+ pix_fmt_in = pix_fmt ,
38
+ # pix_fmt=pix_fmt,
39
+ show_log = show_log ,
40
+ vcodec = codec ,
41
+ ) as f :
42
+ for n in range (30 ):
43
+ I = np .random .randint (0 , vmax , [* size [::- 1 ]], dtype )
44
+ f .write (I )
45
+
46
+ with ffmpegio .open (filepath , "rv" , show_log = show_log ) as f :
47
+ for Iout in f :
48
+ pass
49
+
50
+ assert np .array_equal (I , Iout [- 1 , :, :, 0 ])
51
+
52
+ # print(ffmpegio.probe.video_streams_basic(filepath))
53
+ r_out , Iout = ffmpegio .video .read (
54
+ filepath ,
55
+ # show_log=show_log,
56
+ # pix_fmt="gray12le",
57
+ )
58
+
59
+ assert np .array_equal (I , Iout [- 1 , :, :, 0 ])
60
+
61
+ filepath1 = path .join (dir , "temp1.mkv" )
62
+ ffmpegio .video .write (
63
+ filepath1 ,
64
+ r_out ,
65
+ Iout ,
66
+ show_log = show_log ,
67
+ pix_fmt_in = "gray12le" ,
68
+ vcodec = codec ,
69
+ )
70
+ r_out , Iout1 = ffmpegio .video .read (
71
+ filepath1 ,
72
+ # show_log=show_log,
73
+ # pix_fmt="gray12le",
74
+ )
75
+ assert np .array_equal (Iout1 , Iout )
76
+
77
+ # print(ffmpegio.probe.video_streams_basic(filepath))
78
+ I0 = ffmpegio .image .read (
79
+ filepath ,
80
+ # show_log=show_log
81
+ # pix_fmt="gray12le",
82
+ )
83
+
84
+ assert np .array_equal (I0 , Iout [0 , :, :, 0 ])
85
+
86
+ # print(sorted(ffmpegio.caps.pix_fmts().keys()))
87
+
88
+ if __name__ == '__main__' :
89
+ test_gray12le ()
90
+
91
+
92
+ # -nostdin -hide_banner -pix_fmt gray12le -r 32 -f rawvideo -s 254x177 -i -
93
+ # -vcodec ffv1 -r 32 'C:\Users\tikum\AppData\Local\Temp\tmp_xgk_lki\temp.mkv'
94
+ # -nostdin -hide_banner -f rawvideo -c:v rawvideo -s 254x177 -r 32 -pix_fmt gray12le -i -
95
+ # -vcodec ffv1 'C:\Users\tikum\AppData\Local\Temp\tmp39wbec7m\temp1.mkv'
0 commit comments