Giter Club home page Giter Club logo

Comments (3)

crackwitz avatar crackwitz commented on June 12, 2024 1

Thank you for looking into this. That is indeed the change I was hoping for. The patch you suggest looks sensible. The output looks correct. As you could run it, that's good enough for me. Unfortunately, after installing the wheel (clean environment), the import throws ImportError: DLL load failed so I can't verify this myself ;)

Meanwhile, I did switch to PyAV because I don't need this to work from C++. The downside to PyAV is the lack of hardware acceleration, not even for decoding. Doesn't really matter though because my processing will cost a lot more than the decoding.

I mean to quickly get a rough sampling of an entire file. Randomly accessed, keyframes are cheapest to decode. They're also often placed at scene changes, which is just what I need. I'm toying with the idea of diffing movie cuts (theatrical, director's cut, various footage rescans and remasters).

I "demux" the entire video stream and only decode keyframes (both with PyAV). That still requires reading the entire file. Before I understood how to use PyAV in this way, I had hoped to get a cheap list of keyframes using OpenCV, then make PyAV seek to each of them. I think there might be ways to get at a potentially available table listing the file offset for each keyframe packet. Seeking to keyframes is pretty damn cheap and I don't think ffmpeg does that with binary search if the container comes with such a table. I don't expect OpenCV to expose this and I don't think ffmpeg/PyAV expose this. It's a feature of some container formats but not all of them.

from opencv.

cudawarped avatar cudawarped commented on June 12, 2024

This is a result of packet filtering, 4.x...cudawarped:opencv:fix_24774_cap_ms should fix the issue. If you have time can you try this experimental wheel to see if it fixes the issue for you. With it I get the following output from your MRE

MRE output

0 0.000 True (1, 5717)
1 0.209 False (1, 87)
2 0.125 False (1, 82)
3 0.042 False (1, 84)
4 0.083 False (1, 84)
5 0.167 False (1, 84)
6 0.417 False (1, 88)
7 0.334 False (1, 82)
8 0.250 False (1, 84)
9 0.292 False (1, 84)
10 0.375 False (1, 84)
11 0.626 False (1, 88)
12 0.542 False (1, 82)
13 0.459 False (1, 84)
14 0.500 False (1, 84)
15 0.584 False (1, 84)
16 0.792 False (1, 88)
17 0.709 False (1, 82)
18 0.667 False (1, 84)
19 0.751 False (1, 84)
20 1.001 False (1, 88)
21 0.918 False (1, 82)
22 0.834 False (1, 84)
23 0.876 False (1, 84)
24 0.959 False (1, 84)
25 1.084 False (1, 88)
26 1.043 False (1, 84)
27 1.126 False (1, 90)
28 1.168 False (1, 90)
29 1.293 False (1, 90)
30 1.251 False (1, 84)
31 1.210 False (1, 84)
32 1.335 False (1, 66)
33 1.376 False (1, 66)
34 1.501 False (1, 66)
35 1.460 False (1, 62)
36 1.418 False (1, 62)
37 1.710 False (1, 65)
38 1.627 False (1, 62)
39 1.543 False (1, 62)
40 1.585 False (1, 62)
41 1.668 False (1, 62)
42 1.752 False (1, 67)
43 1.877 False (1, 67)
44 1.835 False (1, 62)
45 1.793 False (1, 63)
46 2.085 False (1, 67)
47 2.002 False (1, 62)
48 1.919 False (1, 62)
49 1.960 False (1, 62)
50 2.044 False (1, 62)
51 2.294 False (1, 65)
52 2.211 False (1, 62)
53 2.127 False (1, 62)
54 2.169 False (1, 62)
55 2.252 False (1, 62)
56 2.502 False (1, 65)
57 2.419 False (1, 62)
58 2.336 False (1, 62)
59 2.377 False (1, 62)
60 2.461 False (1, 62)
61 2.586 False (1, 65)
62 2.544 False (1, 62)
63 2.794 False (1, 68)
64 2.711 False (1, 62)
65 2.628 False (1, 64)
66 2.669 False (1, 64)
67 2.753 False (1, 64)
68 2.836 False (1, 67)
69 2.961 False (1, 67)
70 2.920 False (1, 62)
71 2.878 False (1, 63)
72 3.003 False (1, 67)
73 3.045 False (1, 66)
74 3.170 False (1, 66)
75 3.128 False (1, 62)
76 3.086 False (1, 62)
77 3.212 False (1, 66)
78 3.253 False (1, 66)
79 3.378 False (1, 66)
80 3.337 False (1, 62)
81 3.295 False (1, 62)
82 3.587 False (1, 65)
83 3.503 False (1, 62)
84 3.420 False (1, 62)
85 3.462 False (1, 62)
86 3.545 False (1, 62)
87 3.670 False (1, 67)
88 3.629 False (1, 62)
89 3.879 False (1, 68)
90 3.795 False (1, 62)
91 3.712 False (1, 64)
92 3.754 False (1, 64)
93 3.837 False (1, 64)
94 4.086 False (1, 68)
95 4.004 False (1, 62)
96 3.921 False (1, 62)
97 3.962 False (1, 62)
98 4.046 False (1, 62)
99 4.296 False (1, 65)
100 4.213 False (1, 62)
101 4.129 False (1, 62)
102 4.171 False (1, 62)
103 4.254 False (1, 62)
104 4.338 False (1, 65)
105 4.463 False (1, 67)
106 4.421 False (1, 62)
107 4.379 False (1, 63)
108 4.671 False (1, 67)
109 4.588 False (1, 62)
110 4.504 False (1, 62)
111 4.546 False (1, 62)
112 4.630 False (1, 62)
113 4.755 False (1, 67)
114 4.713 False (1, 62)
115 4.796 False (1, 67)
116 4.838 False (1, 67)
117 4.963 False (1, 67)
118 4.922 False (1, 64)
119 4.880 False (1, 62)
120 5.005 False (1, 66)
121 5.047 False (1, 66)
122 5.172 False (1, 66)
123 5.130 False (1, 62)
124 5.088 False (1, 62)
125 5.380 False (1, 65)
126 5.297 False (1, 62)
127 5.214 False (1, 62)
128 5.255 False (1, 62)
129 5.339 False (1, 62)
130 5.422 False (1, 67)
131 5.547 False (1, 67)
132 5.505 False (1, 62)
133 5.464 False (1, 63)
134 5.756 False (1, 67)
135 5.672 False (1, 62)
136 5.589 False (1, 62)
137 5.631 False (1, 62)
138 5.714 False (1, 62)
139 5.964 False (1, 65)
140 5.881 False (1, 62)
141 5.797 False (1, 62)
142 5.839 False (1, 62)
143 5.923 False (1, 62)
144 6.173 False (1, 65)
145 6.089 False (1, 62)
146 6.006 False (1, 62)
147 6.048 False (1, 62)
148 6.131 False (1, 62)
149 6.256 False (1, 65)
150 6.215 False (1, 62)
151 6.465 False (1, 68)
152 6.381 False (1, 62)
153 6.298 False (1, 64)
154 6.340 False (1, 64)
155 6.423 False (1, 64)
156 6.506 False (1, 67)
157 6.632 False (1, 67)
158 6.590 False (1, 62)
159 6.548 False (1, 63)
160 6.673 False (1, 67)
161 6.715 False (1, 66)
162 6.840 False (1, 66)
163 6.798 False (1, 62)
164 6.757 False (1, 62)
165 6.882 False (1, 66)
166 6.924 False (1, 66)
167 7.049 False (1, 66)
168 7.007 False (1, 62)
169 6.965 False (1, 62)
170 7.257 False (1, 65)
171 7.174 False (1, 62)
172 7.090 False (1, 62)
173 7.132 False (1, 62)
174 7.216 False (1, 62)
175 7.341 False (1, 67)
176 7.299 False (1, 62)
177 7.549 False (1, 68)
178 7.466 False (1, 62)
179 7.382 False (1, 64)
180 7.424 False (1, 64)
181 7.507 False (1, 64)
182 7.758 False (1, 68)
183 7.674 False (1, 62)
184 7.591 False (1, 62)
185 7.633 False (1, 62)
186 7.716 False (1, 62)
187 7.966 False (1, 65)
188 7.883 False (1, 62)
189 7.799 False (1, 62)
190 7.841 False (1, 62)
191 7.925 False (1, 62)
192 8.008 False (1, 65)
193 8.133 False (1, 67)
194 8.090 False (1, 62)
195 8.050 False (1, 63)
196 8.342 False (1, 67)
197 8.258 False (1, 62)
198 8.175 False (1, 62)
199 8.217 False (1, 62)
200 8.300 False (1, 62)
201 8.425 False (1, 67)
202 8.383 False (1, 62)
203 8.467 False (1, 67)
204 8.508 False (1, 67)
205 8.634 False (1, 67)
206 8.592 False (1, 64)
207 8.550 False (1, 62)
208 8.675 False (1, 66)
209 8.717 False (1, 66)
210 8.842 False (1, 66)
211 8.800 False (1, 62)
212 8.759 False (1, 62)
213 9.051 False (1, 65)
214 8.967 False (1, 62)
215 8.884 False (1, 62)
216 8.926 False (1, 62)
217 9.009 False (1, 62)
218 9.092 False (1, 67)
219 9.218 False (1, 67)
220 9.176 False (1, 62)
221 9.134 False (1, 63)
222 9.426 False (1, 67)
223 9.343 False (1, 62)
224 9.259 False (1, 62)
225 9.301 False (1, 62)
226 9.384 False (1, 62)
227 9.635 False (1, 65)
228 9.551 False (1, 62)
229 9.468 False (1, 62)
230 9.509 False (1, 62)
231 9.593 False (1, 62)
232 9.843 False (1, 65)
233 9.760 False (1, 62)
234 9.676 False (1, 62)
235 9.718 False (1, 62)
236 9.801 False (1, 62)
237 9.927 False (1, 65)
238 9.885 False (1, 62)
239 9.968 False (1, 67)
240 10.010 False (1, 67)
241 10.219 False (1, 67)
242 10.135 False (1, 64)
243 10.052 False (1, 62)
244 10.093 False (1, 62)
245 10.177 False (1, 62)
246 10.427 True (1, 3377)
247 10.344 False (1, 62)
248 10.260 False (1, 62)
249 10.302 False (1, 62)
250 10.385 False (1, 62)
251 10.636 False (1, 87)
252 10.552 False (1, 82)
253 10.469 False (1, 84)
254 10.510 False (1, 84)
255 10.594 False (1, 84)
256 10.844 False (1, 88)
257 10.761 False (1, 82)
258 10.677 False (1, 84)
259 10.719 False (1, 84)
260 10.802 False (1, 84)
261 11.011 False (1, 88)
262 10.928 False (1, 82)
263 10.886 False (1, 84)
264 10.969 False (1, 84)
265 11.094 False (1, 65)
266 11.053 False (1, 62)
267 11.136 False (1, 67)
268 11.178 False (1, 67)
269 11.303 False (1, 67)
270 11.261 False (1, 64)
271 11.220 False (1, 62)
272 11.345 False (1, 66)
273 11.386 False (1, 66)
274 11.511 False (1, 66)
275 11.470 False (1, 62)
276 11.428 False (1, 62)
277 11.553 False (1, 66)
278 11.595 False (1, 66)
279 11.720 False (1, 66)
280 11.678 False (1, 62)
281 11.637 False (1, 62)
282 11.929 False (1, 65)
283 11.845 False (1, 62)
284 11.762 False (1, 62)
285 11.803 False (1, 62)
286 11.887 False (1, 62)
287 12.137 False (1, 65)
288 12.054 False (1, 62)
289 11.970 False (1, 62)
290 12.012 False (1, 62)
291 12.095 False (1, 62)
292 12.346 False (1, 65)
293 12.262 False (1, 62)
294 12.179 False (1, 62)
295 12.221 False (1, 62)
296 12.304 False (1, 62)
297 12.554 False (1, 65)
298 12.471 False (1, 62)
299 12.387 False (1, 62)
300 12.429 False (1, 62)
301 12.512 False (1, 62)
302 12.763 False (1, 65)
303 12.679 False (1, 62)
304 12.596 False (1, 62)
305 12.638 False (1, 62)
306 12.721 False (1, 62)
307 12.846 False (1, 65)
308 12.804 False (1, 62)
309 12.888 False (1, 67)
310 13.013 False (1, 65)
311 12.971 False (1, 62)
312 12.930 False (1, 62)
313 13.055 False (1, 66)
314 13.096 False (1, 66)
315 13.222 False (1, 66)
316 13.180 False (1, 62)
317 13.138 False (1, 62)
318 13.263 False (1, 66)
319 13.305 False (1, 66)
320 13.430 False (1, 66)
321 13.388 False (1, 62)
322 13.347 False (1, 62)
323 13.472 False (1, 66)
324 13.513 False (1, 66)
325 13.639 False (1, 66)
326 13.597 False (1, 62)
327 13.555 False (1, 62)
328 13.847 False (1, 65)
329 13.764 False (1, 62)
330 13.680 False (1, 62)
331 13.722 False (1, 62)
332 13.805 False (1, 62)
333 14.056 False (1, 65)
334 13.972 False (1, 62)
335 13.889 False (1, 62)
336 13.931 False (1, 62)
337 14.014 False (1, 62)
338 14.264 False (1, 65)
339 14.181 False (1, 62)
340 14.097 False (1, 62)
341 14.139 False (1, 62)
342 14.223 False (1, 62)
343 14.473 False (1, 65)
344 14.389 False (1, 62)
345 14.306 False (1, 62)
346 14.348 False (1, 62)
347 14.431 False (1, 62)
348 14.681 False (1, 65)
349 14.598 False (1, 62)
350 14.514 False (1, 62)
351 14.556 False (1, 62)
352 14.640 False (1, 62)
353 14.765 False (1, 65)
354 14.723 False (1, 62)
355 14.806 False (1, 67)
356 14.932 False (1, 65)
357 14.890 False (1, 62)
358 14.848 False (1, 62)
359 14.973 False (1, 66)
360 15.015 False (1, 66)
361 15.140 False (1, 66)
362 15.098 False (1, 62)
363 15.057 False (1, 62)
364 15.182 False (1, 66)
365 15.224 False (1, 66)
366 15.349 False (1, 66)
367 15.307 False (1, 62)
368 15.265 False (1, 62)
369 15.390 False (1, 66)
370 15.432 False (1, 66)
371 15.557 False (1, 66)
372 15.515 False (1, 62)
373 15.474 False (1, 62)
374 15.766 False (1, 65)
375 15.682 False (1, 62)
376 15.599 False (1, 62)
377 15.641 False (1, 62)
378 15.724 False (1, 62)
379 15.974 False (1, 65)
380 15.891 False (1, 62)
381 15.807 False (1, 62)
382 15.849 False (1, 62)
383 15.933 False (1, 62)
384 16.183 False (1, 65)
385 16.099 False (1, 62)
386 16.016 False (1, 62)
387 16.058 False (1, 62)
388 16.141 False (1, 62)
389 16.391 False (1, 65)
390 16.308 False (1, 62)
391 16.225 False (1, 62)
392 16.266 False (1, 62)
393 16.350 False (1, 62)
394 16.600 False (1, 65)
395 16.516 False (1, 62)
396 16.433 False (1, 62)
397 16.475 False (1, 62)
398 16.558 False (1, 62)
399 16.683 False (1, 65)
400 16.642 False (1, 62)
401 16.725 False (1, 67)
402 16.850 False (1, 65)
403 16.808 False (1, 62)
404 16.767 False (1, 62)
405 16.892 False (1, 66)
406 16.934 False (1, 66)
407 17.059 False (1, 66)
408 17.017 False (1, 62)
409 16.975 False (1, 62)
410 17.100 False (1, 66)
411 17.142 False (1, 66)
412 17.267 False (1, 66)
413 17.226 False (1, 62)
414 17.184 False (1, 62)
415 17.309 False (1, 66)
416 17.351 False (1, 66)
417 17.476 False (1, 66)
418 17.434 False (1, 62)
419 17.392 False (1, 62)
420 17.684 False (1, 65)
421 17.601 False (1, 62)
422 17.517 False (1, 62)
423 17.559 False (1, 62)
424 17.643 False (1, 62)
425 17.893 False (1, 65)
426 17.809 False (1, 62)
427 17.726 False (1, 62)
428 17.768 False (1, 62)
429 17.851 False (1, 62)
430 18.101 False (1, 65)
431 18.018 False (1, 62)
432 17.935 False (1, 62)
433 17.976 False (1, 62)
434 18.060 False (1, 62)
435 18.310 False (1, 65)
436 18.227 False (1, 62)
437 18.143 False (1, 62)
438 18.185 False (1, 62)
439 18.268 False (1, 62)
440 18.518 False (1, 65)
441 18.435 False (1, 62)
442 18.352 False (1, 62)
443 18.393 False (1, 62)
444 18.477 False (1, 62)
445 18.602 False (1, 65)
446 18.560 False (1, 62)
447 18.644 False (1, 67)
448 18.769 False (1, 65)
449 18.727 False (1, 62)
450 18.685 False (1, 62)
451 18.810 False (1, 66)
452 18.852 False (1, 66)
453 18.977 False (1, 66)
454 18.936 False (1, 62)
455 18.894 False (1, 62)
456 19.019 False (1, 66)
457 19.061 False (1, 66)
458 19.186 False (1, 66)
459 19.144 False (1, 62)
460 19.102 False (1, 62)
461 19.228 False (1, 66)
462 19.269 False (1, 66)
463 19.394 False (1, 66)
464 19.353 False (1, 62)
465 19.311 False (1, 62)
466 19.603 False (1, 65)
467 19.519 False (1, 62)
468 19.436 False (1, 62)
469 19.478 False (1, 62)
470 19.561 False (1, 62)
471 19.811 False (1, 65)
472 19.728 False (1, 62)
473 19.645 False (1, 62)
474 19.686 False (1, 62)
475 19.770 False (1, 62)
476 20.020 False (1, 65)
477 19.937 False (1, 62)
478 19.853 False (1, 62)
479 19.895 False (1, 62)
480 19.978 False (1, 62)
481 20.229 False (1, 65)
482 20.145 False (1, 62)
483 20.062 False (1, 62)
484 20.103 False (1, 62)
485 20.187 False (1, 62)
486 20.437 False (1, 65)
487 20.354 False (1, 62)
488 20.270 False (1, 62)
489 20.312 False (1, 62)
490 20.395 False (1, 62)
491 20.520 False (1, 65)
492 20.479 False (1, 62)
493 20.562 False (1, 67)
494 20.687 False (1, 65)
495 20.646 False (1, 62)
496 20.604 False (1, 62)
497 20.854 True (1, 3377)
498 20.771 False (1, 65)
499 20.729 False (1, 62)
500 20.812 False (1, 62)
501 21.063 False (1, 87)
502 20.979 False (1, 82)
503 20.896 False (1, 84)
504 20.938 False (1, 84)
505 21.021 False (1, 84)

This makes it difficult for me to identify the PTSes of keyframes that can be seeked to quickly.

Just out of interest how will you use this to seek quickly. Are you using a third party decoder?

from opencv.

cudawarped avatar cudawarped commented on June 12, 2024

Unfortunately, after installing the wheel (clean environment), the import throws ImportError: DLL load failed so I can't verify this myself ;)

Meanwhile, I did switch to PyAV because I don't need this to work from C++.

Sorry I uploaded the wrong wheel. I've uploaded the correct one now for completeness but as you've switched to PyAV I guess its no longer of any use.

from opencv.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.