Recherche avancée

Médias (91)

Autres articles (20)

  • Les tâches Cron régulières de la ferme

    1er décembre 2010, par

    La gestion de la ferme passe par l’exécution à intervalle régulier de plusieurs tâches répétitives dites Cron.
    Le super Cron (gestion_mutu_super_cron)
    Cette tâche, planifiée chaque minute, a pour simple effet d’appeler le Cron de l’ensemble des instances de la mutualisation régulièrement. Couplée avec un Cron système sur le site central de la mutualisation, cela permet de simplement générer des visites régulières sur les différents sites et éviter que les tâches des sites peu visités soient trop (...)

  • HTML5 audio and video support

    13 avril 2011, par

    MediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
    The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
    For older browsers the Flowplayer flash fallback is used.
    MediaSPIP allows for media playback on major mobile platforms with the above (...)

  • Contribute to a better visual interface

    13 avril 2011

    MediaSPIP is based on a system of themes and templates. Templates define the placement of information on the page, and can be adapted to a wide range of uses. Themes define the overall graphic appearance of the site.
    Anyone can submit a new graphic theme or template and make it available to the MediaSPIP community.

Sur d’autres sites (5715)

  • voice_client.play doesn't continue loop (Discord) (Solved)

    19 mars 2023, par Razurio

    SOLVED see end

    


    songs = asyncio.Queue(maxsize=0)
currently_playing = False


@client.command()
async def play(ctx, url):
    global songs
    global currently_playing
    if currently_playing:
        with yt_dlp.YoutubeDL({"format": "bestaudio", "outtmpl": "Queue_Download/%(title)s.%(ext)s"}) as ydl:
            info = ydl.extract_info(url, download=True)
            filename = ydl.prepare_filename(info)
            await songs.put({"file": filename, "info": video_info(url)})
            # print("test 1")
    else:
        with yt_dlp.YoutubeDL({"format": "bestaudio", "outtmpl": "Queue_Download/%(title)s.%(ext)s"}) as ydl:
            info = ydl.extract_info(url, download=True)
            filename = ydl.prepare_filename(info)
            await songs.put({"file": filename, "info": video_info(url)})
            # print("test 2")
        asyncio.create_task(queue(ctx))



async def queue(ctx):
    global songs
    global currently_playing
    currently_playing = True
    while True:
        if songs.empty():
            currently_playing = False
            await ctx.reply("Queue is now empty")
            await ctx.voice_client.disconnect()  # disconnect from voice channel when queue is empty
            break
        else:    
            song = await songs.get()
            filename = song["file"]
            voice_channel = ctx.author.voice.channel
            if not ctx.voice_client:  # check if bot is not already connected to a voice channel
                await voice_channel.connect()

            await ctx.reply('playing')
            await ctx.voice_client.play(discord.FFmpegPCMAudio(filename))

@client.command()
async def stop(ctx):
    global songs
    await ctx.voice_client.disconnect()
    await empty_queue(songs)
    await ctx.reply('Stopped')

async def empty_queue(songs):
    while not songs.empty():
        songs.get_nowait()


    


    I have problems with the "await ctx.voice_client.play(discord.FFmpegPCMAudio(filename))" which doesn't continue after finishing.

    


    I know you can use a after= parameter in voice_client.play() but I didn't manage to get it to work to recursivly call queue()

    


    async def play_next(ctx):
global songs
global currently_playing
if songs.empty():
    currently_playing = False
    await ctx.reply("Queue is now empty")
    await ctx.voice_client.disconnect()  # disconnect from voice channel when queue is empty
else:    
    song = await songs.get()
    filename = song["file"]
    voice_channel = ctx.author.voice.channel
    if not ctx.voice_client:  # check if bot is not already connected to a voice channel
        await voice_channel.connect()

    def after(error):
        if error:
            print(f'Error in after callback: {error}')
        asyncio.create_task(play_next(ctx))

    await ctx.reply('playing')
    ctx.voice_client.play(discord.FFmpegPCMAudio(filename), after=after)


    


    I tried using the after parameter like like but I just get an error in line 116, in after asyncio.create_task(play_next(ctx)) "no running event loop" ... "Calling the after function failed"

    


    EDIT

    


    async def play_next(ctx):
global loop
global songs
global currently_playing
global tasks
loop = asyncio.get_event_loop()
if songs.empty():
    currently_playing = False
    await ctx.reply("Queue is now empty")
    await ctx.voice_client.disconnect()  # disconnect from voice channel when queue is empty
else:
    
    song = await songs.get()
    filename = song["file"]
    voice_channel = ctx.author.voice.channel
    if not ctx.voice_client:  # check if bot is not already connected to a voice channel
        await voice_channel.connect()
    def after(error):
        if error:
            print("er")
        loop.create_task(queue(ctx))

    await ctx.reply('playing')
    ctx.voice_client.play(discord.FFmpegPCMAudio(filename), after=after)


    


    using loop = asyncio.get_event_loop() and loop.create_task(queue(ctx)) made it finally work
took inspiration from this post

    


  • Wowza : Live stream detected but does not play

    2 septembre 2016, par searcot jabali

    This is the command I use to being the stream on my hardware device
    ffmpeg -i /dev/video0 -f rtsp rtsp ://[user] :[password]@52.66.64.136:1935/test/myStream

    I can see that there is an input coming in from the Incoming Streams section of the Wowza Engine Manager.
    The IP, Stream name & Application name are correct.
    Wowza Engine Manager

    However when I try to play the stream using the Test Players, I dont see anything. Just a black screen.
    An error message at the bottom of Adobe HDS says Source stream or file could not be found or access was denied.

    Wowza Test Player

    When I try to use the RTSP wowza link on VLC I get an error stating that the "Input Cannot Be opened"

    Source security for RTSP has been set to open.

    When I stream through the GoCoder App there are no issues.
    This leads me to believe the server is functioning correctly.

    When I use the same command but change the output to write to file (ffmpeg -i /dev/video0 out.mp4) it works perfectly fine !!
    So even the base command is correct.

    Am I missing some arguments from the FFMPEG command ?
    Do I need to provide the username & password even though RTSP Source Security has been set to open ?

  • FFMPEG libx264 mp4 file does not play in firefox Windows

    2 mai 2020, par Behel

    Some of my ffmpeg converted videos in mp4 format, using libx264 encoder, aren't playable with Firefox browser on Windows.

    



    Here is my ffmpeg command : 
ffmpeg -i file_tmp.mp4 -c:v libx264 -profile:v baseline -level 3.0 -crf 15 -preset slow -pix_fmt yuv420p -c:a aac -movflags faststart -strict -2 -vf scale=1024:576 file.mp4

    



    The video can be played with every browsers on Mac, and works well with Webkit based browers on Windows.

    



    The problem not occur with every video converted, only a few, like this one for instance : https://attentionphilippelepara.pet/testcard/m6-29_04_2020-mire.mp4

    



    Here is what I see when i try to play this media, on Firefow Windows then on Chrome Windows.

    



    Corrupted on Firefox WindowsOk on Chrome Windows

    



    I really don't see where is the problem. Can someone could help me ?