Recherche avancée

Médias (91)

Autres articles (74)

  • La file d’attente de SPIPmotion

    28 novembre 2010, par

    Une file d’attente stockée dans la base de donnée
    Lors de son installation, SPIPmotion crée une nouvelle table dans la base de donnée intitulée spip_spipmotion_attentes.
    Cette nouvelle table est constituée des champs suivants : id_spipmotion_attente, l’identifiant numérique unique de la tâche à traiter ; id_document, l’identifiant numérique du document original à encoder ; id_objet l’identifiant unique de l’objet auquel le document encodé devra être attaché automatiquement ; objet, le type d’objet auquel (...)

  • Submit enhancements and plugins

    13 avril 2011

    If you have developed a new extension to add one or more useful features to MediaSPIP, let us know and its integration into the core MedisSPIP functionality will be considered.
    You can use the development discussion list to request for help with creating a plugin. As MediaSPIP is based on SPIP - or you can use the SPIP discussion list SPIP-Zone.

  • Personnaliser en ajoutant son logo, sa bannière ou son image de fond

    5 septembre 2013, par

    Certains 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 ;

Sur d’autres sites (7309)

  • How to check when ffmpeg completes a task ?

    25 mai 2018, par Andrew

    I’m just learning how to use ffmpeg a few hours ago to generate video thumbnails.

    These are some results :

    1

    2

    I’d used the same size (width - height) to Youtube’s. Each image contains max 25 thumbnails (5x5) with the size 160x90.

    Everything looks good until :

    public async Task GetVideoThumbnailsAsync(string videoPath, string videoId)
    {
       byte thumbnailWidth = 160;
       byte thumbnailHeight = 90;

       string fps = "1/2";

       videoPath = Path.Combine(_environment.WebRootPath, videoPath);

       string videoThumbnailsPath = Path.Combine(_environment.WebRootPath, $"assets/images/video_thumbnails/{videoId}");
       string outputImagePath = Path.Combine(videoThumbnailsPath, "item_%d.jpg");

       Directory.CreateDirectory(videoThumbnailsPath);

       using (var ffmpeg = new Process())
       {
           ffmpeg.StartInfo.Arguments = $" -i {videoPath} -vf fps={fps} -s {thumbnailWidth}x{thumbnailHeight} {outputImagePath}";
           ffmpeg.StartInfo.FileName = Path.Combine(_environment.ContentRootPath, "FFmpeg/ffmpeg.exe");
           ffmpeg.Start();
       }

       await Task.Delay(3000);

       await GenerateThumbnailsAsync(videoThumbnailsPath, videoId);
    }

    I’m getting a trouble with the line :

    await Task.Delay(3000);

    When I learn the way to use ffmpeg, they didn’t mention about it. After some hours failed, I notice that :

    An mp4 video (1 min 31 sec - 1.93Mb) requires some delay time 1000ms. And other, an mp4 video (1 min 49 sec - 7.25Mb) requires some delay time 3000ms.

    If I don’t use Task.Delay and try to get all the files immediately, it would return 0 (there was no file in the directory).

    Plus, each file which has a difference length to the others requires a difference delay time. I don’t know how to calculate it.

    And my question is : How to check when the task has completed ?

    P/s : I don’t mean to relate to javascript, but in js, there is something called Promise :

    var promise = new Promise(function (done) {
       var todo = function () {
           done();
       };

       todo();
    });

    promise.then(function () {
       console.log('DONE...');
    });

    I want to edit the code like that.

    Thank you !

  • Transcode each stream in a different thread with ffmpeg

    30 mai 2018, par hedgar2017

    Is there a way of forcing ffmpeg to encode each audio stream in a different thread ?

    ffmpeg
       -i audio1.ac3 -c:a libopus
       -i audio2.ac3 -c:a libopus
       -i audio3.ac3 -c:a libopus
       output.mkv

    I mean only ffmpeg’s own instruments, without multiple processes and other OS features.

    Normally, there is only one core saturated, so encoding a file with many audio streams is very long.

    Exact command :

    ffmpeg -loglevel verbose
       -i 'Ярость (Fury).mkv'
       -i 'Fury (2014) [Ukr & Eng, Sub Eng] BDRip-AVC [Hurtom & HELLYWOOD].mkv'
       -threads 0 -max_muxing_queue_size 65536 -avoid_negative_ts 1 -metadata title=2014.Fury.BDRip.HEVC.1080p
       -map 0:0 -c:v copy -metadata:s:v:0 title=2014.Fury.BDRip.HEVC.1080p -disposition:v:0 +defaug-[forced
       -map 0:2 -c:a libopus -application audio -vbr on -packet_loss 0 -frame_duration 20 -mapping_family 255 -compression_level 10 -metadata:s:a:0 language=eng -metadata:s:a:0 title=Original -disposition:a:0 +defaug-[forced
       -map 1:1 -c:a libopus -application audio -vbr on -packet_loss 0 -frame_duration 20 -mapping_family 255 -compression_level 10 -metadata:s:a:1 language=ukr -disposition:a:1 -default-forced
       -map 0:1 -c:a libopus -application audio -vbr on -packet_loss 0 -frame_duration 20 -mapping_family 255 -compression_level 10 -metadata:s:a:2 language=rus -metadata:s:a:2 title=Dub -disposition:a:2 -default-forced
       -map 0:10 -c:s copy -metadata:s:s:0 language=eng -metadata:s:s:0 title=Original -disposition:s:0 -default-forced
       -f matroska ./2014.Fury.BDRip.HEVC.1080p.mkv

    Log :

    ... inputs ...
    Stream mapping:
     Stream #0:0 -> #0:0 (copy)
     Stream #0:2 -> #0:1 (dts (dca) -> opus (libopus))
     Stream #1:1 -> #0:2 (ac3 (native) -> opus (libopus))
     Stream #0:1 -> #0:3 (ac3 (native) -> opus (libopus))
     Stream #0:10 -> #0:4 (copy)
    Press [q] to stop, [?] for help
    [graph_2_in_0_1 @ 0000019ca2cb29c0] tb:1/48000 samplefmt:fltp samplerate:48000 chlayout:0x60f
    [format_out_0_3 @ 0000019ca2cb20c0] auto-inserting filter 'auto_resampler_0' between the filter 'Parsed_anull_0' and the filter 'format_out_0_3'
    [auto_resampler_0 @ 0000019ca2cb27c0] ch:6 chl:5.1(side) fmt:fltp r:48000Hz -> ch:6 chl:5.1(side) fmt:flt r:48000Hz
    [libopus @ 0000019ca2c9f3c0] No bit rate set. Defaulting to 384000 bps.
    [graph_0_in_0_2 @ 0000019ca2cb1ac0] tb:1/48000 samplefmt:fltp samplerate:48000 chlayout:0x60f
    [format_out_0_1 @ 0000019ca2cb1bc0] auto-inserting filter 'auto_resampler_0' between the filter 'Parsed_anull_0' and the filter 'format_out_0_1'
    [auto_resampler_0 @ 0000019ca2cb14c0] ch:6 chl:5.1(side) fmt:fltp r:48000Hz -> ch:6 chl:5.1(side) fmt:flt r:48000Hz
    [libopus @ 0000019ca292c980] No bit rate set. Defaulting to 384000 bps.
    [graph_1_in_1_1 @ 0000019ca2cb2bc0] tb:1/48000 samplefmt:fltp samplerate:48000 chlayout:0x60f
    [format_out_0_2 @ 0000019ca2cb26c0] auto-inserting filter 'auto_resampler_0' between the filter 'Parsed_anull_0' and the filter 'format_out_0_2'
    [auto_resampler_0 @ 0000019ca2cb0dc0] ch:6 chl:5.1(side) fmt:fltp r:48000Hz -> ch:6 chl:5.1(side) fmt:flt r:48000Hz
    [libopus @ 0000019ca292e980] No bit rate set. Defaulting to 384000 bps.
    Output #0, matroska, to './2014.Fury.BDRip.HEVC.1080p.mkv':
     Metadata:
       DATE_RELEASED   : 2014
       title           : 2014.Fury.BDRip.HEVC.1080p
       Released by     : Buba5473 for NNM-Club
       Copyright       : Encoded by Goor80
       encoder         : Lavf58.12.100
       Chapter #0:0: start 0.000000, end 478.228000
       Metadata:
         title           : Chapter 01
       ... chapters ...
       Stream #0:0: Video: hevc (Main 10), 1 reference frame, yuv420p10le(tv), 1920x800 (0x0) [SAR 1:1 DAR 12:5], q=2-31, 23.98 fps, 23.98 tbr, 1k tbn, 1k tbc (default)
       Stream #0:1(eng): Audio: opus (libopus) ([255][255][255][255] / 0xFFFFFFFF), 48000 Hz, 5.1(side), flt, delay 312, 384 kb/s (default)
       Stream #0:2(ukr): Audio: opus (libopus) ([255][255][255][255] / 0xFFFFFFFF), 48000 Hz, 5.1(side), flt, delay 312, 384 kb/s
       Stream #0:3(rus): Audio: opus (libopus) ([255][255][255][255] / 0xFFFFFFFF), 48000 Hz, 5.1(side), flt, delay 312, 384 kb/s
       Stream #0:4(eng): Subtitle: subrip
    [matroska @ 0000019ca2d17f00] Starting new cluster due to timestamp=6175.5kbits/s speed=10.2x
    [matroska @ 0000019ca2d17f00] Starting new cluster due to timestamp=7530.8kbits/s speed=8.74x
    [matroska @ 0000019ca2d17f00] Starting new cluster due to timestamp=7955.1kbits/s speed=9.02x
    frame=156607 fps=205 q=-1.0 size= 8321971kB time=01:48:51.85 bitrate=10437.1kbits/s speed=8.55x
    ... not finished yet ...

    fps is always around 3000/number_of_audio_channels, meaning all audio transcoding is done with the only thread.

  • ffmpeg install within existing Node.js docker image

    1er septembre 2021, par Peza

    I need to use ffmpeg in a Node.js application that runs in a docker container (created using docker-compose). I'm very new to Docker, and would like to know how to command Docker to install ffmpeg when creating the image.

    



    DockerFile

    



    FROM node:carbon
WORKDIR /usr/src/app

# where available (npm@5+)
COPY package*.json ./
RUN npm install -g nodemon
RUN npm install --only=production
COPY . .

EXPOSE 3000
CMD [ "npm", "start" ] 


    



    package.json :

    



    {
  "name": "radcast-apis",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node ./bin/www",
    "dev": "nodemon --inspect-brk=0.0.0.0:5858 ./bin/www"
  },
  "dependencies": {
    "audioconcat": "^0.1.3",
    "cookie-parser": "~1.4.3",
    "debug": "~2.6.9",
    "express": "~4.16.0",
    "firebase-admin": "^5.12.1",
    "http-errors": "~1.6.2",
    "jade": "~1.11.0",
    "morgan": "~1.9.0"
  },
  "devDependencies": {
    "nodemon": "^1.11.0"
  }
}


    



    docker-compose.yml :

    



    version: "2"
services:
  web:
    volumes:
    - "./app:/src/app"
    build: .
    command: npm run dev
    ports:
    - "3000:3000"
    - "5858:5858"