Recherche avancée

Médias (91)

Autres articles (40)

  • Support audio et vidéo HTML5

    10 avril 2011

    MediaSPIP utilise les balises HTML5 video et audio pour la lecture de documents multimedia en profitant des dernières innovations du W3C supportées par les navigateurs modernes.
    Pour les navigateurs plus anciens, le lecteur flash Flowplayer est utilisé.
    Le lecteur HTML5 utilisé a été spécifiquement créé pour MediaSPIP : il est complètement modifiable graphiquement pour correspondre à un thème choisi.
    Ces technologies permettent de distribuer vidéo et son à la fois sur des ordinateurs conventionnels (...)

  • HTML5 audio and video support

    13 avril 2011, par

    MediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
    The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
    For older browsers the Flowplayer flash fallback is used.
    MediaSPIP allows for media playback on major mobile platforms with the above (...)

  • De l’upload à la vidéo finale [version standalone]

    31 janvier 2010, par

    Le chemin d’un document audio ou vidéo dans SPIPMotion est divisé en trois étapes distinctes.
    Upload et récupération d’informations de la vidéo source
    Dans un premier temps, il est nécessaire de créer un article SPIP et de lui joindre le document vidéo "source".
    Au moment où ce document est joint à l’article, deux actions supplémentaires au comportement normal sont exécutées : La récupération des informations techniques des flux audio et video du fichier ; La génération d’une vignette : extraction d’une (...)

Sur d’autres sites (7915)

  • MP4 file starts from a non-key frame [closed]

    1er octobre 2023, par userDtrm

    I have used the following ffprobe command to analyse a .mp4 file.

    


    


    ffprobe -i <input /> -show_frames - select_streams v:0 -print_format flat &amp;> save_to_file.text

    &#xA;

    &#xA;

    It produces the following output.

    &#xA;

    &#xA;&#xA;    ffprobe version 5.1.3 Copyright (c) 2007-2022 the FFmpeg developers&#xA;      built with gcc 13 (GCC)&#xA;      configuration : —prefix=/home/thanuja/ffmpeg_build —pkg-config-flags=—static —extra-cflags=-I/home/thanuja/ffmpeg_build/include —extra-ldflags=-L/home/thanuja/ffmpeg_build/lib —extra-libs=-lpthread —extra-libs=-lm —bindir=/home/thanuja/bin —enable-gpl —enable-libfdk_aac —enable-libfreetype —enable-libmp3lame —enable-libopus —enable-libvpx —enable-libx264 —enable-libx265 —enable-nonfree —enable-openssl —enable-demuxer=spdif —enable-decoder=dolby_e —enable-decoder=ac3 —enable-decoder=eac3 —enable-indev=alsa —enable-outdev=alsa —enable-shared&#xA;      libavutil      57. 28.100 / 57. 28.100&#xA;      libavcodec     59. 37.100 / 59. 37.100&#xA;      libavformat    59. 27.100 / 59. 27.100&#xA;      libavdevice    59.  7.100 / 59.  7.100&#xA;      libavfilter     8. 44.100 /  8. 44.100&#xA;      libswscale      6.  7.100 /  6.  7.100&#xA;      libswresample   4.  7.100 /  4.  7.100&#xA;      libpostproc    56.  6.100 / 56.  6.100&#xA;    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'FTV267StoS.mp4' :&#xA;      Metadata :&#xA;        major_brand : mp42&#xA;        minor_version : 1&#xA;        compatible_brands : isommp41mp42&#xA;        creation_time : 2023-04-02T23:52:12.000000Z&#xA;      Duration : 00:04:47.84, start : 0.000000, bitrate : 7374 kb/s&#xA;      Stream #0:0[0x1](und) : Video : h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709/unknown/bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 7198 kb/s, 59.94 fps, 59.94 tbr, 90k tbn (default)&#xA;        Metadata :&#xA;          creation_time : 2023-04-02T23:52:12.000000Z&#xA;          handler_name : Core Media Video&#xA;          vendor_id : [0][0][0][0]&#xA;      Stream #0:1[0x2](eng) : Audio : aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 125 kb/s (default)&#xA;        Metadata :&#xA;          creation_time : 2023-04-02T23:52:12.000000Z&#xA;          handler_name : Core Media Audio&#xA;          vendor_id : [0][0][0][0]&#xA;    frames.frame.0.media_type="video"&#xA;    frames.frame.0.stream_index=0&#xA;    frames.frame.0.key_frame=0&#xA;    frames.frame.0.pts=34536&#xA;    frames.frame.0.pts_time="0.383733"&#xA;    frames.frame.0.pkt_dts=34536&#xA;    frames.frame.0.pkt_dts_time="0.383733"&#xA;    frames.frame.0.best_effort_timestamp=34536&#xA;    frames.frame.0.best_effort_timestamp_time="0.383733"&#xA;    frames.frame.0.pkt_duration=1501&#xA;    frames.frame.0.pkt_duration_time="0.016678"&#xA;    frames.frame.0.pkt_pos="1834827"&#xA;    frames.frame.0.pkt_size="14917"&#xA;    frames.frame.0.width=1920&#xA;    frames.frame.0.height=1080&#xA;    frames.frame.0.pix_fmt="yuv420p"&#xA;    frames.frame.0.sample_aspect_ratio="1:1"&#xA;    frames.frame.0.pict_type="P"&#xA;    frames.frame.0.coded_picture_number=120&#xA;    frames.frame.0.display_picture_number=0&#xA;    frames.frame.0.interlaced_frame=0&#xA;    frames.frame.0.top_field_first=0&#xA;    frames.frame.0.repeat_pict=0&#xA;    frames.frame.0.color_range="tv"&#xA;    frames.frame.0.color_space="bt709"&#xA;    frames.frame.0.color_primaries="unknown"&#xA;    frames.frame.0.color_transfer="bt709"&#xA;    frames.frame.0.chroma_location="left"&#xA;    frames.frame.0.tags.timecode="20:18:26:50"&#xA;    frames.frame.0.side_data_list.side_data.0.side_data_type="H.26[45] User Data Unregistered SEI message"&#xA;    frames.frame.0.side_data_list.side_data.1.side_data_type="H.26[45] User Data Unregistered SEI message"&#xA;    frames.frame.0.side_data_list.side_data.2.side_data_type="SMPTE 12-1 timecode"&#xA;    frames.frame.0.side_data_list.side_data.2.timecodes.timecode.0.value="20:18:26:50"&#xA;    frames.frame.1.media_type="video"&#xA;    frames.frame.1.stream_index=0&#xA;    frames.frame.1.key_frame=0&#xA;    frames.frame.1.pts=36036&#xA;    frames.frame.1.pts_time="0.400400"&#xA;    frames.frame.1.pkt_dts=36036&#xA;    frames.frame.1.pkt_dts_time="0.400400"&#xA;    frames.frame.1.best_effort_timestamp=36036&#xA;    frames.frame.1.best_effort_timestamp_time="0.400400"&#xA;    frames.frame.1.pkt_duration=1501&#xA;    frames.frame.1.pkt_duration_time="0.016678"&#xA;    frames.frame.1.pkt_pos="1857434"&#xA;    frames.frame.1.pkt_size="14472"&#xA;    frames.frame.1.width=1920&#xA;    frames.frame.1.height=1080&#xA;    frames.frame.1.pix_fmt="yuv420p"&#xA;    frames.frame.1.sample_aspect_ratio="1:1"&#xA;    frames.frame.1.pict_type="P"&#xA;&#xA;

    &#xA;

    As seen in this output, the 1st frame appears to be a P frame. I'm curious as to how will the decoder decode this frame without a preceding I frame (key frame) ? The P frame will not have enough information to reconstruct the image from its residual data without the key frame.

    &#xA;

  • What would be the correct way to use Exec or Transcode ffmpeg in SRS version of Windows 5.0.128

    29 janvier 2023, par diegosn79

    i was doing tests in different ways, and i can't use the Exec or Transcode option, i highlight that I have copied the ffmpeg.exe in the objs folder.&#xA;These are the codes I tried, and I attach the log errors.

    &#xA;

    exec {&#xA;&#xA;enabled on;&#xA;&#xA;publish ./objs/ffmpeg.exe -rtbufsize 10M -i rtmp://10.1.9.240/live/encoder  -vf scale=1080:720 -c:v libx264 -profile:v high -level 4.2 -preset fast -b:v 1500k -c:a aac -ac 2 -b:a 96k -f flv -y rtmp://10.1.9.240:1935/live/encoderlow/;&#xA;&#xA;}&#xA;

    &#xA;

    LOGS

    &#xA;

    [2023-01-04 10:05:46.410][WARN][1309][01568ctu][11] EXEC : Ignore error, code=3028(FFmpegFork)(Failed to fork FFmpeg trancoder process) :&#xA;process start : vfork process failed, cli=./objs/ffmpeg.exe -rtbufsize 10M -i rtmp ://10.1.9.240/live/encoder -vf scale=1080:720 -c:v libx264 -profile:v high -level 4.2 -preset fast -b:v 1500k -c:a aac -ac 2 -b:a 96k -f flv -y rtmp ://10.1.9.240:1935/live/encoderlow/&#xA;thread [1309][01568ctu] : do_cycle() [./src/app/srs_app_ng_exec.cpp:108][errno=11]&#xA;thread [1309][01568ctu] : start() [./src/app/srs_app_process.cpp:197][errno=11]

    &#xA;

    transcode

    &#xA;

        enabled     on;&#xA;&#xA;    ffmpeg      ./objs/ffmpeg.exe;&#xA;&#xA;    engine ff {&#xA;&#xA;        enabled         on;&#xA;&#xA;        vfilter {&#xA;&#xA;        }&#xA;&#xA;        vcodec          libx264;&#xA;&#xA;        vthreads        4;&#xA;&#xA;        vprofile        high;&#xA;&#xA;        vpreset         fast;&#xA;&#xA;        vbitrate        1500k;&#xA;&#xA;        vparams {&#xA;&#xA;        }&#xA;&#xA;        acodec          libfdk_aac;&#xA;&#xA;        aparams {&#xA;&#xA;        }&#xA;&#xA;        output          rtmp://127.0.0.1:[port]/[app]/[stream]_[engine]?vhost=[vhost];&#xA;&#xA;    }&#xA;&#xA;}&#xA;

    &#xA;

    LOGS

    &#xA;

    [2023-01-04 11:04:45.295][WARN][1489][34r32764][11] Encoder : Ignore error, code=3028(FFmpegFork)(Failed to fork FFmpeg trancoder process) : ffmpeg start : vfork process failed, cli=./objs/ffmpeg.exe -f flv -i rtmp ://127.0.0.1:1935/live ?vhost=defaultVhost/encoder -vcodec libx264 -b:v 1500000 -threads 4 -profile:v high -preset fast -acodec libfdk_aac -f flv -y rtmp ://127.0.0.1:1935/live/encoder_ff ?vhost=defaultVhost 1 > ./objs/ffmpeg-encoder-defaultVhost-live-encoder-ff.log 2 > ./objs/ffmpeg-encoder-defaultVhost-live-encoder-ff.log&#xA;thread [1489][34r32764] : do_cycle() [./src/app/srs_app_encoder.cpp:117][errno=11]&#xA;thread [1489][34r32764] : start() [./src/app/srs_app_process.cpp:197][errno=11]

    &#xA;

  • Code can not read property 1 of undefined [closed]

    25 mai 2023, par Jesse Copas

    I'm a very new programmer and am working on a Tdarr plugin in JS.&#xA;Everything works fine until a 4k file tries to get transcoded and it fails with this log

    &#xA;

    2023-05-24T19:09:54.906Z ZoBKWMMKG:Node\[hidden-hog\]:Worker\[tall-tuna\]:{"pluginInputs":{"BitRate":"4000","ResolutionSelection":"1080p","Container":"mkv","AudioType":"AAC","FrameRate":"24"}}&#xA;&#xA;2023-05-24T19:09:54.907Z ZoBKWMMKG:Node\[hidden-hog\]:Worker\[tall-tuna\]:Error TypeError: Cannot read property &#x27;1&#x27; of undefined&#xA;

    &#xA;

    It's saying that it's unable to read property 1 of undefined and I'm looked and looked and looked and can't find what it is referring to. Hoping to get another set of eyes on it&#xA;The plugin Code is here

    &#xA;

    /* eslint no-plusplus: ["error", { "allowForLoopAfterthoughts": true }] */&#xA;/* eslint-disable no-restricted-globals */&#xA;const details = () => ({&#xA;  id: &#x27;Tdarr_Plugin_Jeso_AV1_HandBrake_Transcode&#x27;,&#xA;  Stage: &#x27;Pre-processing&#x27;,&#xA;  Name: &#x27;AV1 HandBrake Transcoder&#x27;,&#xA;  Type: &#x27;Video&#x27;,&#xA;  Operation: &#x27;Transcode&#x27;,&#xA;  Description: &#x27;Transcodes to AV1 at the selected Bitrate. This is best used with Remux Files.&#x27;,&#xA;  Version: &#x27;2.1.3&#x27;,&#xA;  Tags: &#x27;HandBrake,configurable&#x27;,&#xA;  Inputs: [&#xA;    {&#xA;      name: &#x27;BitRate&#x27;,&#xA;      type: &#x27;string&#x27;,&#xA;      defaultValue: &#x27;4000&#x27;,&#xA;      inputUI: {&#xA;        type: &#x27;text&#x27;,&#xA;      },&#xA;      tooltip: `&#xA;        ~ Requested Bitrate ~ \\n&#xA;        Put in the Bitrate you want to process to in Kbps. For example 4000Kbps is 4Mbps. `,&#xA;    },&#xA;    {&#xA;      name: &#x27;ResolutionSelection&#x27;,&#xA;      type: &#x27;string&#x27;,&#xA;      defaultValue: &#x27;1080p&#x27;,&#xA;      inputUI: {&#xA;        type: &#x27;dropdown&#x27;,&#xA;        options: [&#xA;          &#x27;8KUHD&#x27;,&#xA;          &#x27;4KUHD&#x27;,&#xA;          &#x27;1080p&#x27;,&#xA;          &#x27;720p&#x27;,&#xA;          &#x27;480p&#x27;,&#xA;        ],&#xA;      },&#xA;      // eslint-disable-next-line max-len&#xA;      tooltip: &#x27;Any Resolution larger than this will become this Resolution same as the bitrate if the Res is lower than the selected it will use the res of the file as to not cause bloating of file size.&#x27;,&#xA;    },&#xA;    {&#xA;      name: &#x27;Container&#x27;,&#xA;      type: &#x27;string&#x27;,&#xA;      defaultValue: &#x27;mkv&#x27;,&#xA;      inputUI: {&#xA;        type: &#x27;dropdown&#x27;,&#xA;        options: [&#xA;          &#x27;mp4&#x27;,&#xA;          &#x27;mkv&#x27;,&#xA;        ],&#xA;      },&#xA;      tooltip: ` Container Type \\n\\n&#xA;          mkv or mp4.\\n`,&#xA;    },&#xA;    {&#xA;      name: &#x27;AudioType&#x27;,&#xA;      type: &#x27;string&#x27;,&#xA;      defaultValue: &#x27;AAC&#x27;,&#xA;      inputUI: {&#xA;        type: &#x27;dropdown&#x27;,&#xA;        options: [&#xA;          &#x27;AAC&#x27;,&#xA;          &#x27;EAC3&#x27;,&#xA;          &#x27;MP3&#x27;,&#xA;          &#x27;Vorbis&#x27;,&#xA;          &#x27;Flac16&#x27;,&#xA;          &#x27;Flac24&#x27;,&#xA;        ],&#xA;      },&#xA;      // eslint-disable-next-line max-len&#xA;      tooltip: &#x27;Set Audio container type that you want to use&#x27;,&#xA;    },&#xA;    {&#xA;      name: &#x27;FrameRate&#x27;,&#xA;      type: &#x27;string&#x27;,&#xA;      defaultValue: &#x27;24&#x27;,&#xA;      inputUI: {&#xA;        type: &#x27;text&#x27;,&#xA;      },&#xA;      // eslint-disable-next-line max-len&#xA;      tooltip: &#x27;If the files framerate is higher than 24 and you want to maintain that framerate you can do so here&#x27;,&#xA;    },&#xA;  ],&#xA;});&#xA;const MediaInfo = {&#xA;  videoHeight: &#x27;&#x27;,&#xA;  videoWidth: &#x27;&#x27;,&#xA;  videoFPS: &#x27;&#x27;,&#xA;  videoBR: &#x27;&#x27;,&#xA;  videoBitDepth: &#x27;&#x27;,&#xA;  overallBR: &#x27;&#x27;,&#xA;  videoResolution: &#x27;&#x27;,&#xA;}; // var MediaInfo&#xA;// Easier for our functions if response has global scope.&#xA;const response = {&#xA;  processFile: false,&#xA;  preset: &#x27;&#x27;,&#xA;  container: &#x27;.mkv&#x27;,&#xA;  handBrakeMode: true,&#xA;  FFmpegMode: false,&#xA;  reQueueAfter: true,&#xA;  infoLog: &#x27;&#x27;,&#xA;}; // var response&#xA;// Finds the first video stream and populates some useful variables&#xA;function getMediaInfo(file) {&#xA;  let videoIdx = -1;&#xA;  for (let i = 0; i &lt; file.ffProbeData.streams.length; i &#x2B;= 1) {&#xA;    const strstreamType = file.ffProbeData.streams[i].codec_type.toLowerCase();&#xA;    // Looking For Video&#xA;    // Check if stream is a video.&#xA;    if (videoIdx === -1 &amp;&amp; strstreamType === &#x27;video&#x27;) {&#xA;      videoIdx = i;&#xA;      // get video streams resolution&#xA;      MediaInfo.videoResolution = `${file.ffProbeData.streams[i].height}x${file.ffProbeData.streams[i].width}`;&#xA;      MediaInfo.videoHeight = Number(file.ffProbeData.streams[i].height);&#xA;      MediaInfo.videoWidth = Number(file.ffProbeData.streams[i].width);&#xA;      MediaInfo.videoFPS = Number(file.mediaInfo.track[i &#x2B; 1].FrameRate) || 25;&#xA;      // calulate bitrate from dimensions and fps of file&#xA;      MediaInfo.videoBR = (MediaInfo.videoHeight * MediaInfo.videoWidth * MediaInfo.videoFPS * 0.08).toFixed(0);&#xA;    }&#xA;  }&#xA;} // end  getMediaInfo()&#xA;// define resolution order from ResolutionSelection from biggest to smallest&#xA;const resolutionOrder = [&#x27;8KUHD&#x27;, &#x27;4KUHD&#x27;, &#x27;1080p&#x27;, &#x27;720p&#x27;, &#x27;480p&#x27;];&#xA;// define the width and height of each resolution from the resolution order&#xA;const resolutionsdimensions = {&#xA;  &#x27;8KUHD&#x27;: &#x27;--width 7680 --height 4320&#x27;,&#xA;  &#x27;4KUHD&#x27;: &#x27;--width 3840 --height 2160&#x27;,&#xA;  &#x27;1080p&#x27;: &#x27;--width 1920 --height 1080&#x27;,&#xA;  &#x27;720p&#x27;: &#x27;--width 1280 --height 720&#x27;,&#xA;  &#x27;480p&#x27;: &#x27;--width 640 --height 480&#x27;,&#xA;};&#xA;// eslint-disable-next-line no-unused-vars&#xA;const plugin = (file, librarySettings, inputs) => {&#xA;  // eslint-disable-next-line no-unused-vars&#xA;  const importFresh = require(&#x27;import-fresh&#x27;);&#xA;  // eslint-disable-next-line no-unused-vars&#xA;  const library = importFresh(&#x27;../methods/library.js&#x27;);&#xA;  // eslint-disable-next-line no-unused-vars&#xA;  const lib = require(&#x27;../methods/lib&#x27;)();&#xA;  // Get the selected resolution from the &#x27;ResolutionSelection&#x27; variable&#xA;  const selectedResolution = inputs.ResolutionSelection;&#xA;  getMediaInfo(file);&#xA;  // use mediainfo to match height and width to a resolution on resolutiondimensions&#xA;  let dimensions = resolutionsdimensions[selectedResolution];&#xA;  // if the file is smaller than the selected resolution then use the file resolution&#xA;  if (MediaInfo.videoHeight &lt; dimensions.split(&#x27; &#x27;)[3] || MediaInfo.videoWidth &lt; dimensions.split(&#x27; &#x27;)[1]) {&#xA;    dimensions = `--width ${MediaInfo.videoWidth} --height ${MediaInfo.videoHeight}`;&#xA;    // eslint-disable-next-line brace-style&#xA;  }&#xA;  // read the bitrate of the video stream&#xA;  let videoBitRate = MediaInfo.videoBR;&#xA;  // if videoBitrate is over 1000000 devide by 100 to get the bitrate in Kbps&#xA;  if (videoBitRate > 1000000) {&#xA;    videoBitRate /= 100;&#xA;  } else { videoBitRate /= 1000; }&#xA;  // if VideoBitrate is smaller than selected bitrate then use the videoBitrate&#xA;  if (videoBitRate &lt; inputs.BitRate) {&#xA;    // eslint-disable-next-line no-param-reassign&#xA;    inputs.BitRate = videoBitRate;&#xA;    // eslint-disable-next-line brace-style&#xA;  }&#xA;  // if VideoBitrate is larger than selected bitrate then use the selected bitrate&#xA;  else {&#xA;    // eslint-disable-next-line no-self-assign, no-param-reassign&#xA;    inputs.BitRate = inputs.BitRate;&#xA;  }&#xA;&#xA;  //Skip Transcoding if File is already AV1&#xA;  if (file.ffProbeData.streams[0].codec_name === &#x27;av1&#x27;) {&#xA;    response.processFile = false;&#xA;    response.infoLog &#x2B;= &#x27;File is already AV1 \n&#x27;;&#xA;    return response;&#xA;  }&#xA;  // eslint-disable-next-line no-constant-condition&#xA;  if ((true) || file.forceProcessing === true) {&#xA;    // eslint-disable-next-line max-len&#xA;    response.preset = `--encoder svt_av1 -b ${inputs.BitRate} -r ${inputs.FrameRate} -E ${inputs.AudioType} -f ${inputs.Container} --no-optimize ${dimensions} --crop 0:0:0:0`;&#xA;    response.container = `.${inputs.Container}`;&#xA;    response.handbrakeMode = true;&#xA;    response.ffmpegMode = false;&#xA;    response.processFile = true;&#xA;    response.infoLog &#x2B;= `File is being transcoded at ${inputs.BitRate} Kbps to ${dimensions} as ${inputs.Container} \n`;&#xA;    return response;&#xA;  }&#xA;  response.infoLog &#x2B;= &#x27;File is being transcoded using custom arguments \n&#x27;;&#xA;  return response;&#xA;};&#xA;  };&#xA;&#xA;module.exports.details = details;&#xA;module.exports.plugin = plugin;&#xA;

    &#xA;

    Tried transcoding 4k files down to 1080p but it fails due to that undefined error. All Res 1080p and lower that I have tried work correctly

    &#xA;

    EDIT : I used Console.log and got this back

    &#xA;

    [2023-05-24T23:29:51.001] [ERROR] Tdarr_Server - Error running MediaInfo 1&#xA;[2023-05-24T23:29:51.004] [ERROR] Tdarr_Server - RangeError: Maximum call stack size exceeded&#xA;    at x (<anonymous>:wasm-function[381]:0x15c4d)&#xA;    at <anonymous>:wasm-function[46]:0x5dc0&#xA;    at <anonymous>:wasm-function[652]:0x21cb9&#xA;    at <anonymous>:wasm-function[1023]:0x47018&#xA;    at <anonymous>:wasm-function[853]:0x37827&#xA;    at <anonymous>:wasm-function[3684]:0xf4884&#xA;    at <anonymous>:wasm-function[3516]:0xeb5b7&#xA;    at <anonymous>:wasm-function[1061]:0x487c9&#xA;    at <anonymous>:wasm-function[795]:0x3006d&#xA;    at <anonymous>:wasm-function[3628]:0xf01cc&#xA;[2023-05-24T23:29:51.006] [ERROR] Tdarr_Server - Error running MediaInfo 2&#xA;[2023-05-24T23:29:51.006] [ERROR] Tdarr_Server - RangeError: Maximum call stack size exceeded&#xA;    at x (<anonymous>:wasm-function[381]:0x15c4d)&#xA;    at <anonymous>:wasm-function[46]:0x5dc0&#xA;    at <anonymous>:wasm-function[652]:0x21cb9&#xA;    at <anonymous>:wasm-function[1023]:0x47018&#xA;    at <anonymous>:wasm-function[853]:0x37827&#xA;    at <anonymous>:wasm-function[3684]:0xf4884&#xA;    at <anonymous>:wasm-function[3516]:0xeb5b7&#xA;    at <anonymous>:wasm-function[1061]:0x487c9&#xA;    at <anonymous>:wasm-function[795]:0x3006d&#xA;    at <anonymous>:wasm-function[3628]:0xf01cc&#xA;[2023-05-24T23:29:58.220] [ERROR] Tdarr_Server - Error running MediaInfo 1&#xA;[2023-05-24T23:29:58.223] [ERROR] Tdarr_Server - RangeError: Maximum call stack size exceeded&#xA;    at x (<anonymous>:wasm-function[381]:0x15c4d)&#xA;    at <anonymous>:wasm-function[46]:0x5dc0&#xA;    at <anonymous>:wasm-function[652]:0x21cb9&#xA;    at <anonymous>:wasm-function[1023]:0x47018&#xA;    at <anonymous>:wasm-function[853]:0x37827&#xA;    at <anonymous>:wasm-function[3684]:0xf4884&#xA;    at <anonymous>:wasm-function[3516]:0xeb5b7&#xA;    at <anonymous>:wasm-function[1061]:0x487c9&#xA;    at <anonymous>:wasm-function[795]:0x3006d&#xA;    at <anonymous>:wasm-function[3628]:0xf01cc&#xA;[2023-05-24T23:29:58.224] [ERROR] Tdarr_Server - Error running MediaInfo 2&#xA;[2023-05-24T23:29:58.224] [ERROR] Tdarr_Server - RangeError: Maximum call stack size exceeded&#xA;    at x (<anonymous>:wasm-function[381]:0x15c4d)&#xA;    at <anonymous>:wasm-function[46]:0x5dc0&#xA;    at <anonymous>:wasm-function[652]:0x21cb9&#xA;    at <anonymous>:wasm-function[1023]:0x47018&#xA;    at <anonymous>:wasm-function[853]:0x37827&#xA;    at <anonymous>:wasm-function[3684]:0xf4884&#xA;    at <anonymous>:wasm-function[3516]:0xeb5b7&#xA;    at <anonymous>:wasm-function[1061]:0x487c9&#xA;    at <anonymous>:wasm-function[795]:0x3006d&#xA;    at <anonymous>:wasm-function[3628]:0xf01cc&#xA;</anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous>

    &#xA;