
Recherche avancée
Médias (5)
-
ED-ME-5 1-DVD
11 octobre 2011, par
Mis à jour : Octobre 2011
Langue : English
Type : Audio
-
Revolution of Open-source and film making towards open film making
6 octobre 2011, par
Mis à jour : Juillet 2013
Langue : English
Type : Texte
-
Valkaama DVD Cover Outside
4 octobre 2011, par
Mis à jour : Octobre 2011
Langue : English
Type : Image
-
Valkaama DVD Label
4 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Image
-
Valkaama DVD Cover Inside
4 octobre 2011, par
Mis à jour : Octobre 2011
Langue : English
Type : Image
Autres articles (111)
-
Script d’installation automatique de MediaSPIP
25 avril 2011, parAfin de palier aux difficultés d’installation dues principalement aux dépendances logicielles coté serveur, un script d’installation "tout en un" en bash a été créé afin de faciliter cette étape sur un serveur doté d’une distribution Linux compatible.
Vous devez bénéficier d’un accès SSH à votre serveur et d’un compte "root" afin de l’utiliser, ce qui permettra d’installer les dépendances. Contactez votre hébergeur si vous ne disposez pas de cela.
La documentation de l’utilisation du script d’installation (...) -
Automated installation script of MediaSPIP
25 avril 2011, parTo overcome the difficulties mainly due to the installation of server side software dependencies, an "all-in-one" installation script written in bash was created to facilitate this step on a server with a compatible Linux distribution.
You must have access to your server via SSH and a root account to use it, which will install the dependencies. Contact your provider if you do not have that.
The documentation of the use of this installation script is available here.
The code of this (...) -
Que fait exactement ce script ?
18 janvier 2011, parCe script est écrit en bash. Il est donc facilement utilisable sur n’importe quel serveur.
Il n’est compatible qu’avec une liste de distributions précises (voir Liste des distributions compatibles).
Installation de dépendances de MediaSPIP
Son rôle principal est d’installer l’ensemble des dépendances logicielles nécessaires coté serveur à savoir :
Les outils de base pour pouvoir installer le reste des dépendances Les outils de développements : build-essential (via APT depuis les dépôts officiels) ; (...)
Sur d’autres sites (9688)
-
FFMPEG not working for larger size file using PHP in my VPS server with CentOS
28 juillet 2019, par MrinmoyMkI want to compress and convert different audio formats into mp3 file using ffmpeg in php. I have already installed ffmpeg and is working fine for files below 0.9 mb. Whenever I try to submit files larger than 0.9 mb then I get error .
It may be there is some mistake in my VPS server configuration or mistake in my PHP codes. Could you please help me.I have also already tried setting the chmod or permission as 777 in my server to the needed files in my server
This is my PHP code
if (isset($_POST['submit'])) {
$path = "song/"; //set your folder path
$mp3_local=$_FILES['mp3_local']['name'];
$tmp = $_FILES['mp3_local']['tmp_name'];
exec("ffmpeg -i ".$tmp." -ab 96k ./out96/$mp3_local.mp3");}This is the error message that I receive when submitting files greater than 0.9 mb :
Forbidden
You don’t have permission to access /convert.php on this server.
Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.
But now after disabling ModSecurity in my server configuration the above 403 error is gone but still the FFMPEG is not being able to handle larger size files
How do I solve this ?
-
youtube_dl, ffmpeg, discord.py is not playing songs even w/o streaming
27 août 2021, par BlueFire02I have tried many times to make a basic queue system, I tested the play command to see if it worked back then and it did, unfortunately during this construction I have been having a lot of problems just playing the song. I did try to implement a queueing system but all that comes out is this specific error :


[tls @ 0x7f8244705240] IO Error: -9806 [https @ 0x7f824480b000] Will reconnect at 835584 in 0 second(s), error=Input/output error.



Additional Info : I also installed ffmpeg onto my mac, I only put the 1 file called ffmpeg in my path if that helps but I am pretty sure it has to do something with youtube_dl.


Code : (Make sure to put your guild_id in the guild_id spot, another thing is when you invite the bot make sure in the 2auth section click 'bot' and 'application.commands')


import discord
from discord.ext import commands
import youtube_dl
from discord_slash import cog_ext, SlashContext
from youtube_search import YoutubeSearch
import asyncio
import os


guild_ids = [GUILD ID GOES HERE]
queue = []
global is_playing
is_playing = False
time_video = 0 

class music(commands.Cog):
 def __init__(self, client):
 self.client = client
 
 @cog_ext.cog_slash(name="ping", guild_ids=guild_ids)
 async def ping(self, ctx):
 await ctx.send(content="Pong!")
 
 @cog_ext.cog_slash(name="join", guild_ids=guild_ids)
 async def join(self, ctx):
 if ctx.author.voice is None:
 return await ctx.send ("You are not in a voice channel!")
 voice_channel = ctx.author.voice.channel
 await voice_channel.connect()
 await ctx.guild.change_voice_state(channel=ctx.author.voice.channel, self_mute=True, self_deaf=True)
 await ctx.send("I joined the party :tada:")
 
 @cog_ext.cog_slash(name="disconnect", guild_ids=guild_ids)
 async def disconnect(self, ctx):
 await ctx.voice_client.disconnect()
 
 @cog_ext.cog_slash(name="play", guild_ids=guild_ids)
 async def play(self, ctx, input):
 if 'https://www.youtube.com/watch?' in input or 'https://youtu.be/' in input:
 YTDL_OPTIONS = {'format':"bestaudio"}
 with youtube_dl.YoutubeDL(YTDL_OPTIONS) as ydl:
 info_dict = ydl.extract_info(input, download=False)
 video_title = info_dict.get('title', None)

 results = YoutubeSearch(video_title, max_results=1).to_json()
 print(results)
 url_suffix_int = results.find('url_suffix') + 14


 results2 = "".join(['https://www.youtube.com', str(results[url_suffix_int:-3])])

 title_int = results.find('title') + 9
 title_int2 = results.find('long_desc') - 4
 title_string = str(results[title_int:title_int2])

 thumbnail_int = results.find('thumbnail') + 15
 title_split = results.find('title') - 5
 splitboth = str(results[thumbnail_int:title_split])
 final_result = splitboth.split('", "', 1)[0]

 channel_int = results.find('channel') + 11
 channel_int2 = results.find('duration') - 4
 channel_string = str(results[channel_int:channel_int2])

 duration_int = results.find('duration') + 12
 duration_int2 = results.find('views') - 4
 duration_string = str(results[duration_int:duration_int2])

 views_int = results.find('views') + 9
 views_int2 = results.find('publish_time') - 4
 views_string = str(results[views_int:views_int2])

 embed = discord.Embed(title=title_string, colour=discord.Colour(0x1), url=results2)

 embed.set_thumbnail(url=final_result)
 embed.set_author(name="Added to queue", icon_url=self.client.user.avatar_url)

 embed.add_field(name="Channel", value=channel_string, inline=True)
 embed.add_field(name="Song Duration", value=duration_string, inline=True)
 embed.add_field(name="Views", value=views_string, inline=True)

 await ctx.send(embed=embed)

 queue.append(input)
 await start_queue(self, ctx)

 else:
 results = YoutubeSearch(input, max_results=1).to_json()
 print(results)
 url_suffix_int = results.find('url_suffix') + 14


 results2 = "".join(['https://www.youtube.com', str(results[url_suffix_int:-3])])

 title_int = results.find('title') + 9
 title_int2 = results.find('long_desc') - 4
 title_string = str(results[title_int:title_int2])

 thumbnail_int = results.find('thumbnail') + 15
 title_split = results.find('title') - 5
 splitboth = str(results[thumbnail_int:title_split])
 final_result = splitboth.split('", "', 1)[0]

 channel_int = results.find('channel') + 11
 channel_int2 = results.find('duration') - 4
 channel_string = str(results[channel_int:channel_int2])

 duration_int = results.find('duration') + 12
 duration_int2 = results.find('views') - 4
 duration_string = str(results[duration_int:duration_int2])

 views_int = results.find('views') + 9
 views_int2 = results.find('publish_time') - 4
 views_string = str(results[views_int:views_int2])

 embed = discord.Embed(title=title_string, colour=discord.Colour(0x1), url=results2)

 embed.set_thumbnail(url=final_result)
 embed.set_author(name="Added to queue", icon_url=self.client.user.avatar_url)

 embed.add_field(name="Channel", value=channel_string, inline=True)
 embed.add_field(name="Song Duration", value=duration_string, inline=True)
 embed.add_field(name="Views", value=views_string, inline=True)

 await ctx.send(embed=embed)

 queue.append(results2)
 await start_queue(self, ctx)
 

 @cog_ext.cog_slash(name="pause", guild_ids=guild_ids)
 async def pause(self, ctx):
 ctx.voice_client.pause()
 
 
 @cog_ext.cog_slash(name="resume", guild_ids=guild_ids)
 async def resume(self, ctx):
 ctx.voice_client.resume()

 
def setup(client):
 client.add_cog(music(client))

async def start_queue(self, ctx):
 print(is_playing)
 if len(queue) <= 0:
 await ctx.voice_client.disconnect()
 while(len(queue) > 0):
 if(is_playing == False):
 await start(self, ctx, queue[0])

 

async def start(self, ctx, link_yt):
 global is_playing
 is_playing = True
 FFMPEG_OPTIONS = {'before_options': '-reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 5', 'options': '-vn'}
 YTDL_OPTIONS = {'format':"bestaudio"}
 vc = ctx.voice_client
 with youtube_dl.YoutubeDL(YTDL_OPTIONS) as ydl:
 info = ydl.extract_info(link_yt, download=False)
 url2 = info['formats'][0]['url']
 source = await discord.FFmpegOpusAudio.from_probe(url2, **FFMPEG_OPTIONS)
 vc.play(source)
 await asyncio.sleep(info['duration'] + 1)
 print("Done")
 del queue[0]
 is_playing = False



Final Note : I did try to download and play the song but in the end it gave me the following error :


Options reconnect not found.



-
Seeking with ffmpeg options fails or causes delayed playback in Discord bot
29 août 2022, par J PetersenMy Discord bot allows users to play a song starting from a timestamp.


The problem is that playback is delayed and audio plays faster and is jumbled if start times >= 30s are set.


Results from testing different start times. Same URL, 30 second duration :







 Entered Start Time (s) 

Playback Delay (s) 

Song Playback Time (s) 







 0 

3 

30 




 30 

10 

22 




 60 

17 

17 




 120 

31 

2 




 150 

120 

<1 









I am setting the start time using ffmpeg_options as suggested in this question.


Does anyone understand why the audio playback is being delayed/jumbled ? How can I improve playback delay and allow users to start in the middle of a multi-chapter YouTube video ?


Code :


import discord
import youtube_dl
import asyncio


# Suppress noise about console usage from errors
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": False,
 "yesplaylist": 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 at certain times
}

ytdl = youtube_dl.YoutubeDL(ytdl_format_options)


class YTDLSource(discord.PCMVolumeTransformer):
 def __init__(self, source: discord.AudioSource, *, data: dict, volume: float = 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=False, timestamp = 0):
 ffmpeg_options = {
 "options": f"-vn -ss {timestamp}"}

 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:
 # Takes the 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)


intents = discord.Intents.default()

bot = discord.Bot(intents=intents)

@bot.slash_command()
async def play(ctx, audio: discord.Option(), seconds: discord.Option(), timestamp: discord.Option()):
 channel = ctx.author.voice.channel
 voice = await channel.connect()
 player = await YTDLSource.from_url(audio, loop=bot.loop, stream=True, timestamp=int(timestamp))
 voice.play(player)
 await asyncio.sleep(int(seconds))
 await voice.disconnect()

token = token value
bot.run(token)