Recherche avancée

Médias (91)

Autres articles (112)

  • Script d’installation automatique de MediaSPIP

    25 avril 2011, par

    Afin de palier aux difficultés d’installation dues principalement aux dépendances logicielles coté serveur, un script d’installation "tout en un" en bash a été créé afin de faciliter cette étape sur un serveur doté d’une distribution Linux compatible.
    Vous devez bénéficier d’un accès SSH à votre serveur et d’un compte "root" afin de l’utiliser, ce qui permettra d’installer les dépendances. Contactez votre hébergeur si vous ne disposez pas de cela.
    La documentation de l’utilisation du script d’installation (...)

  • Demande de création d’un canal

    12 mars 2010, par

    En fonction de la configuration de la plateforme, l’utilisateur peu avoir à sa disposition deux méthodes différentes de demande de création de canal. La première est au moment de son inscription, la seconde, après son inscription en remplissant un formulaire de demande.
    Les deux manières demandent les mêmes choses fonctionnent à peu près de la même manière, le futur utilisateur doit remplir une série de champ de formulaire permettant tout d’abord aux administrateurs d’avoir des informations quant à (...)

  • La sauvegarde automatique de canaux SPIP

    1er avril 2010, par

    Dans le cadre de la mise en place d’une plateforme ouverte, il est important pour les hébergeurs de pouvoir disposer de sauvegardes assez régulières pour parer à tout problème éventuel.
    Pour réaliser cette tâche on se base sur deux plugins SPIP : Saveauto qui permet une sauvegarde régulière de la base de donnée sous la forme d’un dump mysql (utilisable dans phpmyadmin) mes_fichiers_2 qui permet de réaliser une archive au format zip des données importantes du site (les documents, les éléments (...)

Sur d’autres sites (11598)

  • How video editor show real time preview of videos ? [closed]

    3 juin 2024, par SWIK

    I am trying to create a simple video editor that combine two video by layering one over another, i can easily do it with ffmpeg, but I am not sure how can I make a preview of it before making final video ? How video editor display preview without building them ? I am looking towards create a react application.

    


  • How to compare/show the difference between 2 videos in ffmpeg ?

    25 janvier 2016, par polarka

    I am a newbie at encoding. I have read and tried x264 in lossless mode (-qp 0), however I’d like to make sure that in my new video, every single pixel contains the same information as the source file (which is in YUV 420 so the loss of color conversion is avoidable, as far as I know). I want to be able to check that, because I don’t believe in that if someone just says its lossless.

    I welcome answers suggesting other codecs for lossless encoding, my only requirements for codecs are having one of the best compression rate and let me to pick different calculation times (such as the range from placebo to veryfast in x264) in order to adjust the compression level and calc time to my needs. But keep in mind that the original question is about how can I calculate the differences frame by frame of two videos and export it to a 3rd file, so I can watch it myself. I think that knowledge (if its possible and doesnt have serious limitations) will be useful for me in the future too.

  • Why does the frame time increase over time when decoding video using OpenCV ?

    21 février 2024, par ZeunO8

    I have set up OpenCV in my project. I added the OpenCV github repo as a submodule in my project and included it in my cmake dependencies file like so :

    


     set(WITH_FFMPEG ON)
 set(VIDEOIO_PLUGIN_LIST "ffmpeg")
 set(BUILD_PERF_TESTS OFF)
 set(BUILD_TESTS OFF)
 set(INSTALL_TESTS OFF)
 add_subdirectory(${COJE_SRC_DIR}/vendor/opencv build/build_opencv)


    


    I then set up a Video struct inheriting from IEntity (to get it working with my render drivers draw system) and that looks like :

    


    #pragma once&#xA;#include <opencv2></opencv2>opencv.hpp>&#xA;#include <coje></coje>interfaces/IEntity.hpp>&#xA;#include <coje></coje>enums/EFileLocation.hpp>&#xA;#include <coje></coje>String.hpp>&#xA;#include <coje></coje>graphics/Texture.hpp>&#xA;&#xA;namespace coje::entitys&#xA;{&#xA; struct Video : IEntity&#xA; {&#xA;  String filePath;&#xA;  EFileLocation fileLocation;&#xA;  String tempname;&#xA;  glm::vec2 size;&#xA;  UniquePointer videoCapturePointer;&#xA;  cv::Mat frame;&#xA;  cv::Mat frameConverted;&#xA;  Floating64 fps = 0;&#xA;  Floating64 frameCount = 0;&#xA;  Integer64 currentFrameIndex = -1;&#xA;  Video(const String &amp;filePath, const EFileLocation &amp;fileLocation, const glm::vec2 &amp;size, const glm::vec3 &amp;position, const glm::quat &amp;rotation);&#xA;  ~Video();&#xA;  void updateTextureWithFrame(const uInteger64 &amp;frameIndex, UniquePointer<texture> &amp;texturePointer);&#xA;  const Boolean resize(const glm::vec2 &amp;size);&#xA;  Boolean update(const uInteger64 &amp;elapsedTimeMs);&#xA; };&#xA;}&#xA;</texture>

    &#xA;

    The source for Video.cpp is :

    &#xA;

    #include <coje></coje>bullet.hpp>&#xA;#include <coje></coje>Common.hpp>&#xA;#include <coje></coje>Entitys/Video.hpp>&#xA;#include <coje></coje>Logger.hpp>&#xA;#include <coje></coje>Timer.hpp>&#xA;#include <cstdio>&#xA;using namespace coje::entitys;&#xA;/*&#xA; */&#xA;Video::Video(const String &amp;filePath, const EFileLocation &amp;fileLocation, const glm::vec2 &amp;size, const glm::vec3 &amp;position, const glm::quat &amp;rotation) : IEntity(EntityType)&#xA;{&#xA; this->position = position;&#xA; this->rotation = rotation;&#xA; File videoFile(filePath, fileLocation, "r");&#xA; auto videoBytes = videoFile.toBytes();&#xA; tempname = std::tmpnam(0);&#xA; {&#xA;  File tempFile(tempname, EFileLocation::Relative, "w");&#xA;  tempFile &amp; videoBytes;&#xA; }&#xA; videoCapturePointer = {ReleaseType::Delete, new cv::VideoCapture(tempname.c_str(), cv::CAP_FFMPEG), 1};&#xA; auto &amp;videoCapture = *videoCapturePointer.pointer;&#xA; if (!videoCapture.isOpened())&#xA; {&#xA;  Logger(LogType::ERROR, "%s\n", "Error opening video stream from memory");&#xA;  return;&#xA; }&#xA; // videoCapture.set(cv::CAP_PROP_BUFFERSIZE, 100);&#xA; uInteger64 bufferSize = videoCapture.get(cv::CAP_PROP_BUFFERSIZE);&#xA; Logger(LogType::INFO, "BufferSize: %llu\n", bufferSize);&#xA; fps = videoCapture.get(cv::CAP_PROP_FPS);&#xA; frameCount = videoCapture.get(cv::CAP_PROP_FRAME_COUNT);&#xA; uInteger64 frameWidth = videoCapture.get(cv::CAP_PROP_FRAME_WIDTH),&#xA;            frameHeight = videoCapture.get(cv::CAP_PROP_FRAME_HEIGHT);&#xA; resize(size);&#xA; textures.push_back({ReleaseType::Delete, new Texture(frameWidth, frameHeight, ETextureFormat::RGB8, ETextureType::UnsignedByte), 1});&#xA; glm::ivec3 *indices = (glm::ivec3 *)(*this).operator()(IEntity::Quanta::Indice, 2);&#xA; indices[0] = {3, 2, 1}; // front&#xA; indices[1] = {1, 0, 3};&#xA; glm::vec2 *uvs = (glm::vec2 *)(*this).operator()<float>(IEntity::Quanta::UV2, 4);&#xA; auto _uvs = Common::getUVs2DQuad();&#xA; for (int index = 0; index &lt; 4; index&#x2B;&#x2B;)&#xA; {&#xA;  uvs[index] = _uvs._data[index];&#xA; }&#xA; TimerFunctions::addFunction({this, &amp;Video::update}, 0, 1000 / fps);&#xA; return;&#xA;};&#xA;/*&#xA; */&#xA;Video::~Video()&#xA;{&#xA; File tempFile(tempname);&#xA; tempFile.remove();&#xA;};&#xA;/*&#xA; */&#xA;void Video::updateTextureWithFrame(const uInteger64 &amp;frameIndex, UniquePointer<texture> &amp;texturePointer)&#xA;{&#xA; auto start = std::chrono::high_resolution_clock::now();&#xA; auto &amp;videoCapture = *videoCapturePointer.pointer;&#xA; videoCapture.set(cv::CAP_PROP_POS_FRAMES, frameIndex);&#xA; Boolean frameGrabSuccess = videoCapture.grab();&#xA; if (!frameGrabSuccess)&#xA; {&#xA;  Logger(LogType::ERROR, "%s\n", "Failed to grab frame from VideoCapture");&#xA;  return;&#xA; }&#xA; Boolean frameRetrieveSuccess = videoCapture.retrieve(frame);&#xA; if (!frameRetrieveSuccess)&#xA; {&#xA;  Logger(LogType::ERROR, "%s\n", "Failed to retrieve frame from VideoCapture");&#xA;  return;&#xA; }&#xA; auto end = std::chrono::high_resolution_clock::now();&#xA; std::chrono::duration elapsed = end - start;&#xA; std::cout &lt;&lt; "Video::updateTextureWithFrame took " &lt;&lt; elapsed.count() &lt;&lt; "ms\n";&#xA; cv::cvtColor(frame, frameConverted, cv::COLOR_BGR2RGB);&#xA; cv::flip(frameConverted, frameConverted, 0);&#xA; if (texturePointer.pointer)&#xA; {&#xA;  auto &amp;texture = texturePointer.pointer;&#xA;  if (texture->width != frameConverted.cols || texture->height != frameConverted.rows)&#xA;  {&#xA;   goto _newTexture;&#xA;  }&#xA;  else&#xA;  {&#xA;   texture->update(frameConverted.data);&#xA;  }&#xA; }&#xA; else&#xA; {&#xA; _newTexture:&#xA;  texturePointer = {ReleaseType::Delete, new Texture(frameConverted.cols, frameConverted.rows, frameConverted.data, ETextureFormat::RGB8, ETextureType::UnsignedByte), 1};&#xA; }&#xA;};&#xA;/*&#xA; */&#xA;const Boolean Video::resize(const glm::vec2 &amp;_size)&#xA;{&#xA; size = _size;&#xA; glm::vec3 *vertices = (glm::vec3 *)(*this).operator()<float>(IEntity::Quanta::Vertex, 4);&#xA; glm::vec3 topRight = {size.x / 2, size.y / 2, 0};&#xA; glm::vec3 bottomRight = {size.x / 2, -(size.y / 2), 0};&#xA; glm::vec3 bottomLeft = {-(size.x / 2), -(size.y / 2), 0};&#xA; glm::vec3 topLeft = {-(size.x / 2), size.y / 2, 0};&#xA; vertices[0] = topRight;&#xA; vertices[1] = bottomRight;&#xA; vertices[2] = bottomLeft;&#xA; vertices[3] = topLeft;&#xA; *changedPointer = true;&#xA; return true;&#xA;};&#xA;/*&#xA; */&#xA;Boolean Video::update(const uInteger64 &amp;elapsedTimeMs)&#xA;{&#xA; currentFrameIndex&#x2B;&#x2B;;&#xA; Logger(LogType::INFO, "Video-elapsedTime: %llums\n", elapsedTimeMs);&#xA; if (currentFrameIndex == frameCount - 1)&#xA; {&#xA;  return false;&#xA; }&#xA; auto &amp;texturePointer = textures._data[0];&#xA; updateTextureWithFrame(currentFrameIndex, texturePointer);&#xA; return true;&#xA;};&#xA;</float></texture></float></cstdio>

    &#xA;

    When running a simple test video @ 1280x720 the updateTextureWithFrame timer begins at 12ms but gradually over time increases to over 100ms and beyond. Causing video playback to be running at lower than defined frames per second.

    &#xA;

    What is causing this gradual increase in updateTextureWithFrame ?? How can I solve it ?

    &#xA;

    Edit :

    &#xA;

     uInteger64 bufferSize = videoCapture.get(cv::CAP_PROP_BUFFERSIZE);&#xA; Logger(LogType::INFO, "BufferSize: %llu\n", bufferSize);&#xA;

    &#xA;

    prints BufferSize : 0. Indicating setting CAP_PROP_BUFFERSIZE is not supported for ffmpeg

    &#xA;

    Edit2 :&#xA;Some logs of timings

    &#xA;

    Video::updateTextureWithFrame took 16.5161ms&#xA;Video::updateTextureWithFrame took 21.6109ms&#xA;Video::updateTextureWithFrame took 21.1443ms&#xA;Video::updateTextureWithFrame took 20.4253ms&#xA;Video::updateTextureWithFrame took 23.9015ms&#xA;Video::updateTextureWithFrame took 22.1348ms&#xA;Video::updateTextureWithFrame took 21.3723ms&#xA;Video::updateTextureWithFrame took 21.2186ms&#xA;Video::updateTextureWithFrame took 24.0211ms&#xA;Video::updateTextureWithFrame took 24.5907ms&#xA;Video::updateTextureWithFrame took 23.2134ms&#xA;Video::updateTextureWithFrame took 25.6763ms&#xA;Video::updateTextureWithFrame took 25.416ms&#xA;Video::updateTextureWithFrame took 25.2314ms&#xA;Video::updateTextureWithFrame took 26.3919ms&#xA;Video::updateTextureWithFrame took 24.1883ms&#xA;Video::updateTextureWithFrame took 27.7095ms&#xA;Video::updateTextureWithFrame took 26.5594ms&#xA;Video::updateTextureWithFrame took 26.6618ms&#xA;Video::updateTextureWithFrame took 29.496ms&#xA;Video::updateTextureWithFrame took 27.2731ms&#xA;Video::updateTextureWithFrame took 27.5113ms&#xA;Video::updateTextureWithFrame took 30.2855ms&#xA;Video::updateTextureWithFrame took 27.6773ms&#xA;Video::updateTextureWithFrame took 30.5532ms&#xA;Video::updateTextureWithFrame took 32.6858ms&#xA;Video::updateTextureWithFrame took 32.8735ms&#xA;Video::updateTextureWithFrame took 31.7369ms&#xA;Video::updateTextureWithFrame took 31.2453ms&#xA;Video::updateTextureWithFrame took 30.9424ms&#xA;Video::updateTextureWithFrame took 36.7046ms&#xA;Video::updateTextureWithFrame took 33.6224ms&#xA;Video::updateTextureWithFrame took 32.0368ms&#xA;Video::updateTextureWithFrame took 33.0109ms&#xA;Video::updateTextureWithFrame took 32.2155ms&#xA;Video::updateTextureWithFrame took 33.5314ms&#xA;Video::updateTextureWithFrame took 33.576ms&#xA;Video::updateTextureWithFrame took 37.8993ms&#xA;Video::updateTextureWithFrame took 33.9495ms&#xA;Video::updateTextureWithFrame took 35.776ms&#xA;Video::updateTextureWithFrame took 36.2566ms&#xA;Video::updateTextureWithFrame took 36.5887ms&#xA;Video::updateTextureWithFrame took 40.0839ms&#xA;Video::updateTextureWithFrame took 38.5146ms&#xA;Video::updateTextureWithFrame took 40.72ms&#xA;Video::updateTextureWithFrame took 37.8345ms&#xA;Video::updateTextureWithFrame took 37.9925ms&#xA;Video::updateTextureWithFrame took 39.0402ms&#xA;Video::updateTextureWithFrame took 39.8856ms&#xA;Video::updateTextureWithFrame took 41.3421ms&#xA;Video::updateTextureWithFrame took 41.0703ms&#xA;Video::updateTextureWithFrame took 42.9482ms&#xA;Video::updateTextureWithFrame took 42.9199ms&#xA;Video::updateTextureWithFrame took 44.2593ms&#xA;Video::updateTextureWithFrame took 41.2746ms&#xA;Video::updateTextureWithFrame took 45.7017ms&#xA;Video::updateTextureWithFrame took 46.1854ms&#xA;Video::updateTextureWithFrame took 44.154ms&#xA;Video::updateTextureWithFrame took 42.6004ms&#xA;Video::updateTextureWithFrame took 47.2442ms&#xA;Video::updateTextureWithFrame took 43.4156ms&#xA;Video::updateTextureWithFrame took 47.9288ms&#xA;Video::updateTextureWithFrame took 45.3475ms&#xA;Video::updateTextureWithFrame took 46.9646ms&#xA;Video::updateTextureWithFrame took 48.4978ms&#xA;Video::updateTextureWithFrame took 45.1322ms&#xA;Video::updateTextureWithFrame took 48.1365ms&#xA;Video::updateTextureWithFrame took 49.8857ms&#xA;Video::updateTextureWithFrame took 47.4854ms&#xA;Video::updateTextureWithFrame took 48.2378ms&#xA;Video::updateTextureWithFrame took 50.9174ms&#xA;Video::updateTextureWithFrame took 52.347ms&#xA;Video::updateTextureWithFrame took 51.6252ms&#xA;Video::updateTextureWithFrame took 52.2018ms&#xA;Video::updateTextureWithFrame took 49.2384ms&#xA;Video::updateTextureWithFrame took 50.9491ms&#xA;Video::updateTextureWithFrame took 52.2139ms&#xA;Video::updateTextureWithFrame took 53.3229ms&#xA;Video::updateTextureWithFrame took 56.0199ms&#xA;Video::updateTextureWithFrame took 55.582ms&#xA;Video::updateTextureWithFrame took 55.2675ms&#xA;Video::updateTextureWithFrame took 54.9446ms&#xA;Video::updateTextureWithFrame took 54.7955ms&#xA;Video::updateTextureWithFrame took 54.0296ms&#xA;Video::updateTextureWithFrame took 54.0375ms&#xA;Video::updateTextureWithFrame took 57.0916ms&#xA;Video::updateTextureWithFrame took 55.2474ms&#xA;Video::updateTextureWithFrame took 56.8046ms&#xA;Video::updateTextureWithFrame took 57.562ms&#xA;Video::updateTextureWithFrame took 59.9115ms&#xA;Video::updateTextureWithFrame took 59.3991ms&#xA;Video::updateTextureWithFrame took 60.0536ms&#xA;Video::updateTextureWithFrame took 59.9457ms&#xA;Video::updateTextureWithFrame took 57.5088ms&#xA;Video::updateTextureWithFrame took 59.1255ms&#xA;Video::updateTextureWithFrame took 62.2311ms&#xA;Video::updateTextureWithFrame took 59.0422ms&#xA;Video::updateTextureWithFrame took 62.0419ms&#xA;Video::updateTextureWithFrame took 62.0586ms&#xA;Video::updateTextureWithFrame took 64.0988ms&#xA;Video::updateTextureWithFrame took 64.743ms&#xA;Video::updateTextureWithFrame took 63.008ms&#xA;Video::updateTextureWithFrame took 65.1726ms&#xA;Video::updateTextureWithFrame took 63.3618ms&#xA;Video::updateTextureWithFrame took 65.6431ms&#xA;Video::updateTextureWithFrame took 63.8957ms&#xA;Video::updateTextureWithFrame took 65.1142ms&#xA;Video::updateTextureWithFrame took 67.2243ms&#xA;Video::updateTextureWithFrame took 65.1302ms&#xA;Video::updateTextureWithFrame took 66.4947ms&#xA;Video::updateTextureWithFrame took 66.092ms&#xA;Video::updateTextureWithFrame took 68.6997ms&#xA;Video::updateTextureWithFrame took 70.5683ms&#xA;Video::updateTextureWithFrame took 71.9019ms&#xA;Video::updateTextureWithFrame took 68.6088ms&#xA;Video::updateTextureWithFrame took 70.7946ms&#xA;Video::updateTextureWithFrame took 68.263ms&#xA;Video::updateTextureWithFrame took 66.1565ms&#xA;Video::updateTextureWithFrame took 70.6742ms&#xA;Video::updateTextureWithFrame took 70.7035ms&#xA;Video::updateTextureWithFrame took 73.8002ms&#xA;Video::updateTextureWithFrame took 73.1897ms&#xA;Video::updateTextureWithFrame took 74.006ms&#xA;Video::updateTextureWithFrame took 74.1048ms&#xA;Video::updateTextureWithFrame took 72.9378ms&#xA;Video::updateTextureWithFrame took 75.0651ms&#xA;Video::updateTextureWithFrame took 73.5676ms&#xA;Video::updateTextureWithFrame took 73.7706ms&#xA;Video::updateTextureWithFrame took 74.0839ms&#xA;Video::updateTextureWithFrame took 74.6773ms&#xA;Video::updateTextureWithFrame took 75.8827ms&#xA;Video::updateTextureWithFrame took 74.4724ms&#xA;Video::updateTextureWithFrame took 75.2119ms&#xA;Video::updateTextureWithFrame took 83.4102ms&#xA;Video::updateTextureWithFrame took 77.6811ms&#xA;Video::updateTextureWithFrame took 78.7307ms&#xA;Video::updateTextureWithFrame took 80.1705ms&#xA;Video::updateTextureWithFrame took 78.6064ms&#xA;Video::updateTextureWithFrame took 80.803ms&#xA;Video::updateTextureWithFrame took 80.0117ms&#xA;Video::updateTextureWithFrame took 78.2948ms&#xA;Video::updateTextureWithFrame took 81.0375ms&#xA;Video::updateTextureWithFrame took 78.7389ms&#xA;Video::updateTextureWithFrame took 80.2201ms&#xA;Video::updateTextureWithFrame took 82.8578ms&#xA;Video::updateTextureWithFrame took 84.2388ms&#xA;Video::updateTextureWithFrame took 84.6484ms&#xA;Video::updateTextureWithFrame took 87.6683ms&#xA;Video::updateTextureWithFrame took 82.8939ms&#xA;Video::updateTextureWithFrame took 84.015ms&#xA;Video::updateTextureWithFrame took 88.1832ms&#xA;Video::updateTextureWithFrame took 83.3894ms&#xA;Video::updateTextureWithFrame took 86.9088ms&#xA;Video::updateTextureWithFrame took 87.1049ms&#xA;Video::updateTextureWithFrame took 87.6748ms&#xA;Video::updateTextureWithFrame took 87.178ms&#xA;Video::updateTextureWithFrame took 84.7988ms&#xA;Video::updateTextureWithFrame took 89.528ms&#xA;Video::updateTextureWithFrame took 88.7021ms&#xA;Video::updateTextureWithFrame took 90.0357ms&#xA;Video::updateTextureWithFrame took 90.398ms&#xA;Video::updateTextureWithFrame took 87.8047ms&#xA;Video::updateTextureWithFrame took 90.2447ms&#xA;Video::updateTextureWithFrame took 94.6288ms&#xA;Video::updateTextureWithFrame took 88.9265ms&#xA;Video::updateTextureWithFrame took 89.01ms&#xA;Video::updateTextureWithFrame took 87.6294ms&#xA;Video::updateTextureWithFrame took 90.6988ms&#xA;Video::updateTextureWithFrame took 93.0173ms&#xA;Video::updateTextureWithFrame took 92.1651ms&#xA;Video::updateTextureWithFrame took 92.9234ms&#xA;Video::updateTextureWithFrame took 95.4223ms&#xA;Video::updateTextureWithFrame took 99.0941ms&#xA;Video::updateTextureWithFrame took 97.3014ms&#xA;Video::updateTextureWithFrame took 91.8709ms&#xA;Video::updateTextureWithFrame took 96.8951ms&#xA;Video::updateTextureWithFrame took 95.3506ms&#xA;Video::updateTextureWithFrame took 96.5474ms&#xA;Video::updateTextureWithFrame took 92.4739ms&#xA;Video::updateTextureWithFrame took 95.1857ms&#xA;Video::updateTextureWithFrame took 96.6743ms&#xA;Video::updateTextureWithFrame took 99.0657ms&#xA;Video::updateTextureWithFrame took 105.84ms&#xA;Video::updateTextureWithFrame took 99.3163ms&#xA;Video::updateTextureWithFrame took 127.942ms&#xA;Video::updateTextureWithFrame took 101.378ms&#xA;Video::updateTextureWithFrame took 98.6114ms&#xA;Video::updateTextureWithFrame took 101.161ms&#xA;Video::updateTextureWithFrame took 102.271ms&#xA;Video::updateTextureWithFrame took 100.77ms&#xA;Video::updateTextureWithFrame took 100.825ms&#xA;Video::updateTextureWithFrame took 100.64ms&#xA;Video::updateTextureWithFrame took 99.7002ms&#xA;Video::updateTextureWithFrame took 103.207ms&#xA;Video::updateTextureWithFrame took 107.135ms&#xA;Video::updateTextureWithFrame took 100.766ms&#xA;Video::updateTextureWithFrame took 103.321ms&#xA;Video::updateTextureWithFrame took 107.361ms&#xA;Video::updateTextureWithFrame took 104.086ms&#xA;Video::updateTextureWithFrame took 100.975ms&#xA;Video::updateTextureWithFrame took 105.846ms&#xA;Video::updateTextureWithFrame took 104.755ms&#xA;Video::updateTextureWithFrame took 105.893ms&#xA;Video::updateTextureWithFrame took 105.234ms&#xA;Video::updateTextureWithFrame took 109.415ms&#xA;Video::updateTextureWithFrame took 107.942ms&#xA;Video::updateTextureWithFrame took 109.816ms&#xA;Video::updateTextureWithFrame took 109.268ms&#xA;Video::updateTextureWithFrame took 111.918ms&#xA;Video::updateTextureWithFrame took 110.123ms&#xA;Video::updateTextureWithFrame took 109.975ms&#xA;Video::updateTextureWithFrame took 110.105ms&#xA;Video::updateTextureWithFrame took 115.888ms&#xA;Video::updateTextureWithFrame took 112.443ms&#xA;Video::updateTextureWithFrame took 111.795ms&#xA;Video::updateTextureWithFrame took 112.016ms&#xA;Video::updateTextureWithFrame took 115.857ms&#xA;Video::updateTextureWithFrame took 114.762ms&#xA;Video::updateTextureWithFrame took 112.551ms&#xA;Video::updateTextureWithFrame took 116.05ms&#xA;Video::updateTextureWithFrame took 119.133ms&#xA;Video::updateTextureWithFrame took 114.202ms&#xA;Video::updateTextureWithFrame took 119.864ms&#xA;Video::updateTextureWithFrame took 119.743ms&#xA;Video::updateTextureWithFrame took 119.911ms&#xA;Video::updateTextureWithFrame took 120.957ms&#xA;Video::updateTextureWithFrame took 117.611ms&#xA;Video::updateTextureWithFrame took 116.596ms&#xA;Video::updateTextureWithFrame took 116.859ms&#xA;Video::updateTextureWithFrame took 120.355ms&#xA;Video::updateTextureWithFrame took 121.932ms&#xA;Video::updateTextureWithFrame took 117.56ms&#xA;Video::updateTextureWithFrame took 122.747ms&#xA;Video::updateTextureWithFrame took 120.103ms&#xA;Video::updateTextureWithFrame took 123.497ms&#xA;Video::updateTextureWithFrame took 126.391ms&#xA;Video::updateTextureWithFrame took 123.512ms&#xA;Video::updateTextureWithFrame took 121.612ms&#xA;Video::updateTextureWithFrame took 130.169ms&#xA;Video::updateTextureWithFrame took 126.936ms&#xA;Video::updateTextureWithFrame took 122.812ms&#xA;Video::updateTextureWithFrame took 122.843ms&#xA;Video::updateTextureWithFrame took 124.214ms&#xA;Video::updateTextureWithFrame took 125.563ms&#xA;Video::updateTextureWithFrame took 128.024ms&#xA;Video::updateTextureWithFrame took 129.263ms&#xA;Video::updateTextureWithFrame took 130.028ms&#xA;Video::updateTextureWithFrame took 127.493ms&#xA;Video::updateTextureWithFrame took 129.553ms&#xA;Video::updateTextureWithFrame took 130.538ms&#xA;Video::updateTextureWithFrame took 22.6048ms&#xA;Video::updateTextureWithFrame took 20.2454ms&#xA;Video::updateTextureWithFrame took 19.9947ms&#xA;Video::updateTextureWithFrame took 21.2817ms&#xA;Video::updateTextureWithFrame took 22.6694ms&#xA;Video::updateTextureWithFrame took 25.5187ms&#xA;Video::updateTextureWithFrame took 19.8971ms&#xA;Video::updateTextureWithFrame took 22.2975ms&#xA;Video::updateTextureWithFrame took 21.4979ms&#xA;Video::updateTextureWithFrame took 25.6767ms&#xA;Video::updateTextureWithFrame took 23.4276ms&#xA;Video::updateTextureWithFrame took 25.5657ms&#xA;Video::updateTextureWithFrame took 23.2816ms&#xA;Video::updateTextureWithFrame took 26.8515ms&#xA;Video::updateTextureWithFrame took 24.0271ms&#xA;Video::updateTextureWithFrame took 24.4675ms&#xA;Video::updateTextureWithFrame took 25.6897ms&#xA;Video::updateTextureWithFrame took 28.7489ms&#xA;Video::updateTextureWithFrame took 24.6164ms&#xA;Video::updateTextureWithFrame took 29.6739ms&#xA;Video::updateTextureWithFrame took 27.8118ms&#xA;Video::updateTextureWithFrame took 30.3992ms&#xA;Video::updateTextureWithFrame took 28.2943ms&#xA;Video::updateTextureWithFrame took 29.9693ms&#xA;Video::updateTextureWithFrame took 30.6129ms&#xA;

    &#xA;