Recherche avancée

Médias (1)

Mot : - Tags -/intégration

Autres articles (112)

  • De l’upload à la vidéo finale [version standalone]

    31 janvier 2010, par

    Le chemin d’un document audio ou vidéo dans SPIPMotion est divisé en trois étapes distinctes.
    Upload et récupération d’informations de la vidéo source
    Dans un premier temps, il est nécessaire de créer un article SPIP et de lui joindre le document vidéo "source".
    Au moment où ce document est joint à l’article, deux actions supplémentaires au comportement normal sont exécutées : La récupération des informations techniques des flux audio et video du fichier ; La génération d’une vignette : extraction d’une (...)

  • Les vidéos

    21 avril 2011, par

    Comme les documents de type "audio", Mediaspip affiche dans la mesure du possible les vidéos grâce à la balise html5 .
    Un des inconvénients de cette balise est qu’elle n’est pas reconnue correctement par certains navigateurs (Internet Explorer pour ne pas le nommer) et que chaque navigateur ne gère en natif que certains formats de vidéos.
    Son avantage principal quant à lui est de bénéficier de la prise en charge native de vidéos dans les navigateur et donc de se passer de l’utilisation de Flash et (...)

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

Sur d’autres sites (7572)

  • Extract images from ffmpeg stream

    30 juillet 2022, par Exitare

    I am trying to setup an application which receives a stream via tcp from a localhost webcam. The stream is generated by ffmpeg like so :

    


    ffmpeg -f avfoundation -framerate 30 -i 0 -target pal-dvd -probesize 42M -pix_fmt uyvy422 -f mpegts -flush_packets 0 tcp://127.0.0.1:9050


    


    My receiving server application code looks like this :

    


    public static void StartServer()
{
   
    bool done = false;

    var listener = new TcpListener(IPAddress.Any, 9050);

    listener.Start();
    
    // Buffer for reading data
    var bytes = new byte[256];
    string data;
    
    while (!done)
    {
        Console.WriteLine("Waiting for connection...");
        TcpClient client = listener.AcceptTcpClient();

        
        data = null;

        // Get a stream object for reading and writing
        NetworkStream stream = client.GetStream();

        int i;
        Console.WriteLine("Connection accepted.");
        // Loop to receive all the data sent by the client.
        while((i = stream.Read(bytes, 0, bytes.Length))!=0)
        {
            // Translate data bytes to a ASCII string.
            Console.WriteLine("Received: {0}", bytes);

            
        }
       
    }

    listener.Stop();
}


    


    ffmpeg is able to connect and send the stream, the c# application is able to receive the stream.

    


    The output by the Console.WriteLine call is like so :

    


    Received: System.Byte[]
Received: System.Byte[]
Received: System.Byte[]
Received: System.Byte[]
Received: System.Byte[]
Received: System.Byte[]
Received: System.Byte[]
Received: System.Byte[]
Received: System.Byte[]
Received: System.Byte[]
Received: System.Byte[]


    


    However, I am unsure how to create images from these bytes. In theory I would have to wait until I receive the whole image, as I expect the image to be greater than 256bytes.

    


    In short, I receive the bytes but don't know how to convert them into images.
How do I do this ?

    


    Also I am not sure if this is the best approach. I know that ffmpeg offers the possibility to extract images from videos. But I don't know, whether this is also possible using streams. Is there a solution provided by ffmpeg to extract images from an input stream ? Ideally 10 images per second.

    


  • FFMPEG and HTTPS

    14 juin 2012, par Joel

    ffmpeg lists http as a protocol when I ask : ffmpeg -protocols

    Does this also mean support for a https url ? Do I need to encode this url somehow for the command line. I get "No such file or directory", but with http urls (at least some) it does work.

    A url (created for a Amazon S3 bucket) similar to this one does not seem to work :
    https://mycompany-video-test.s3.amazonaws.com/client/btr/video/xyz0011-x403-snap-n-go-ex/1/video/baby-laugh-ripping-paper.mp4?AWSAccessKeyId=AVIAZL9J6SIRPAA&Expires=1323709667&Signature=pTvS9F2do2t8%3D

    I suspect the format of the url is problematic, I've also tried enclosing in quotes... Yes, this URL does not currently work as it has expired, but even while its valid, its a problem.

    In short :
    1) Should https work ?
    2) Do I need to format the url somehow ?

  • heroku-22 stack discord.py bot doesn't play music

    30 août 2022, par bon ho

    I'm making music bot with discord.py and using heroku. bot is playing music my localhost but heroku host is not playing music.

    


    I found what cause a bug.
It working nicely in heroku-20, but not working in heroku-22 stack.

    


    How can I use heroku-22 stack without error ?
What can I do ?

    


    I'm sorry my english is bad.

    


    my code :

    


    import youtube_dl
import discord
from discord import app_commands,Interaction
import asyncio
import os

class MyClient(discord.Client):
  async def on_ready(self):
    await self.wait_until_ready()
    await tree.sync()
    print(f"login at {self.user}")
        
intents= discord.Intents.all()
client = MyClient(intents=intents)
tree = app_commands.CommandTree(client)

youtube_dl.utils.bug_reports_message = lambda: ''
ytdl_format_options = {
    'format': 'bestaudio/best',
    'outtmpl': '%(extractor)s-%(id)s-%(title)s.%(ext)s',
    'restrictfilenames': True,
    'noplaylist': True,
    'nocheckcertificate': True,
    'ignoreerrors': False,
    'logtostderr': False,
    'quiet': True,
    'no_warnings': True,
    'default_search': 'auto',
    'source_address': '0.0.0.0',  # bind to ipv4 since ipv6 addresses cause issues sometimes
}

ffmpeg_options = {
    'options': '-vn',
}
ytdl = youtube_dl.YoutubeDL(ytdl_format_options)
class YTDLSource(discord.PCMVolumeTransformer):
    def __init__(self, source, *, data, volume=0.5):
        super().__init__(source, volume)

        self.data = data

        self.title = data.get('title')
        self.url = data.get('url')

    @classmethod
    async def from_url(cls, url, *, loop=None, stream=True):
        loop = loop or asyncio.get_event_loop()
        data = await loop.run_in_executor(None, lambda: ytdl.extract_info(url, download=not stream))
        if 'entries' in data:
            # take first item from a playlist
            data=data['entries'][0]
        filename = data['url'] if stream else ytdl.prepare_filename(data)
        return cls(discord.FFmpegPCMAudio(filename, **ffmpeg_options), data=data)
queue={}
@tree.command(name="play", description="play music")
async def playmusic(interaction:Interaction,url_title:str,playfirst:bool=False):
  await interaction.response.send_message("I'm looking for music!!")
  guild=str(interaction.guild.id)
  try:
    queue[guild]
  except KeyError:
    queue[guild]=[]
  if interaction.user.voice is None:
    await interaction.edit_original_response(content="you must join any voice channel")
  else:
    voice_client: discord.VoiceClient = discord.utils.get(client.voice_clients, guild=interaction.guild)
    if voice_client == None:
      await interaction.user.voice.channel.connect()
      voice_client: discord.VoiceClient = discord.utils.get(client.voice_clients, guild=interaction.guild)
    player = await YTDLSource.from_url(url_title, loop=None)
    if playfirst and len(queue[guild])>1:
      queue[guild].insert(1,player)
    else:
      queue[guild].append(player)
    if not voice_client.is_playing():
      voice_client.play(player,after=None)
      await interaction.edit_original_response(content=f"{player.title} playing!!")
    else:
      await interaction.edit_original_response(content=f"{player.title} enqueued!")
    await asyncio.sleep(7)
    await interaction.delete_original_response()

client.run(token)