
Recherche avancée
Médias (1)
-
SPIP - plugins - embed code - Exemple
2 septembre 2013, par
Mis à jour : Septembre 2013
Langue : français
Type : Image
Autres articles (112)
-
De l’upload à la vidéo finale [version standalone]
31 janvier 2010, parLe 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, parComme 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, parMediaSPIP 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 ExitareI 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 Joelffmpeg 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%3DI 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 hoI'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)