
Recherche avancée
Médias (91)
-
MediaSPIP Simple : futur thème graphique par défaut ?
26 septembre 2013, par
Mis à jour : Octobre 2013
Langue : français
Type : Video
-
avec chosen
13 septembre 2013, par
Mis à jour : Septembre 2013
Langue : français
Type : Image
-
sans chosen
13 septembre 2013, par
Mis à jour : Septembre 2013
Langue : français
Type : Image
-
config chosen
13 septembre 2013, par
Mis à jour : Septembre 2013
Langue : français
Type : Image
-
SPIP - plugins - embed code - Exemple
2 septembre 2013, par
Mis à jour : Septembre 2013
Langue : français
Type : Image
-
GetID3 - Bloc informations de fichiers
9 avril 2013, par
Mis à jour : Mai 2013
Langue : français
Type : Image
Autres articles (9)
-
Encoding and processing into web-friendly formats
13 avril 2011, parMediaSPIP automatically converts uploaded files to internet-compatible formats.
Video files are encoded in MP4, Ogv and WebM (supported by HTML5) and MP4 (supported by Flash).
Audio files are encoded in MP3 and Ogg (supported by HTML5) and MP3 (supported by Flash).
Where possible, text is analyzed in order to retrieve the data needed for search engine detection, and then exported as a series of image files.
All uploaded files are stored online in their original format, so you can (...) -
Contribute to documentation
13 avril 2011Documentation is vital to the development of improved technical capabilities.
MediaSPIP welcomes documentation by users as well as developers - including : critique of existing features and functions articles contributed by developers, administrators, content producers and editors screenshots to illustrate the above translations of existing documentation into other languages
To contribute, register to the project users’ mailing (...) -
Keeping control of your media in your hands
13 avril 2011, parThe vocabulary used on this site and around MediaSPIP in general, aims to avoid reference to Web 2.0 and the companies that profit from media-sharing.
While using MediaSPIP, you are invited to avoid using words like "Brand", "Cloud" and "Market".
MediaSPIP is designed to facilitate the sharing of creative media online, while allowing authors to retain complete control of their work.
MediaSPIP aims to be accessible to as many people as possible and development is based on expanding the (...)
Sur d’autres sites (2422)
-
Distube (Unbuntu) - DiscordAPIERROR : Invalid Form Body Content : Must be 2000 or fewer in length
25 mai 2021, par Bombo43453I recently transferred my discord bot to a VPS that is unbuntu based. The issue is that it will not play any sort of music. It starts to process it and then it says the error below.


(node:5252) UnhandledPromiseRejectionWarning: DiscordAPIError: Invalid Form Body
content: Must be 2000 or fewer in length.
 at RequestHandler.execute (/home/lanthonylal/EA-BOT/node_modules/discord.js/src/rest/RequestHandler.js:154:13)
 at processTicksAndRejections (internal/process/task_queues.js:95:5)
 at async RequestHandler.push (/home/lanthonylal/EA-BOT/node_modules/discord.js/src/rest/RequestHandler.js:39:14)
(node:5252) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by re
jecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see http
s://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:5252) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js proces
s with a non-zero exit code.



My Play.js File :


module.exports = {
 name: `play`,
 description: `Play A Song`,
 hidden: false,
 aliases: [`p`],
 usage: `(song)`,

async execute(client, message, args, Discord, errorlog, botlog, msglog, profileData, guildProfile){
 const music = args.join(' ');
 if (!message.member.voice.channel) return message.channel.send(`Uh Oh - You're not in a voice channel !`);

 if (message.guild.me.voice.channel && message.member.voice.channel.id !== message.guild.me.voice.channel.id) return message.channel.send(` You Are Not In The Same Voice Channel The Bot Is Currently In!`);

 if (!args[0]) return message.channel.send(`Uh Oh - Please indicate the title of a song !`);
 client.distube.play(message, args.join(' '))
}
}



I can confirm that this works when I use windows powershell. Do you think this can possibly be due to it being unbuntu or does distube have no support for this ?


-
Feeding content of an X-Window to a virtual camera
11 mai 2022, par IngoI want to feed a virtual webcam device from an application window (under Linux/Xorg). I have so far just maximised the window and then used
ffmpeg
to grab the whole screen like this :

ffmpeg \
 -f x11grab -framerate 15 -video_size 1280x1024 -i :0+0,0 \
 -f v4l2 -vcodec rawvideo -pix_fmt yuv420p /dev/video6



where
/dev/video6
is my v4l2loopback device. This works and I can use the virtual camera in video calls in chrome. This also indicates that the v4l2loopback module is correctly loaded into the kernel.

Unfortunately, it seems that
ffmpeg
can only read the whole screen, but not an application window.gstreamer
on the other hand can. Playing around withgst-launch-1.0
, I was hoping that I could get away with something like this :

gst-launch-1.0 ximagesrc xid=XID_OF_MY_WINDOW \
 ! "video/x-raw" \
 ! v4l2sink device=/dev/video6



However, that complains that
Device '/dev/video6' is not an output device.


Given that
ffmpeg
seems happy to write to/dev/video6
I also tried piping the gst output to ffmpeg like this :

gst-launch-1.0 ximagesrc xid=XID_OF_MY_WINDOW \
 ! "video/x-raw" \
 ! filesink location=/dev/stdout \
 | ffmpeg -i - -codec copy -f v4l2 -vcodec rawvideo -pix_fmt yuv420p /dev/video6



But then ffmpeg complains about
Invalid data found when processing input
.

This is running inside an xvfb headless environment, so mouse interactions will not work. This rules out obs as far as I can see.


I'm adding the chrome tag, because I see that chrome in principle would also provide a virtual camera via the
--use-fake-device-for-media-stream
switch. However, it seems that this switch only supports a static file rather than a stream.

Although I don't see why, it might be relevant that the other "application window" window is simply a second browser window. So the setup is google meet (or similar) in one browser window and the virtual camera gets fed vrom a second browser window.


-
FFMPEG on AWS Lambda Only outputs half a second of video when converting video from mobile safari
18 août 2023, par user1825257I am running FFMPEG on AWS Lambda using nodejs and fluent-ffmpeg. I am able to convert videos recorded on most devices / browsers, but when I attempt to convert videos recorded on Mobile Safari, the length of the output video is 1/2 a second regardless of the input length.


My Typescript code is :


import * as ffmpeg from 'fluent-ffmpeg';
 public static StandardizeVideoFormat(
 inputSignedUrl: string,
 filename: string,
 ): Promise<string> {
 const localFilePath = `/tmp/${Date.now()}_${filename}.mp4`;
 
 return new Promise((resolve, reject) => {
 ffmpeg(inputSignedUrl)
 .outputOptions([
 '-crf',
 '18',
 '-vcodec',
 'libx264',
 '-codec:a',
 'aac',
 '-preset',
 'medium',
 ])
 .output(localFilePath)
 .on('start', function (commandLine) {
 console.log('Spawned Ffmpeg with command: ' + commandLine);
 })
 .on('error', function (err) {
 reject(err);
 })
 .on('progress', function (progress) {
 console.log('progress', progress);
 })
 .on('end', function () {
 resolve(localFilePath);
 })
 .run();
 });
 }
</string>


Using FFprobe, The metadata of the input file is :


{
 streams: [
 {
 index: 0,
 codec_name: 'h264',
 codec_long_name: 'H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10',
 profile: 'Baseline',
 codec_type: 'video',
 codec_tag_string: 'avc1',
 codec_tag: '0x31637661',
 width: 1920,
 height: 1080,
 coded_width: 1920,
 coded_height: 1080,
 closed_captions: 0,
 film_grain: 0,
 has_b_frames: 0,
 sample_aspect_ratio: 'N/A',
 display_aspect_ratio: 'N/A',
 pix_fmt: 'yuvj420p',
 level: 40,
 color_range: 'pc',
 color_space: 'unknown',
 color_transfer: 'unknown',
 color_primaries: 'unknown',
 chroma_location: 'left',
 field_order: 'progressive',
 refs: 1,
 is_avc: 'true',
 nal_length_size: 4,
 id: '0x1',
 r_frame_rate: '30000/1001',
 avg_frame_rate: '60000/1991',
 time_base: '1/600',
 start_pts: 26,
 start_time: 0.043333,
 duration_ts: 4008,
 duration: 6.68,
 bit_rate: 10175170,
 max_bit_rate: 'N/A',
 bits_per_raw_sample: 8,
 nb_frames: 'N/A',
 nb_read_frames: 'N/A',
 nb_read_packets: 'N/A',
 extradata_size: 31,
 side_data_type: 'Display Matrix',
 displaymatrix: '',
 rotation: '-90',
 tags: [Object],
 disposition: [Object]
 },
 {
 index: 1,
 codec_name: 'aac',
 codec_long_name: 'AAC (Advanced Audio Coding)',
 profile: 'LC',
 codec_type: 'audio',
 codec_tag_string: 'mp4a',
 codec_tag: '0x6134706d',
 sample_fmt: 'fltp',
 sample_rate: 48000,
 channels: 1,
 channel_layout: 'mono',
 bits_per_sample: 0,
 initial_padding: 0,
 id: '0x2',
 r_frame_rate: '0/0',
 avg_frame_rate: '0/0',
 time_base: '1/48000',
 start_pts: 0,
 start_time: 0,
 duration_ts: 319488,
 duration: 6.656,
 bit_rate: 181302,
 max_bit_rate: 'N/A',
 bits_per_raw_sample: 'N/A',
 nb_frames: 'N/A',
 nb_read_frames: 'N/A',
 nb_read_packets: 'N/A',
 extradata_size: 2,
 tags: [Object],
 disposition: [Object]
 }
 ],
 format: {
 filename: 'input.mp4',
 nb_streams: 2,
 nb_programs: 0,
 format_name: 'mov,mp4,m4a,3gp,3g2,mj2',
 format_long_name: 'QuickTime / MOV',
 start_time: 0,
 duration: 6.723333,
 size: 8651792,
 bit_rate: 10294646,
 probe_score: 100,
 tags: {
 major_brand: 'iso5',
 minor_version: '1',
 compatible_brands: 'isomiso5hlsf',
 creation_time: '2023-08-05T19:03:15.000000Z'
 }
 },
 chapters: []
}



Any ideas on why the output of my command on this file always results in a 0.5 second long output ?