1

I asked here for a solution how single video images can be extracted very fast from avi files.

Piotr Wendykier gave a solution for Mathematica 11.3.

Now I'm using Mathematica 12 and his solution does not work anymore.

Why

i = MediaTools`Private`$MFReadNextFrame[]

does not read an image out of the video as in version 11.3?

In[1]:= file = 
 URLSave["http://mirrors.standaloneinstaller.com/video-sample/\
Panasonic_HDC_TM_700_P_50i.avi", "c:\\tmp\\sample.avi"]

Out[1]= "c:\\tmp\\sample.avi"

In[2]:= Needs["MediaTools`"]

In[3]:= MediaTools`Private`$MFInitReader[file]

Out[3]= MediaTools`Private`$MFInitReader["c:\\tmp\\sample.avi"]

In[4]:= AbsoluteTiming[i = MediaTools`Private`$MFReadNextFrame[];]

Out[4]= {1.9*10^-6, Null}

In[5]:= MediaTools`Private`$MFFinalizeReader[]

Out[5]= MediaTools`Private`$MFFinalizeReader[]

In[6]:= ImageDimensions[i]

During evaluation of In[6]:= ImageDimensions::imginv: Expecting an image or graphics instead of MediaTools`Private`$MFReadNextFrame[].

Out[6]= ImageDimensions[MediaTools`Private`$MFReadNextFrame[]]
Alexey Popkov
  • 61,809
  • 7
  • 149
  • 368
mrz
  • 11,686
  • 2
  • 25
  • 81

1 Answers1

4

In Mathematica 12 we have renamed these private functions. The following code works in 12.0:

In[1]:= file = 
 URLSave["http://mirrors.standaloneinstaller.com/video-sample/\
Panasonic_HDC_TM_700_P_50i.avi", "c:\\tmp\\sample.avi"]

Out[1]= "c:\\tmp\\sample.avi"

In[2]:= Needs["MediaTools`"]

In[3]:= MediaTools`Private`$MFInitVideoReader[file]

Out[3]= True

In[4]:= AbsoluteTiming[i = MediaTools`Private`$MFReadNextVideoFrame[];]

Out[4]= {0.0411032, Null}

In[5]:= MediaTools`Private`$MFFinalizeVideoReader[]

Out[5]= True

In[6]:= ImageDimensions[i]

Out[6]= {1920, 1080}

These functions have usage documentation:

enter image description here

Piotr Wendykier
  • 1,281
  • 9
  • 10