
Recherche avancée
Médias (1)
-
Video d’abeille en portrait
14 mai 2011, par
Mis à jour : Février 2012
Langue : français
Type : Video
Autres articles (53)
-
Formulaire personnalisable
21 juin 2013, parCette page présente les champs disponibles dans le formulaire de publication d’un média et il indique les différents champs qu’on peut ajouter. Formulaire de création d’un Media
Dans le cas d’un document de type média, les champs proposés par défaut sont : Texte Activer/Désactiver le forum ( on peut désactiver l’invite au commentaire pour chaque article ) Licence Ajout/suppression d’auteurs Tags
On peut modifier ce formulaire dans la partie :
Administration > Configuration des masques de formulaire. (...) -
Amélioration de la version de base
13 septembre 2013Jolie sélection multiple
Le plugin Chosen permet d’améliorer l’ergonomie des champs de sélection multiple. Voir les deux images suivantes pour comparer.
Il suffit pour cela d’activer le plugin Chosen (Configuration générale du site > Gestion des plugins), puis de configurer le plugin (Les squelettes > Chosen) en activant l’utilisation de Chosen dans le site public et en spécifiant les éléments de formulaires à améliorer, par exemple select[multiple] pour les listes à sélection multiple (...) -
Qu’est ce qu’un masque de formulaire
13 juin 2013, parUn masque de formulaire consiste en la personnalisation du formulaire de mise en ligne des médias, rubriques, actualités, éditoriaux et liens vers des sites.
Chaque formulaire de publication d’objet peut donc être personnalisé.
Pour accéder à la personnalisation des champs de formulaires, il est nécessaire d’aller dans l’administration de votre MediaSPIP puis de sélectionner "Configuration des masques de formulaires".
Sélectionnez ensuite le formulaire à modifier en cliquant sur sont type d’objet. (...)
Sur d’autres sites (11229)
-
Code can not read property 1 of undefined [closed]
25 mai 2023, par Jesse CopasI'm a very new programmer and am working on a Tdarr plugin in JS.
Everything works fine until a 4k file tries to get transcoded and it fails with this log


2023-05-24T19:09:54.906Z ZoBKWMMKG:Node\[hidden-hog\]:Worker\[tall-tuna\]:{"pluginInputs":{"BitRate":"4000","ResolutionSelection":"1080p","Container":"mkv","AudioType":"AAC","FrameRate":"24"}}

2023-05-24T19:09:54.907Z ZoBKWMMKG:Node\[hidden-hog\]:Worker\[tall-tuna\]:Error TypeError: Cannot read property '1' of undefined



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
The plugin Code is here


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

 //Skip Transcoding if File is already AV1
 if (file.ffProbeData.streams[0].codec_name === 'av1') {
 response.processFile = false;
 response.infoLog += 'File is already AV1 \n';
 return response;
 }
 // eslint-disable-next-line no-constant-condition
 if ((true) || file.forceProcessing === true) {
 // eslint-disable-next-line max-len
 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`;
 response.container = `.${inputs.Container}`;
 response.handbrakeMode = true;
 response.ffmpegMode = false;
 response.processFile = true;
 response.infoLog += `File is being transcoded at ${inputs.BitRate} Kbps to ${dimensions} as ${inputs.Container} \n`;
 return response;
 }
 response.infoLog += 'File is being transcoded using custom arguments \n';
 return response;
};
 };

module.exports.details = details;
module.exports.plugin = plugin;



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


EDIT : I used Console.log and got this back


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


-
MP4 file starts from a non-key frame [closed]
1er octobre 2023, par userDtrmI have used the following ffprobe command to analyse a .mp4 file.




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




It produces the following output.




 ffprobe version 5.1.3 Copyright (c) 2007-2022 the FFmpeg developers
 built with gcc 13 (GCC)
 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
 libavutil 57. 28.100 / 57. 28.100
 libavcodec 59. 37.100 / 59. 37.100
 libavformat 59. 27.100 / 59. 27.100
 libavdevice 59. 7.100 / 59. 7.100
 libavfilter 8. 44.100 / 8. 44.100
 libswscale 6. 7.100 / 6. 7.100
 libswresample 4. 7.100 / 4. 7.100
 libpostproc 56. 6.100 / 56. 6.100
 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'FTV267StoS.mp4' :
 Metadata :
 major_brand : mp42
 minor_version : 1
 compatible_brands : isommp41mp42
 creation_time : 2023-04-02T23:52:12.000000Z
 Duration : 00:04:47.84, start : 0.000000, bitrate : 7374 kb/s
 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)
 Metadata :
 creation_time : 2023-04-02T23:52:12.000000Z
 handler_name : Core Media Video
 vendor_id : [0][0][0][0]
 Stream #0:1[0x2](eng) : Audio : aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 125 kb/s (default)
 Metadata :
 creation_time : 2023-04-02T23:52:12.000000Z
 handler_name : Core Media Audio
 vendor_id : [0][0][0][0]
 frames.frame.0.media_type="video"
 frames.frame.0.stream_index=0
 frames.frame.0.key_frame=0
 frames.frame.0.pts=34536
 frames.frame.0.pts_time="0.383733"
 frames.frame.0.pkt_dts=34536
 frames.frame.0.pkt_dts_time="0.383733"
 frames.frame.0.best_effort_timestamp=34536
 frames.frame.0.best_effort_timestamp_time="0.383733"
 frames.frame.0.pkt_duration=1501
 frames.frame.0.pkt_duration_time="0.016678"
 frames.frame.0.pkt_pos="1834827"
 frames.frame.0.pkt_size="14917"
 frames.frame.0.width=1920
 frames.frame.0.height=1080
 frames.frame.0.pix_fmt="yuv420p"
 frames.frame.0.sample_aspect_ratio="1:1"
 frames.frame.0.pict_type="P"
 frames.frame.0.coded_picture_number=120
 frames.frame.0.display_picture_number=0
 frames.frame.0.interlaced_frame=0
 frames.frame.0.top_field_first=0
 frames.frame.0.repeat_pict=0
 frames.frame.0.color_range="tv"
 frames.frame.0.color_space="bt709"
 frames.frame.0.color_primaries="unknown"
 frames.frame.0.color_transfer="bt709"
 frames.frame.0.chroma_location="left"
 frames.frame.0.tags.timecode="20:18:26:50"
 frames.frame.0.side_data_list.side_data.0.side_data_type="H.26[45] User Data Unregistered SEI message"
 frames.frame.0.side_data_list.side_data.1.side_data_type="H.26[45] User Data Unregistered SEI message"
 frames.frame.0.side_data_list.side_data.2.side_data_type="SMPTE 12-1 timecode"
 frames.frame.0.side_data_list.side_data.2.timecodes.timecode.0.value="20:18:26:50"
 frames.frame.1.media_type="video"
 frames.frame.1.stream_index=0
 frames.frame.1.key_frame=0
 frames.frame.1.pts=36036
 frames.frame.1.pts_time="0.400400"
 frames.frame.1.pkt_dts=36036
 frames.frame.1.pkt_dts_time="0.400400"
 frames.frame.1.best_effort_timestamp=36036
 frames.frame.1.best_effort_timestamp_time="0.400400"
 frames.frame.1.pkt_duration=1501
 frames.frame.1.pkt_duration_time="0.016678"
 frames.frame.1.pkt_pos="1857434"
 frames.frame.1.pkt_size="14472"
 frames.frame.1.width=1920
 frames.frame.1.height=1080
 frames.frame.1.pix_fmt="yuv420p"
 frames.frame.1.sample_aspect_ratio="1:1"
 frames.frame.1.pict_type="P"




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.


-
Convert mp4/mov/... to mp4 with fluent-ffmpeg
13 octobre 2023, par Sam LeursI have a lambda function which reads a video from s3, converts it with fluent-ffmpeg and streams the video back to (another bucket in) s3.


This is the code so far :


ffmpeg()
 .input(readstream.Body)
 .format('mp4')
 .addOutputOption("-preset veryfast")
 .addOutputOption("-movflags frag_keyframe+empty_moov")
 .addOutputOption("-crf 28")
 .output(writestream, { end: true })
 .on('error', (err, stdout, stderr) => {
 console.log(err);
 console.log('Stdout: %o', stdout);
 console.log('Stderr: %o', stderr);
 })
 .run();



With an input mp4 file, this code works, but with a mov-file it fails. I get the following error :


Error: ffmpeg exited with code 1: Error demuxing input file 0: Invalid data found when processing input
pipe:0: Invalid data found when processing input
Cannot determine format of input stream 0:0 after EOF
Error marking filters as finished
Conversion failed!

 at ChildProcess.<anonymous> (/opt/nodejs/node_modules/fluent-ffmpeg/lib/processor.js:182:22)
 at ChildProcess.emit (node:events:514:28)
 at ChildProcess._handle.onexit (node:internal/child_process:291:12)
2023-10-13T20:10:01.978Z 32c55766-476f-41e9-873a-038341f5630a INFO Stdout: ''
2023-10-13T20:10:01.978Z 32c55766-476f-41e9-873a-038341f5630a INFO Stderr: 'ffmpeg version 6.0-static https://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2023 the FFmpeg developers\n' +
 ' built with gcc 8 (Debian 8.3.0-6)\n' +
 ' configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp --enable-libgme --enable-gray --enable-libaom --enable-libfribidi --enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libdav1d --enable-libxvid --enable-libzvbi --enable-libzimg\n' +
 ' libavutil 58. 2.100 / 58. 2.100\n' +
 ' libavcodec 60. 3.100 / 60. 3.100\n' +
 ' libavformat 60. 3.100 / 60. 3.100\n' +
 ' libavdevice 60. 1.100 / 60. 1.100\n' +
 ' libavfilter 9. 3.100 / 9. 3.100\n' +
 ' libswscale 7. 1.100 / 7. 1.100\n' +
 ' libswresample 4. 10.100 / 4. 10.100\n' +
 ' libpostproc 57. 1.100 / 57. 1.100\n' +
 '[mov,mp4,m4a,3gp,3g2,mj2 @ 0x5f71b00] stream 0, offset 0x24: partial file\n' +
 '[mov,mp4,m4a,3gp,3g2,mj2 @ 0x5f71b00] Could not find codec parameters for stream 0 (Video: h264 (avc1 / 0x31637661), none, 1920x1080, 447 kb/s): unspecified pixel format\n' +
 "Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options\n" +
 "Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'pipe:0':\n" +
 ' Metadata:\n' +
 ' major_brand : qt \n' +
 ' minor_version : 512\n' +
 ' compatible_brands: qt \n' +
 ' encoder : Lavf57.19.100\n' +
 ' Duration: 00:00:30.53, start: 0.000000, bitrate: N/A\n' +
 ' Stream #0:0[0x1](eng): Video: h264 (avc1 / 0x31637661), none, 1920x1080, 447 kb/s, 30 fps, 30 tbr, 15360 tbn (default)\n' +
 ' Metadata:\n' +
 ' handler_name : VideoHandler\n' +
 ' vendor_id : FFMP\n' +
 ' encoder : Lavc57.16.101 libx264\n' +
 ' Stream #0:1[0x2](eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 139 kb/s (default)\n' +
 ' Metadata:\n' +
 ' handler_name : SoundHandler\n' +
 ' vendor_id : [0][0][0][0]\n' +
 'Stream mapping:\n' +
 ' Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))\n' +
 ' Stream #0:1 -> #0:1 (aac (native) -> aac (native))\n' +
 '[mov,mp4,m4a,3gp,3g2,mj2 @ 0x5f71b00] stream 0, offset 0x24: partial file\n' +
 'Error demuxing input file 0: Invalid data found when processing input\n' +
 'pipe:0: Invalid data found when processing input\n' +
 'Cannot determine format of input stream 0:0 after EOF\n' +
 'Error marking filters as finished\n' +
 'Conversion failed!\n'
</anonymous>


Is it possible to convert multiple filetypes with one fluent-ffmpeg chain. If not, can someone help me to make a chain for mov ?