Recherche avancée

Médias (91)

Autres articles (81)

  • Des sites réalisés avec MediaSPIP

    2 mai 2011, par

    Cette page présente quelques-uns des sites fonctionnant sous MediaSPIP.
    Vous pouvez bien entendu ajouter le votre grâce au formulaire en bas de page.

  • Keeping control of your media in your hands

    13 avril 2011, par

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

  • Participer à sa traduction

    10 avril 2011

    Vous pouvez nous aider à améliorer les locutions utilisées dans le logiciel ou à traduire celui-ci dans n’importe qu’elle nouvelle langue permettant sa diffusion à de nouvelles communautés linguistiques.
    Pour ce faire, on utilise l’interface de traduction de SPIP où l’ensemble des modules de langue de MediaSPIP sont à disposition. ll vous suffit de vous inscrire sur la liste de discussion des traducteurs pour demander plus d’informations.
    Actuellement MediaSPIP n’est disponible qu’en français et (...)

Sur d’autres sites (10604)

  • nodejs ffmpeg child-process stdio stream stops

    10 mars 2023, par BleedFeed

    I've been trying to make an internet radio stream using ffmpeg to encode the audio data in mp3

    


    function getAudioStream(url){

    return new Promise(async(resolve,reject)=>{

        const ytdlStream = await ytdl(url,{filter:'audioonly',quality:'highestaudio'});

        const ffmpegProcess = spawn('ffmpeg',[
        '-i','pipe:3',
        '-f','mp3',
        '-ar','44100',
        '-ac','2',
        '-b:a','128k',
        '-codec:a','libmp3lame',
        '-flush_packets', '1',
        'pipe:4'],{stdio:['ignore','ignore','pipe','pipe','pipe']});
        ytdlStream.pipe(ffmpegProcess.stdio[3]);
        ffmpegProcess.stderr.on('data',(chunk)=>{
            console.log('FFMPEG ERROR: ' + chunk.toString());
        })
        resolve(ffmpegProcess.stdio[4].pipe(new PassThrough({highWaterMark:4096})));
    });
}

async function setUpStream(fromQueue,client,shout){

    let readable;
    let videoDetails;

    if(fromQueue){
        readable = await getAudioStream(queue[0]);
        videoDetails = (await ytdl.getBasicInfo(queue[0])).videoDetails;
        queue.shift();
    }
    else{
        let song = songs[Math.floor(Math.random() * songs.length)];
        readable = await getAudioStream(song);
        videoDetails = (await ytdl.getBasicInfo(song)).videoDetails;
    }


    readable.on('data',async (chunk)=>{
        readable.pause();
        shout.send(chunk,chunk.length);
        await new Promise((resolve)=>{setTimeout(resolve,shout.delay())});
        readable.resume();
    });

    readable.on('end',()=>{
        readable.destroy();
        setUpStream(queue.length !==0,client,shout);
    });


    readable.on('error',(err)=>{
        console.log(err);
    });

}


    


    shout.send is from npm nodeshout library and it delivers the audio data to icecast server.
I get another ffmpeg audio stream once the current one ends. After 20 or 30 minutes ffmpeg logs stop and no further data comes from ffmpegStream

    


    FFMPEG ERROR: size=    2952kB time=00:03:08.89 bitrate= 128.0kbits/s speed=1.07x
FFMPEG ERROR: size=    3016kB time=00:03:13.00 bitrate= 128.0kbits/s speed=1.07x
FFMPEG ERROR: size=    3080kB time=00:03:17.10 bitrate= 128.0kbits/s speed=1.07x
FFMPEG ERROR: size=    3144kB time=00:03:21.17 bitrate= 128.0kbits/s speed=1.07x
FFMPEG ERROR: size=    3208kB time=00:03:25.27 bitrate= 128.0kbits/s speed=1.07x 


    


    these are the last lines printed at console. Maybe some sort of memory management problem with child process ? How can i find what causes this problem ?

    


  • lavf : make overlay_qsv work based on framesync

    3 avril 2018, par Ruiling Song
    lavf : make overlay_qsv work based on framesync
    

    The existing version which was cherry-picked from Libav does not work
    with FFmpeg framework, because ff_request_frame() was totally
    different between Libav (recursive) and FFmpeg (non-recursive).
    The existing overlay_qsv implementation depends on the recursive version
    of ff_request_frame to trigger immediate call to request_frame() on input pad.
    But this has been removed in FFmpeg since "lavfi : make request_frame() non-recursive."
    Now that we have handy framesync support in FFmpeg, so I make it work
    based on framesync. Some other fixing which is also needed to make
    overlay_qsv work are put in a separate patch.

    Signed-off-by : Ruiling Song <ruiling.song@intel.com>

    • [DH] libavfilter/Makefile
    • [DH] libavfilter/vf_overlay_qsv.c
  • Calling audio_loop in moviepy errors unless duration is shorter than video duration

    9 juin 2020, par Noster

    I am using the following code to have music play in the background of a video that has its own audio, and loop until the end of the video. However audio_loop is causing an error after the video is done writing. The song is 67 seconds long, and if I set duration = 66 or below I get no error but any time over causes an error.

    &#xA;&#xA;

    final_clip = concatenate_videoclips([*vidclip], method=&#x27;compose&#x27;)&#xA;&#xA;count=0&#xA;for file in os.listdir(TO):&#xA;    if file.endswith(&#x27;.mp4&#x27;):&#xA;        count&#x2B;=1&#xA;&#xA;finalClipName = "{}Final.mp4".format(count)&#xA;music = AudioFileClip(&#x27;song.mp3&#x27;)&#xA;audio_background = afx.audio_loop(music, duration = final_clip.duration)#ERROR&#xA;final_audio = CompositeAudioClip([final_clip.audio, audio_background])&#xA;final_clip = final_clip.set_audio(final_audio)&#xA;final_clip.write_videofile(finalClipName, fps=10)&#xA;

    &#xA;&#xA;

    The error in question :

    &#xA;&#xA;

    Exception ignored in: <function at="at" 0x0000026346d3baf8="0x0000026346d3baf8">&#xA;Traceback (most recent call last):&#xA;  File "C:\Users\Eric\Projects\Videdit\venv\lib\site-packages\moviepy\audio\io\readers.py", line 254, in __del__&#xA;    self.close_proc()&#xA;  File "C:\Users\Eric\Projects\Videdit\venv\lib\site-packages\moviepy\audio\io\readers.py", line 150, in close_proc&#xA;    self.proc.terminate()&#xA;  File "C:\Users\Eric\AppData\Local\Programs\Python\Python37\lib\subprocess.py", line 1314, in terminate&#xA;    _winapi.TerminateProcess(self._handle, 1)&#xA;OSError: [WinError 6] The handle is invalid&#xA;</function>

    &#xA;