Recherche avancée

Médias (1)

Mot : - Tags -/iphone

Autres articles (42)

  • Demande de création d’un canal

    12 mars 2010, par

    En fonction de la configuration de la plateforme, l’utilisateur peu avoir à sa disposition deux méthodes différentes de demande de création de canal. La première est au moment de son inscription, la seconde, après son inscription en remplissant un formulaire de demande.
    Les deux manières demandent les mêmes choses fonctionnent à peu près de la même manière, le futur utilisateur doit remplir une série de champ de formulaire permettant tout d’abord aux administrateurs d’avoir des informations quant à (...)

  • Diogene : création de masques spécifiques de formulaires d’édition de contenus

    26 octobre 2010, par

    Diogene est un des plugins ? SPIP activé par défaut (extension) lors de l’initialisation de MediaSPIP.
    A quoi sert ce plugin
    Création de masques de formulaires
    Le plugin Diogène permet de créer des masques de formulaires spécifiques par secteur sur les trois objets spécifiques SPIP que sont : les articles ; les rubriques ; les sites
    Il permet ainsi de définir en fonction d’un secteur particulier, un masque de formulaire par objet, ajoutant ou enlevant ainsi des champs afin de rendre le formulaire (...)

  • Configuration spécifique pour PHP5

    4 février 2011, par

    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 (...)

Sur d’autres sites (6797)

  • How to overlay two mp3 audio files with different bitrates using fluent-ffmpeg

    7 janvier 2023, par Alex P Mnz

    I am trying to overlay one mp3 file (a speech track, the file name for which is passed into the below function) on top of another (a background music track, the url of which is passed into the function), so that they both play simultaneously, using NodeJS and fluent-ffmpeg.

    


    What happens when I call the function is that I get an output file which 1) only plays the background audio track, and 2) upon opening the output track, the time seeker skips straight to where the end of the first audio track would have been (around 1 minute 30 seconds).

    


    I'd like to in the first instance have them play at the same time as each other in the output file, without this skipping ahead effect (even if I drag the slider back to within the first 1 minute 30, it just jumps straight back to 1 minute 31 seconds - as if somehow there was no data in that first minute and a half).

    


    In the second instance, I'd also like to have the background audio track loop until the first track finishes, so any help with that as part of an answer would be very much appreciated. But the immediate problem is just getting the two audios to actually play simultaneously starting from 0 seconds.

    


    I have tried the below to get to this point :

    


    const fs = require('fs');
const ffmpegPath = require('@ffmpeg-installer/ffmpeg').path;
const ffmpeg = require('fluent-ffmpeg');
ffmpeg.setFfmpegPath(ffmpegPath);
var ffprobe = require('ffprobe-static');
ffmpeg.setFfprobePath(ffprobe.path);
const axios = require('axios');
const crypto = require('crypto');
const path = require('path');


const overlayBackgroundAudio = async (inputFileName, backgroundFileUrl) => {

    const backgroundTrack = await axios({
        method: 'GET',
        url: backgroundFileUrl,
        responseType: 'arraybuffer'
    });

    // write a file with the retrieved background audio track
    const backgroundTrackFileName = crypto.randomBytes(12).toString('hex');
    fs.writeFileSync(`${backgroundTrackFileName}.mp3`, backgroundTrack.data); //todo - delete after


    // set the name of the output file
    const newFileName = crypto.randomBytes(12).toString('hex');
    const outputFileName = `${newFileName}.mp3`;

    // run the relevant ffmpeg commands

    const overlayTracks = async () => {
    
        return new Promise((resolve, reject) => {
            ffmpeg()
                .input(`${inputFileName}.mp3`)
                .input(`${backgroundTrackFileName}.mp3`)
                .complexFilter([
                    {
                      filter: 'volume',
                      options: '1',
                      inputs: '[0:0]',
                      outputs: '[a]'
                    },
                    {
                      filter: 'volume',
                      options: '1',
                      inputs: '[1:0]',
                      outputs: '[b]'
                    },
                    {
                        filter: 'adelay',
                        options: '0',
                        inputs: '[a]',
                        outputs: '[a1]'
                    },
                    {
                        filter: 'adelay',
                        options: '0|0',
                        inputs: '[b]',
                        outputs: '[b1]'
                    },
                    {
                      filter: 'amix',
                      options: 'inputs=2:duration=first',
                      inputs: '[a1][b1]',
                      outputs: '[out]'
                    }
                ])
                .outputOptions(['-map', '[out]', outputFileName])
                .output(outputFileName)
                .on('end', function() {
                    resolve(outputFileName);
                })
                .on('stderr', console.log) // log ffmpeg output to console
                .on('error', function(err) {
                    console.log(`An error occurred overlaying tracks: ${err.message}`);
                    reject(err);
                })
                .run()
        })
    }

    const overlaidTracksFileName = await overlayTracks();

    console.log('overlaid file name:', overlaidTracksFileName)

    return overlaidTracksFileName;
   
}

module.exports = overlayBackgroundAudio;


    


    Here is what the ffmpeg library is logging to my console (which may help in figuring out why this is not working as intended) :

    


    Input #0, mp3, from '95c8ec8ccbb100d2bfe81ffd.mp3':
  Metadata:
    encoder         : Lavf58.24.101
  Duration: 00:02:41.42, start: 0.046042, bitrate: 48 kb/s
    Stream #0:0: Audio: mp3, 24000 Hz, mono, fltp, 48 kb/s
[mp3 @ 000002c77978ddc0] Estimating duration from bitrate, this may be inaccurate
Input #1, mp3, from '14e70bbd339b612e96f29017.mp3':
  Metadata:
    date            : 2022-12-30 17:56
    id3v2_priv.XMP  : <?xpacket begin="\xef\xbb\xbf" id="W5M0MpCehiHzreSzNTczkc9d"?>\x0a\x0a \x0a  s
    Stream #1:0: Audio: mp3, 48000 Hz, stereo, fltp, 192 kb/s
Stream mapping:
  Stream #0:0 (mp3float) -> volume (graph 0)
  Stream #1:0 (mp3float) -> volume (graph 0)
  amix (graph 0) -> Stream #0:0 (libmp3lame)
  Stream #1:0 -> #1:0 (mp3 (mp3float) -> mp3 (libmp3lame))
Press [q] to stop, [?] for help
Output #0, mp3, to '0c0404b793d488bf38e882a0.mp3':
  Metadata:
    TSSE            : Lavf58.24.101
    Stream #0:0: Audio: mp3 (libmp3lame), 24000 Hz, mono, fltp (default)
    Metadata:
      encoder         : Lavc58.42.102 libmp3lame
Output #1, mp3, to '0c0404b793d488bf38e882a0.mp3':
  Metadata:
    TSSE            : Lavf58.24.101
    Stream #1:0: Audio: mp3 (libmp3lame), 48000 Hz, stereo, fltp
    Metadata:
      encoder         : Lavc58.42.102 libmp3lame




    


    Thank you very much in advance for any help that you can try to provide !

    


  • Checking if a video has a sound even if it has an audio codec ?

    19 janvier 2023, par Sreenivasan

    I am new to intermediate python and I am trying to find if a downloaded video has sound, every video I download has an audio codec but I want to get the decibel of sound that audio has in that particular video.

    


    For example, this 'FFmpeg' command line script allows me to get the full info :

    


    ffmpeg -hide_banner -i testvideo.mp4 -af volumedetect -vn -f null - 2>&1


    


    this yields the below result in my command prompt(windows user here with win 11)

    


    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'testvideo.mp4':

Metadata:

major_brand : mp42

minor_version : 0

compatible_brands: mp42mp41isomavc1

creation_time : 2022-04-12T23:21:45.000000Z

Duration: 00:00:40.58, start: 0.000000, bitrate: 4104 kb/s

Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1920x1080, 3846 kb/s, 29.97 fps, 29.97 tbr, 30k tbn (default)

Metadata:

creation_time : 2022-04-12T23:21:45.000000Z

handler_name : L-SMASH Video Handler

vendor_id : [0][0][0][0]

encoder : AVC Coding

Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 253 kb/s (default)

Metadata:

creation_time : 2022-04-12T23:21:45.000000Z

handler_name : L-SMASH Audio Handler

vendor_id : [0][0][0][0]

Stream mapping:

Stream #0:1 -> #0:0 (aac (native) -> pcm_s16le (native))

Press [q] to stop, [?] for help

Output #0, null, to 'pipe:':

Metadata:

major_brand : mp42

minor_version : 0

compatible_brands: mp42mp41isomavc1

encoder : Lavf59.35.100

Stream #0:0(und): Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s (default)

Metadata:

creation_time : 2022-04-12T23:21:45.000000Z

handler_name : L-SMASH Audio Handler

vendor_id : [0][0][0][0]

encoder : Lavc59.56.100 pcm_s16le

size=N/A time=00:00:40.55 bitrate=N/A speed=1.22e+03x

video:0kB audio:7608kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown

[Parsed_volumedetect_0 @ 0000026609be08c0] n_samples: 3895296

[Parsed_volumedetect_0 @ 0000026609be08c0] mean_volume: -91.0 dB

[Parsed_volumedetect_0 @ 0000026609be08c0] max_volume: -91.0 dB

[Parsed_volumedetect_0 @ 0000026609be08c0] histogram_91db: 3895296


    


    As you can see there are 'parsed_volumedetect' values with dB which has a mean value of -91 dB which means the audio has no sound, i.e., the video has audio but there is no sound.

    


    Now I am trying to do the same in python and I want to get just the mean volume value to be stored in a variable so that I can check if the video has any sound in it.

    


    I have seen the subprocess codes so far but when I try to run my code in VS-Code - python 3.11 :

    


    import subprocess    
result = subprocess.run(["ffmpeg", "-hide_banner", "-af", "volumedetect", "-vn", "-f", "null", "testvideo1.mp4"],
    stdout=subprocess.PIPE,
    stderr=subprocess.STDOUT,
    shell=True)
    print(result.stdout)


    


    It says that :

    


    PS C:\Users\balaj\OneDrive\Documents\Programming language\python files> c:; cd 'c:\Users\balaj\OneDrive\Documents\Programming language\python files'; & 'C:\Python311\python.exe' 'c:\Users\balaj\.vscode\extensions\ms-python.python-2022.20.2\pythonFiles\lib\python\debugpy\adapter/../..\debugpy\launcher' '51760' '--' 'c:\Users\balaj\OneDrive\Documents\Programming language\python files\devproject\sample.py'

b"Output #0, null, to 'testvideo1.mp4':\r\nOutput file #0 does not contain any stream\r\n"


    


    Any help is much appreciated. Sorry for the long post... TIA !!!

    


    Just a quick update :
The result is the same for video files that have sound(I tested in VLC) and don't have sound.

    


    Another update :
I have changed the subprocess.runcode to the exact same as I called in the cmd windows :

    


    result = subprocess.run(["ffmpeg", "-hide_banner","-i","testvideo-sound.mp4", "-af", "volumedetect", "-vn", "-f", "null", "-2>&1"]


    


    Now the result is this :

    


    b'The handle could not be duplicated\r\nduring redirection of handle 1.\r\n'


    


  • Parsing SCTE-35 Data stream with FFMPEG

    7 avril 2023, par Alex Dube

    I'm trying to parse a data stream containing SCTE-35 info (or so I hope) coming from a .ts file obtained from a master .m3u8 playlist using FFMPEG.

    


    I'm using the following command to try and parse map the specific data stream to an outfile :

    


    ffmpeg -i https://stream-url/master/ts_file.ts -y -map 0:2 -c copy -copy_unknown -f data scte35data.bin


    


    My full error log as follows :

    


    ffmpeg version 5.1.2 Copyright (c) 2000-2022 the FFmpeg developers
  built with Apple clang version 14.0.0 (clang-1400.0.29.202)
  configuration: --prefix=/opt/homebrew/Cellar/ffmpeg/5.1.2_3 --enable-shared --enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libaribb24 --enable-libbluray --enable-libdav1d --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librist --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libsvtav1 --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack --enable-videotoolbox --enable-neon
  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
[mpegts @ 0x155f04080] start time for stream 2 is not set in estimate_timings_from_pts
Input #0, mpegts, from 'https://rcavlive.akamaized.net/hls/live/704025/xcanrdi/20230320T065736/master_2000/00012/master_2000_01207.ts':
  Duration: 00:00:08.00, start: 10442.033333, bitrate: 2282 kb/s
  Program 1 
  Stream #0:0[0x1e1]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(progressive), 852x480 [SAR 1:1 DAR 71:40], Closed Captions, 30 fps, 30 tbr, 90k tbn
  Stream #0:1[0x1e2](fre): Audio: aac (LC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 127 kb/s
  Stream #0:2[0x1f4]: Data: scte_35
  Stream #0:3[0x1f6]: Data: timed_id3 (ID3  / 0x20334449)
Output #0, data, to 'RecordingScripts/Tests/1.bin':
  Metadata:
    encoder         : Lavf59.27.100
  Stream #0:0: Data: scte_35
Stream mapping:
  Stream #0:2 -> #0:0 (copy)
Press [q] to stop, [?] for help
size=       0kB time=00:00:00.00 bitrate=N/A speed=   0x    
video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used)