Algorytm odwracania video od tyłu.

0

Czy posiada z Was ktoś może wiedzę na jakiej zasadzie działają programy do odwracania video od tyłu, czy wyciągają jakąś każdą klatkę filmu do jakiegoś bufora i potem ustawiają je w odwrotnej kolejności da się w ogóle w jakiś sposób wyodrębnić z pliku .mp4 każdą klatkę z filmu czy trzeba się zagłębić w kodeki takich plików itp.?

1

Użyj np biblioteki OpenCV -> https://docs.opencv.org/3.1.0/d8/dfe/classcv_1_1VideoCapture.html
Źródło Google

#include <opencv2/opencv.hpp>

int main (int argc, char* argv[])
{
  cv::VideoCapture cap(argv[1]);

  double frame_rate = cap.get(CV_CAP_PROP_FPS);

  // Calculate number of msec per frame.
  // (msec/sec / frames/sec = msec/frame)
  double frame_msec = 1000 / frame_rate;

  // Seek to the end of the video.
  cap.set(CV_CAP_PROP_POS_AVI_RATIO, 1);

  // Get video length (because we're at the end).
  double video_time = cap.get(CV_CAP_PROP_POS_MSEC);

  cv::Mat frame;
  cv::namedWindow("window");

  while (video_time > 0)
  {
    // Decrease video time by number of msec in one frame
    // and seek to the new time.
    video_time -= frame_msec;
    cap.set(CV_CAP_PROP_POS_MSEC, video_time);

    // Grab the frame and display it.
    cap >> frame;
    cv::imshow("window", frame);

    // Necessary for opencv's event loop to work.
    // Wait for the length of one frame before
    // continuing the loop. Exit if the user presses
    // any key. If you want the video to play faster
    // or slower, adjust the parameter accordingly.    
    if (cv::waitKey(frame_msec) >= 0)
      break;
  }
}
0

Sprawdź narzędzie FFmpeg.
Możne w nim dużo dziwnych rzeczy rozrobić (np wyciągnąć pojedyncza klatkę w surowym formacie).
Nie zdziwiłbym się, jeśli nie ma wbudowanej opcji odwracania wideo.

1 użytkowników online, w tym zalogowanych: 0, gości: 1