Click here to Skip to main content
15,849,996 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Just a quick high-level question.

I have an application that wants to perform some image processing on a video file. What I need is to access each frame in the video and and process each frame in some way. This is possible with API's like OpenCV.

However, I have some particular requirements. Here's the list.

1) I want to play a video using some sort of media player. The presentation rate is important e.g. the playback has to be at the appropriate rate. Should also play sound.
2) I want to record the current frame/presentation time at irregular intervals while the video is being played.
3) I want to access the video frames at these irregular intervals and do some image processing.
4) Step 3 may be done in real-time (so we can see the frame updates as I watch the video) or may be done later to create a new video file with the updates in.

Note the language would be .net or c/c++ or a mix.

For instance,
1) use WPF MediaElement to play video in c#
2) Save current presentation time
3) use OpenCV Capture to get the video frames (needs to convert presentation time from (2) to frame number). Also this needs to loop through each frame in the video one by one to get to the required frame.
4) Could save to new file or play back with time delay???

My question is, how would you go about doing this??? Any good technologies, that you know that you could share????

Many thanks for any advice...

The_Inventor 16-Apr-13 4:45am    
I am not sure if it is possible, but sounds like you need a variable FRAME_RATE Player module that updates a WORKING_MEMORY file that has a FRAME_STEP, that typically is a constant that is set before MEDIA_RENDER is engaged, that you can vary in real-time while working on your film file.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900