Advanced search

Medias (0)

Tag: - Tags -/api

No media matches your criterion on the site.

Other articles (23)

  • Publier sur MédiaSpip

    13 June 2013

    Puis-je poster des contenus à partir d’une tablette Ipad ?
    Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir

  • MediaSPIP Core : La Configuration

    9 November 2010, by

    MediaSPIP Core fournit par défaut trois pages différentes de configuration (ces pages utilisent le plugin de configuration CFG pour fonctionner) : une page spécifique à la configuration générale du squelettes; une page spécifique à la configuration de la page d’accueil du site; une page spécifique à la configuration des secteurs;
    Il fournit également une page supplémentaire qui n’apparait que lorsque certains plugins sont activés permettant de contrôler l’affichage et les fonctionnalités spécifiques de (...)

  • Configuration spécifique pour PHP5

    4 February 2011, by

    PHP5 est obligatoire, vous pouvez l’installer en suivant ce tutoriel spécifique.
    Il est recommandé dans un premier temps de désactiver le safe_mode, cependant, s’il est correctement configuré et que les binaires nécessaires sont accessibles, MediaSPIP devrait fonctionner correctement avec le safe_mode activé.
    Modules spécifiques
    Il est nécessaire d’installer certains modules PHP spécifiques, via le gestionnaire de paquet de votre distribution ou manuellement : php5-mysql pour la connectivité avec la (...)

On other websites (6424)

  • How to crop and scale multiple landscape regions into a new portrait video? FFmpeg

    27 August 2023, by 3V1LXD

    I have an electron program that selects multiple regions of a landscape video and lets you rearrange them in a portrait canvas. I'm having trouble building the proper ffmpeg command to create the video. I have this somewhat working. I can export 2 layers, but i can't export if i only have 1 layer or if i have 3 or more layers selected.

    


    2 regions of video selected

    


    layers [
  { top: 0, left: 658, width: 576, height: 1080 },
  { top: 262, left: 0, width: 576, height: 324 }
]
newPositions [
  { top: 0, left: 0, width: 576, height: 1080 },
  { top: 0, left: 0, width: 576, height: 324 }
]
filtergraph [0]crop=576:1080:658:0,scale=576:1080[v0];[0]crop=576:324:0:262,scale=576:324[v1];[v0][v1]overlay=0:0:0:0[out]

No Error export successful


    


    1 region selected

    


    layers [ { top: 0, left: 650, width: 576, height: 1080 } ]
newPositions [ { top: 0, left: 0, width: 576, height: 1080 } ]
filtergraph [0]crop=576:1080:650:0,scale=576:1080[v0];[v0]overlay=0:0[out]

FFmpeg error: [fc#0 @ 000001dd3b6db0c0] Cannot find a matching stream for unlabeled input pad overlay
Error initializing complex filters: Invalid argument


    


    3 regions of video selected

    


    layers [
  { top: 0, left: 641, width: 576, height: 1080 },
  { top: 250, left: 0, width: 576, height: 324 },
  { top: 756, left: 0, width: 576, height: 324 }
]
newPositions [
  { top: 0, left: 0, width: 576, height: 1080 },
  { top: 0, left: 0, width: 576, height: 324 },
  { top: 756, left: 0, width: 576, height: 324 }
]
filtergraph [0]crop=576:1080:641:0,scale=576:1080[v0];[0]crop=576:324:0:250,scale=576:324[v1];[0]crop=576:324:0:756,scale=576:324[v2];[v0][v1][v2]overlay=0:0:0:0:0:756[out]

FFmpeg error: [AVFilterGraph @ 0000018faf2189c0] More input link labels specified for filter 'overlay' than it has inputs: 3 > 2
[AVFilterGraph @ 0000018faf2189c0] Error linking filters

FFmpeg error: Failed to set value '[0]crop=576:1080:698:0,scale=576:1080[v0];[0]crop=576:324:0:264,scale=576:324[v1];[0]crop=576:324:0:756,scale=576:324[v2];[v0][v1][v2]overlay=0:0:0:0:0:0[out]' for option 'filter_complex': Invalid argument
Error parsing global options: Invalid argument


    


    I can't figure out how to construct the proper overlay command. Here is the js code i'm using from my electron app.

    


    ipcMain.handle('export-video', async (_event, args) => {
  const { videoFile, outputName, layers, newPositions } = args;
  const ffmpegPath = path.join(__dirname, 'bin', 'ffmpeg');
  const outputDir = checkOutputDir();
  
  // use same video for each layer as input
  // crop, scale, and position each layer
  // overlay each layer on top of each other

  // export video
  console.log('layers', layers);
  console.log('newPositions', newPositions);

  let filtergraph = '';

  for (let i = 0; i < layers.length; i++) {
    const { top, left, width, height } = layers[i];
    const { width: newWidth, height: newHeight } = newPositions[i];
    const filter = `[0]crop=${width}:${height}:${left}:${top},scale=${newWidth}:${newHeight}[v${i}];`;
    filtergraph += filter;
  }

  for (let i = 0; i < layers.length; i++) {
    const filter = `[v${i}]`;
    filtergraph += filter;
  }

  filtergraph += `overlay=`;
  for (let i = 0; i < layers.length; i++) {
    const { top: newTop, left: newLeft } = newPositions[i];
    const overlay = `${newLeft}:${newTop}:`;
    filtergraph += overlay;
  }

  filtergraph = filtergraph.slice(0, -1); // remove last comma
  filtergraph += `[out]`;
  
  console.log('filtergraph', filtergraph);

  const ffmpeg = spawn(ffmpegPath, [
    '-i', videoFile,
    '-filter_complex', filtergraph,
    '-map', '[out]',
    '-c:v', 'libx264',
    '-preset', 'ultrafast',
    '-crf', '18',
    '-y',
    path.join(outputDir, `${outputName}`)
  ]);  

  ffmpeg.stdout.on('data', (data) => {
    console.log(`FFmpeg output: ${data}`);
  });

  ffmpeg.stderr.on('data', (data) => {
    console.error(`FFmpeg error: ${data}`);
  });

  ffmpeg.on('close', (code) => {
    console.log(`FFmpeg process exited with code ${code}`);
    // event.reply('ffmpeg-export-done'); // Notify the renderer process
  });
});


    


    Any advice might be helpful, The docs are confusing, Thanks.

    


  • Why DASH video fragments are not reproducible nor readable with ffmpeg?

    21 May 2020, by salgarji

    I'm streaming live video using DASH through FFmpeg. Everything's OK, fragments are generated, and the mpd file, but I wanted to have reproducible independent fragments. Video players won't open those fragments. I guess it's because they are mpd file dependant. My question would be: can those fragments be generated in a way that they are reproducible? I don't know if it has something to do to the frames I P B or just the way dash cuts video information, in a way that it only saves 'timeline' on the mpd...

    



    My purpose is not only being able to reproduce them sepparately, but I need to insert information in a metadata tag of the video, and ffmpeg won't let me read those live streaming generated fragments.

    



    FFmpeg input information command will behave like this:

    



    input:

    



    ffmpeg -i /path/video0-0-1.mp4


    



    output:

    



    ffmpeg version N-97777-g3b5a36c56d Copyright (c) 2000-2020 the FFmpeg developers
  built with Apple clang version 11.0.3 (clang-1103.0.32.59)
  configuration: --enable-gpl --enable-libx264
  libavutil      56. 45.100 / 56. 45.100
  libavcodec     58. 84.100 / 58. 84.100
  libavformat    58. 43.100 / 58. 43.100
  libavdevice    58.  9.103 / 58.  9.103
  libavfilter     7. 81.100 /  7. 81.100
  libswscale      5.  6.101 /  5.  6.101
  libswresample   3.  6.100 /  3.  6.100
  libpostproc    55.  6.100 / 55.  6.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fb324009400] could not find corresponding track id 1
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fb324009400] could not find corresponding trex (id 1)
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fb324009400] could not find corresponding track id 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fb324009400] trun track id unknown, no tfhd was found
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fb324009400] error reading header
/path/video0-0-1.mp4: Invalid data found when processing input


    



    I execute this FFmpeg code using fluent-ffmpeg over JS to generate the fragments:

    



    var ffmpeg = require('fluent-ffmpeg');

var grabacion = new ffmpeg();

grabacion.addInput('0')
.inputOptions(['-y -nostdin', '-f avfoundation', '-video_size 1280x720', '-pix_fmt nv12', '-framerate 30'])
.outputOptions(['-vcodec libx264', '-keyint_min 0', '-g 100', '-map 0:v', '-b:v 1000k', '-f dash',
 '-use_template 1', '-use_timeline 0', '-init_seg_name video0-$RepresentationID$-$Number$.mp4',
 '-media_seg_name video0-$RepresentationID$-$Number$.mp4', '-remove_at_exit 0', '-window_size 20', '-seg_duration 4'])
.output('/path/path/path/video.mpd')
.run();


    



    So, the final purpose would be to be able to insert a tag like this:

    



    ffmpeg -i video0-0-0.mp4 -movflags use_metadata_tags -metadata sample_tag=whateveryouwanttoadd video0-0-0-tagged.mp4


    



    Is there any way to do it? Thank you in advance!

    


  • Convert ffmpeg frame into array of YUV pixels in C

    9 June 2016, by loneraver

    I’m using the ffmpeg C libraries and trying to convert an AVFrame into a 2d array of pixels with YUV* components for analysis. I figured out how to convert the Y component for each pixel.:

    uint8_t y_val = pFrame->data[0][pFrame->linesize[0] * y + x];

    Since all frames have a Y component this is easy. However most digital video do not have a 4:4:4 chroma subsampling, so getting the UV components is stumping me.

    I’m using straight C for this project. No C++. An ideas?

    *Note: Yes, I know it’s technically YCbCr and not YUV.

    Edit:

    I’m rather new to C so it might not be the prettiest code out there.

    When I try:

    VisYUVFrame *VisCreateYUVFrame(const AVFrame *pFrame){
       VisYUVFrame *tmp = (VisYUVFrame*)malloc(sizeof(VisYUVFrame));
       if(tmp == NULL){ return NULL;}
       tmp->height = pFrame->height;
       tmp->width = pFrame->width;

       tmp->data = (PixelYUV***)malloc(sizeof(PixelYUV**) * pFrame->height);
       if(tmp->data == NULL) { return NULL;};

       for(int y = 0; y < pFrame->height; y++){
           tmp->data[y] = (PixelYUV**)malloc(sizeof(PixelYUV*) * pFrame->width);
           if(tmp->data[y] == NULL) { return NULL;}

           for(int x = 0; x < pFrame->width; x++){
               tmp->data[y][x] = (PixelYUV*)malloc(sizeof(PixelYUV*));
               if(tmp->data[y][x] == NULL){ return NULL;};
               tmp->data[y][x]->Y = pFrame->data[0][pFrame->linesize[0] * y + x];
               tmp->data[y][x]->U = pFrame->data[1][pFrame->linesize[1] * y + x];
               tmp->data[y][x]->V = pFrame->data[2][pFrame->linesize[2] * y + x];

           }
       }

       return tmp;

    Luma works but when I run Valgrind, I get

    0x26
    1
    InvalidRead
    Invalid read of size 1

    0x100003699
    /Users/hborcher/Library/Caches/CLion2016.2/cmake/generated/borcherscope-8e83e7dd/8e83e7dd/Debug/VisCreator2
    VisCreateYUVFrame
    /Users/hborcher/ClionProjects/borcherscope/lib
    visualization.c
    145

    0x100006B5B
    /Users/hborcher/Library/Caches/CLion2016.2/cmake/generated/borcherscope-8e83e7dd/8e83e7dd/Debug/VisCreator2
    render
    /Users/hborcher/ClionProjects/borcherscope/lib/decoder
    simpleDecoder2.c
    253

    0x100002D24
    /Users/hborcher/Library/Caches/CLion2016.2/cmake/generated/borcherscope-8e83e7dd/8e83e7dd/Debug/VisCreator2
    main
    /Users/hborcher/ClionProjects/borcherscope/src
    createvisual2.c
    93

    Address 0x10e9f91ef is 0 bytes after a block of size 92,207 alloc’d

    0x100013EEA
    /usr/local/Cellar/valgrind/3.11.0/lib/valgrind/vgpreload_memcheck-amd64-darwin.so
    malloc_zone_memalign

    0x1084B5416
    /usr/lib/system/libsystem_malloc.dylib
    posix_memalign

    0x10135D317
    /usr/local/Cellar/ffmpeg/3.0.2/lib/libavutil.55.17.103.dylib
    av_malloc

    0x27
    1
    InvalidRead
    Invalid read of size 1

    0x1000036BA
    /Users/hborcher/Library/Caches/CLion2016.2/cmake/generated/borcherscope-8e83e7dd/8e83e7dd/Debug/VisCreator2
    VisCreateYUVFrame
    /Users/hborcher/ClionProjects/borcherscope/lib
    visualization.c
    147

    0x100006B5B
    /Users/hborcher/Library/Caches/CLion2016.2/cmake/generated/borcherscope-8e83e7dd/8e83e7dd/Debug/VisCreator2
    render
    /Users/hborcher/ClionProjects/borcherscope/lib/decoder
    simpleDecoder2.c
    253

    0x100002D24
    /Users/hborcher/Library/Caches/CLion2016.2/cmake/generated/borcherscope-8e83e7dd/8e83e7dd/Debug/VisCreator2
    main
    /Users/hborcher/ClionProjects/borcherscope/src
    createvisual2.c
    93

    Address 0x10e9f91ef is 0 bytes after a block of size 92,207 alloc’d

    0x100013EEA
    /usr/local/Cellar/valgrind/3.11.0/lib/valgrind/vgpreload_memcheck-amd64-darwin.so
    malloc_zone_memalign

    0x1084B5416
    /usr/lib/system/libsystem_malloc.dylib
    posix_memalign

    0x10135D317
    /usr/local/Cellar/ffmpeg/3.0.2/lib/libavutil.55.17.103.dylib
    av_malloc