
Recherche avancée
Médias (91)
-
Head down (wav version)
26 septembre 2011, par
Mis à jour : Avril 2013
Langue : English
Type : Audio
-
Echoplex (wav version)
26 septembre 2011, par
Mis à jour : Avril 2013
Langue : English
Type : Audio
-
Discipline (wav version)
26 septembre 2011, par
Mis à jour : Avril 2013
Langue : English
Type : Audio
-
Letting you (wav version)
26 septembre 2011, par
Mis à jour : Avril 2013
Langue : English
Type : Audio
-
1 000 000 (wav version)
26 septembre 2011, par
Mis à jour : Avril 2013
Langue : English
Type : Audio
-
999 999 (wav version)
26 septembre 2011, par
Mis à jour : Avril 2013
Langue : English
Type : Audio
Autres articles (92)
-
Mise à jour de la version 0.1 vers 0.2
24 juin 2013, parExplications des différents changements notables lors du passage de la version 0.1 de MediaSPIP à la version 0.3. Quelles sont les nouveautés
Au niveau des dépendances logicielles Utilisation des dernières versions de FFMpeg (>= v1.2.1) ; Installation des dépendances pour Smush ; Installation de MediaInfo et FFprobe pour la récupération des métadonnées ; On n’utilise plus ffmpeg2theora ; On n’installe plus flvtool2 au profit de flvtool++ ; On n’installe plus ffmpeg-php qui n’est plus maintenu au (...) -
Personnaliser en ajoutant son logo, sa bannière ou son image de fond
5 septembre 2013, parCertains thèmes prennent en compte trois éléments de personnalisation : l’ajout d’un logo ; l’ajout d’une bannière l’ajout d’une image de fond ;
-
Ecrire une actualité
21 juin 2013, parPrésentez les changements dans votre MédiaSPIP ou les actualités de vos projets sur votre MédiaSPIP grâce à la rubrique actualités.
Dans le thème par défaut spipeo de MédiaSPIP, les actualités sont affichées en bas de la page principale sous les éditoriaux.
Vous pouvez personnaliser le formulaire de création d’une actualité.
Formulaire de création d’une actualité Dans le cas d’un document de type actualité, les champs proposés par défaut sont : Date de publication ( personnaliser la date de publication ) (...)
Sur d’autres sites (12705)
-
Gitlab CI - Combine two docker images into a single stage
12 mars 2024, par seal.r00tI have this gitlab-ci.yaml file. Using this file I execute my k6.io load test from pipeline. Now I need to execute some FFmpeg commands during the run stage, and my question is how do I make the FFmpeg tool available to the run stage. Do I need to grab the image that has FFmpeg and add it next to grafa/k6 or something else ?


default:
 tags:
 - default

workflow:
 name: "$PIPELINE_NAME"

stages:
 - lint
 - setup
 - run
 - teardown

lint:js:
 stage: lint
 image:
 name: tmknom/prettier
 entrypoint:
 - ""
 rules:
 - if: '$CI_PIPELINE_SOURCE == "push"'
 when: always
 - if: '$CI_PIPELINE_SOURCE == "schedule"'
 when: always
 script:
 - prettier --check '**/*.js'

setup:
 stage: setup
 image: alpine
 rules:
 - if: '$CI_PIPELINE_SOURCE == "web"'
 when: always
 - if: '$CI_PIPELINE_SOURCE == "schedule"'
 when: always
 script:
 - echo 'set up!'

run:
 stage: run
 environment:
 name: run
 image:
 name: grafana/k6:latest
 entrypoint: [ "" ]
 artifacts:
 when: always
 paths:
 - summaries/
 rules:
 - if: '$CI_PIPELINE_SOURCE == "web"'
 when: always # Prevent pipeline run for push event
 - if: '$CI_PIPELINE_SOURCE == "schedule"'
 when: always
 script:
 - ./run.sh

teardown:
 stage: teardown
 image: alpine
 rules:
 - if: '$CI_PIPELINE_SOURCE == "web"'
 when: always
 - if: '$CI_PIPELINE_SOURCE == "schedule"'
 when: always
 script:
 - echo 'tear down!'



I tried adding two name tags under the run stage for using two images but it didn't work and returned a syntax error.


run:
 stage: run
 environment:
 name: run
 image:
 name: grafana/k6:latest
 name: linuxserver/ffmpeg



-
What's the proper way to use Docker multi-stage builds to copy a package installed with apt ?
25 décembre 2023, par Leo JiangI have
apt-get -y install ffmpeg --no-install-recommends
in my dockerfile and it's taking up more than half the image size (500MB). I read somewhere that I can try using Docker multi-stage build to reduce the file size.

Am I supposed to do something like :


FROM node:20.9.0-slim
RUN apt-get -y update \
 && apt-get -y install ffmpeg --no-install-recommends \
 && apt-get clean

FROM node:20.9.0-slim
COPY --from=0 /usr/bin/ffmpeg
COPY --from=0 /usr/bin/ffplay
COPY --from=0 /usr/share/ffmpeg/ffprobe.xsd
COPY --from=0 /usr/share/lintian/overrides/ffmpeg



I ran
dpkg -L ffmpeg
to see that ffmpeg has 30 files. Am I supposed to copy over all of the files or is just/usr/bin/ffmpeg
enough ? If I have to copy all of them, it seems like it'll break easily.

-
How do ffmpeg child processes differ on windows and linux ? ytdl
6 mai 2023, par eaglehunttThis class method works on linux but does not work on windows. Why is that ? ytdl is a node module called ytdl-core. This is almost line for line what they used in their documentation.


https://github.com/fent/node-ytdl-core/blob/master/example/ffmpeg.js


The biggest difference in my code vs theirs is that I convert the mkv file to an mp4 before closing the process.


I have been looking around the internet and I cannot seem to find anyone with this issue. I am new to child processes and ffmpeg.


static mp4 = async (url, videoQuality, destination) => {
 try {
 const videoInfo = this.#getVideoInfo(url);
 const videoTitle = (await videoInfo).title;

 const tracker = {
 start: Date.now(),
 audio: { downloaded: 0, total: Infinity },
 video: { downloaded: 0, total: Infinity },
 merged: { frame: 0, speed: '0x', fps: 0 },
 };
 
 // Get audio and video streams
 const audio = ytdl(url, { quality: 'highestaudio' })
 .on('progress', (_, downloaded, total) => {
 tracker.audio = { downloaded, total };
 });
 
 
 const video = ytdl(url, { quality: videoQuality })
 .on('progress', (_, downloaded, total) => {
 tracker.video = { downloaded, total };
 })
 .on('error', (error) => {
 console.error('(mp4) An error occurred when attempting to pipe the video stream:', error);
 });

 // Start the ffmpeg child process
 const mkvProcess = cp.spawn(ffmpeg, [
 // Remove ffmpeg's console spamming
 '-loglevel', '8', '-hide_banner',
 // Redirect/Enable progress messages
 '-progress', 'pipe:3',
 // Set inputs
 '-i', 'pipe:4',
 '-i', 'pipe:5',
 // Map audio & video from streams
 '-map', '0:a',
 '-map', '1:v',
 // Keep encoding
 '-c:v', 'copy',
 // Define output file
 `${__dirname}/temp/temp.mkv`,
 ], {
 windowsHide: true,
 stdio: [
 /* Standard: stdin, stdout, stderr */
 'inherit', 'inherit', 'inherit',
 /* Custom: pipe:3, pipe:4, pipe:5 */
 'pipe', 'pipe', 'pipe',
 ],
 });
 mkvProcess.on('close', () => {
 const titleQuality = this.nativeMp4VideoQualityFormats[videoQuality];
 const mp4Process = cp.spawn(ffmpeg, ['-i',`${__dirname}/temp/temp.mkv`,'-c','copy',`${destination}`]);
 
 mp4Process.on('close', () => {
 if (fs.existsSync(`${__dirname}/temp/temp.mkv`)){
 try {
 fs.unlinkSync(`${__dirname}/temp/temp.mkv`);
 }
 catch (error){
 console.log(error)
 }
 };
 })
 mp4Process.on('exit', (code, signal) => {
 if (code !== 0) {
 console.error(`(mp4) The ffmpeg process exited with code ${code} and signal ${signal}.`);
 }
 })
 });
 mkvProcess.on('exit', (code, signal) => {
 if (code !== 0) {
 console.error(`(mkv) The ffmpeg process exited with code ${code} and signal ${signal}.`);
 }
 });
 // Link streams
 // FFmpeg creates the transformer streams and we just have to insert / read data
 mkvProcess.stdio[3].on('data', chunk => {
 
 const lines = chunk.toString().trim().split('\n');
 const args = {};
 for (const l of lines) {
 const [key, value] = l.split('=');
 args[key.trim()] = value.trim();
 }
 tracker.merged = args;
 });
 audio.pipe(mkvProcess.stdio[4]);
 video.pipe(mkvProcess.stdio[5]);
 return true;

 }
 catch {
 console.error('(mp4) An error occurred when attempting to download the video.')
 return false;
 }
 }