
Recherche avancée
Médias (1)
-
Video d’abeille en portrait
14 mai 2011, par
Mis à jour : Février 2012
Langue : français
Type : Video
Autres articles (93)
-
Mediabox : ouvrir les images dans l’espace maximal pour l’utilisateur
8 février 2011, parLa visualisation des images est restreinte par la largeur accordée par le design du site (dépendant du thème utilisé). Elles sont donc visibles sous un format réduit. Afin de profiter de l’ensemble de la place disponible sur l’écran de l’utilisateur, il est possible d’ajouter une fonctionnalité d’affichage de l’image dans une boite multimedia apparaissant au dessus du reste du contenu.
Pour ce faire il est nécessaire d’installer le plugin "Mediabox".
Configuration de la boite multimédia
Dès (...) -
Keeping control of your media in your hands
13 avril 2011, parThe 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 (...) -
Les autorisations surchargées par les plugins
27 avril 2010, parMediaspip core
autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs
Sur d’autres sites (12024)
-
Calling audio_loop in moviepy errors unless duration is shorter than video duration
9 juin 2020, par NosterI 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 setduration = 66
or below I get no error but any time over causes an error.


final_clip = concatenate_videoclips([*vidclip], method='compose')

count=0
for file in os.listdir(TO):
 if file.endswith('.mp4'):
 count+=1

finalClipName = "{}Final.mp4".format(count)
music = AudioFileClip('song.mp3')
audio_background = afx.audio_loop(music, duration = final_clip.duration)#ERROR
final_audio = CompositeAudioClip([final_clip.audio, audio_background])
final_clip = final_clip.set_audio(final_audio)
final_clip.write_videofile(finalClipName, fps=10)




The error in question :



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


-
lavf : make overlay_qsv work based on framesync
3 avril 2018, par Ruiling Songlavf : 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>
-
nodejs ffmpeg child-process stdio stream stops
10 mars 2023, par BleedFeedI'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 ?