
Recherche avancée
Médias (1)
-
Rennes Emotion Map 2010-11
19 octobre 2011, par
Mis à jour : Juillet 2013
Langue : français
Type : Texte
Autres articles (69)
-
Mise à jour de la version 0.1 vers 0.2
24 juin 2013, parExplications des différents changements notables lors du passage de la version 0.1 de MediaSPIP à la version 0.3. Quelles sont les nouveautés
Au niveau des dépendances logicielles Utilisation des dernières versions de FFMpeg (>= v1.2.1) ; Installation des dépendances pour Smush ; Installation de MediaInfo et FFprobe pour la récupération des métadonnées ; On n’utilise plus ffmpeg2theora ; On n’installe plus flvtool2 au profit de flvtool++ ; On n’installe plus ffmpeg-php qui n’est plus maintenu au (...) -
Personnaliser en ajoutant son logo, sa bannière ou son image de fond
5 septembre 2013, parCertains thèmes prennent en compte trois éléments de personnalisation : l’ajout d’un logo ; l’ajout d’une bannière l’ajout d’une image de fond ;
-
Ecrire une actualité
21 juin 2013, parPrésentez les changements dans votre MédiaSPIP ou les actualités de vos projets sur votre MédiaSPIP grâce à la rubrique actualités.
Dans le thème par défaut spipeo de MédiaSPIP, les actualités sont affichées en bas de la page principale sous les éditoriaux.
Vous pouvez personnaliser le formulaire de création d’une actualité.
Formulaire de création d’une actualité Dans le cas d’un document de type actualité, les champs proposés par défaut sont : Date de publication ( personnaliser la date de publication ) (...)
Sur d’autres sites (8048)
-
Why is my discord bot not able to find the file that is there when I open the folder manually ?
22 juin 2021, par TomaI made a discord bot that should play music using ffmpeg.


It's connecting and downloading the youtube webm file after which it should convert and rename it to
song.mp3
but it doesn't manage to do so. I check the folder and the error message doesn't match what I see - the file is there and has been renamed.

- 

- Am I using the replace command correctly to move the file ?
- I'd note that I'm using windows10 and that the folders are all read only and that although I'm the admin I can't change that no matter what I do (I guess it's a win10 bug). Does that have anything to do with it ?
- Is there another mistake in the code that'd prevent the file from being found by the bot ?








My code :


import discord
from discord.ext import commands
import youtube_dl #for url music command
import os

client = commands.Bot(command_prefix = '><')

#connect to voice channel
@client.command(aliases = ['c'])
async def connect(ctx, vcName):
 voice = discord.utils.get(client.voice_clients, guild=ctx.guild)
 voiceChannel = discord.utils.get(ctx.guild.channels, name=str(vcName))
 if voice == None: #if voice is not connected to any channel
 await voiceChannel.connect()
 else:
 if voice.channel == vcName: #if trying to connect to the same channel
 await ctx.send('already connected to this channel')
 else:
 await voice.move_to(vcName)

@client.command(aliases = ['d'])
async def delFile(ctx):
 song_there = os.path.exists(os.getcwd()+'/music/current/song.mp3') #true when song.mp3 exists in 'current' folder in 'music' folder
 if song_there:
 await ctx.send('song was detected')
 os.remove('song.mp3')
 if song_there:
 await ctx.send('song was not deleted')
 else:
 await ctx.send('File is not found. check the name again')

#play music from url

@client.command(aliases = ['p'])
async def playMusic(ctx, vcName, url : str): #play music file
 song_there = os.path.exists(os.path.join(os.getcwd(),'/music/current/song.mp3'))
 try:
 if song_there:
 print('previous song found')
 os.remove(os.path.join(os.getcwd(),'/music/current/song.mp3')) #removes the song in current to make room for a new song
 if song_there:
 print('song was not deleted')
 else:
 print('song deleted')
 except PermissionError:
 await ctx.send('A song is currently playing')
 return
 voiceChannel = discord.utils.get(ctx.guild.channels, name=str(vcName))
 ydl_opts = {
 'format': 'bestaudio/best',
 'postprocessors': [{
 'key': 'FFmpegExtractAudio',
 'preferredcodec': 'mp3',
 'preferredquality': '192',
 }]
 }


 for file in os.listdir('./'):
 if file.endswith('.mp3'): #if song.mp3 already exists delete it to make room for a new download
 os.remove('song.mp3')
 else: #download the file from youtube
 with youtube_dl.YoutubeDL(ydl_opts) as ydl:
 ydl.download([url])
 for file in os.listdir('./'): #after downloading rename the file and move it to current folder
 if not file == ('song.mp3') and file.endswith('.mp3'):
 os.rename(file, 'song.mp3')
 print(os.path.join(os.getcwd(), 'song.mp3'))
 print(os.path.join(os.getcwd(), '/music/current/song.mp3'))
 os.replace(os.path.join(os.getcwd(), 'song.mp3'), os.path.join(os.getcwd(), '/music/current/song.mp3')) #move file to current

 voice = discord.utils.get(client.voice_clients, guild=ctx.guild)
 if not voice is None: #if voice is already created
 if not voice.is_connected(): #and is not connected
 await voiceChannel.connect()
 voice.play(discord.FFmpegPCMAudio('song.mp3'))
 else:
 await ctx.send('Bot made an oopsy. Cast mending and heal bot.')
client.run('token')



Error :


[youtube] wkJ7oDMqz0A: Downloading webpage
[download] The Minor Bee-wkJ7oDMqz0A.webm has already been downloaded
[download] 100% of 5.13MiB
[ffmpeg] Destination: The Minor Bee-wkJ7oDMqz0A.mp3
Deleting original file The Minor Bee-wkJ7oDMqz0A.webm (pass -k to keep)
[youtube] wkJ7oDMqz0A: Downloading webpage
[download] Destination: The Minor Bee-wkJ7oDMqz0A.webm
[download] 100% of 5.13MiB in 00:00 
[ffmpeg] Destination: The Minor Bee-wkJ7oDMqz0A.mp3
Deleting original file The Minor Bee-wkJ7oDMqz0A.webm (pass -k to keep)
[youtube] wkJ7oDMqz0A: Downloading webpage
[download] Destination: The Minor Bee-wkJ7oDMqz0A.webm
[download] 100% of 5.13MiB in 00:00 
[ffmpeg] Destination: The Minor Bee-wkJ7oDMqz0A.mp3
Deleting original file The Minor Bee-wkJ7oDMqz0A.webm (pass -k to keep)
C:.....song.mp3 -> **C:/music/current/song.mp3**
Ignoring exception in command playMusic:
Traceback (most recent call last):
 File "C:\Program Files\Python38\lib\site-packages\discord\ext\commands\core.py", line 85, in wrapped
 ret = await coro(*args, **kwargs)
 File "C:...tut-bot.py", line 84, in playMusic
 os.replace(os.path.join(os.getcwd(), 'song.mp3'), os.path.join(os.getcwd(), '/music/current/song.mp3')) #move file to current
FileNotFoundError: [WinError 3] The system cannot find the path specified: 'C:\....\\song.mp3' -> 'C:/music/current/song.mp3'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
 File "C:\Program Files\Python38\lib\site-packages\discord\ext\commands\bot.py", line 939, in invoke
 await ctx.command.invoke(ctx)
 File "C:\Program Files\Python38\lib\site-packages\discord\ext\commands\core.py", line 863, in invoke
 await injected(*ctx.args, **ctx.kwargs)
 File "C:\Program Files\Python38\lib\site-packages\discord\ext\commands\core.py", line 94, in wrapped
 raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: FileNotFoundError: [WinError 3] The system cannot find the path specified: 'C:\\...\\song.mp3' -> 'C:/music/current/song.mp3'



-
Why does my discord bot not able to find the file that is there when I open the folder manually ?
22 juin 2021, par TomaI made a discord bot that should play music using ffmpeg.


It's connecting and downloading the youtube webm file after which it should convert and rename it to
song.mp3
but it doesn't manage to do so. I check the folder and the error message doesn't match what I see - the file is there and has been renamed.

- 

- Am I using the replace command correctly to move the file ?
- I'd note that I'm using windows10 and that the folders are all read only and that although I'm the admin I can't change that no matter what I do (I guess it's a win10 bug). Does that have anything to do with it ?
- Is there another mistake in the code that'd prevent the file from being found by the bot ?








My code :


import discord
from discord.ext import commands
import youtube_dl #for url music command
import os

client = commands.Bot(command_prefix = '><')

#connect to voice channel
@client.command(aliases = ['c'])
async def connect(ctx, vcName):
 voice = discord.utils.get(client.voice_clients, guild=ctx.guild)
 voiceChannel = discord.utils.get(ctx.guild.channels, name=str(vcName))
 if voice == None: #if voice is not connected to any channel
 await voiceChannel.connect()
 else:
 if voice.channel == vcName: #if trying to connect to the same channel
 await ctx.send('already connected to this channel')
 else:
 await voice.move_to(vcName)

@client.command(aliases = ['d'])
async def delFile(ctx):
 song_there = os.path.exists(os.getcwd()+'/music/current/song.mp3') #true when song.mp3 exists in 'current' folder in 'music' folder
 if song_there:
 await ctx.send('song was detected')
 os.remove('song.mp3')
 if song_there:
 await ctx.send('song was not deleted')
 else:
 await ctx.send('File is not found. check the name again')

#play music from url

@client.command(aliases = ['p'])
async def playMusic(ctx, vcName, url : str): #play music file
 song_there = os.path.exists(os.path.join(os.getcwd(),'/music/current/song.mp3'))
 try:
 if song_there:
 print('previous song found')
 os.remove(os.path.join(os.getcwd(),'/music/current/song.mp3')) #removes the song in current to make room for a new song
 if song_there:
 print('song was not deleted')
 else:
 print('song deleted')
 except PermissionError:
 await ctx.send('A song is currently playing')
 return
 voiceChannel = discord.utils.get(ctx.guild.channels, name=str(vcName))
 ydl_opts = {
 'format': 'bestaudio/best',
 'postprocessors': [{
 'key': 'FFmpegExtractAudio',
 'preferredcodec': 'mp3',
 'preferredquality': '192',
 }]
 }


 for file in os.listdir('./'):
 if file.endswith('.mp3'): #if song.mp3 already exists delete it to make room for a new download
 os.remove('song.mp3')
 else: #download the file from youtube
 with youtube_dl.YoutubeDL(ydl_opts) as ydl:
 ydl.download([url])
 for file in os.listdir('./'): #after downloading rename the file and move it to current folder
 if not file == ('song.mp3') and file.endswith('.mp3'):
 os.rename(file, 'song.mp3')
 print(os.path.join(os.getcwd(), 'song.mp3'))
 print(os.path.join(os.getcwd(), '/music/current/song.mp3'))
 os.replace(os.path.join(os.getcwd(), 'song.mp3'), os.path.join(os.getcwd(), '/music/current/song.mp3')) #move file to current

 voice = discord.utils.get(client.voice_clients, guild=ctx.guild)
 if not voice is None: #if voice is already created
 if not voice.is_connected(): #and is not connected
 await voiceChannel.connect()
 voice.play(discord.FFmpegPCMAudio('song.mp3'))
 else:
 await ctx.send('Bot made an oopsy. Cast mending and heal bot.')
client.run('token')



Error :


[youtube] wkJ7oDMqz0A: Downloading webpage
[download] The Minor Bee-wkJ7oDMqz0A.webm has already been downloaded
[download] 100% of 5.13MiB
[ffmpeg] Destination: The Minor Bee-wkJ7oDMqz0A.mp3
Deleting original file The Minor Bee-wkJ7oDMqz0A.webm (pass -k to keep)
[youtube] wkJ7oDMqz0A: Downloading webpage
[download] Destination: The Minor Bee-wkJ7oDMqz0A.webm
[download] 100% of 5.13MiB in 00:00 
[ffmpeg] Destination: The Minor Bee-wkJ7oDMqz0A.mp3
Deleting original file The Minor Bee-wkJ7oDMqz0A.webm (pass -k to keep)
[youtube] wkJ7oDMqz0A: Downloading webpage
[download] Destination: The Minor Bee-wkJ7oDMqz0A.webm
[download] 100% of 5.13MiB in 00:00 
[ffmpeg] Destination: The Minor Bee-wkJ7oDMqz0A.mp3
Deleting original file The Minor Bee-wkJ7oDMqz0A.webm (pass -k to keep)
C:.....song.mp3 -> **C:/music/current/song.mp3**
Ignoring exception in command playMusic:
Traceback (most recent call last):
 File "C:\Program Files\Python38\lib\site-packages\discord\ext\commands\core.py", line 85, in wrapped
 ret = await coro(*args, **kwargs)
 File "C:...tut-bot.py", line 84, in playMusic
 os.replace(os.path.join(os.getcwd(), 'song.mp3'), os.path.join(os.getcwd(), '/music/current/song.mp3')) #move file to current
FileNotFoundError: [WinError 3] The system cannot find the path specified: 'C:\....\\song.mp3' -> 'C:/music/current/song.mp3'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
 File "C:\Program Files\Python38\lib\site-packages\discord\ext\commands\bot.py", line 939, in invoke
 await ctx.command.invoke(ctx)
 File "C:\Program Files\Python38\lib\site-packages\discord\ext\commands\core.py", line 863, in invoke
 await injected(*ctx.args, **ctx.kwargs)
 File "C:\Program Files\Python38\lib\site-packages\discord\ext\commands\core.py", line 94, in wrapped
 raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: FileNotFoundError: [WinError 3] The system cannot find the path specified: 'C:\\...\\song.mp3' -> 'C:/music/current/song.mp3'



-
How to compress base64 decoded video data using ffmpeg in django
23 mai 2021, par Sudipto SarkerI want to upload the video/audio file in my django-channels project. So I uploaded video(base64 encoded url) from websocket connection. It is working fine. But now after decoding base64 video data I want to compress that video using ffmpeg.But it showing error like this.
''Raw : No such file or directory''
I used 'AsyncJsonWebsocketConsumer' in consumers.py file.Here is my code :
consumers.py :


async def send_file_to_room(self, room_id, dataUrl, filename):
 # decoding base64 data
 format, datastr = dataUrl.split(';base64,')
 ext = format.split('/')[-1]
 file = ContentFile(base64.b64decode(datastr), name=filename)
 print(f'file: {file}')
 # It prints 'Raw content'
 output_file_name = filename + '_temp.' + ext
 ff = f'ffmpeg -i {file} -vf "scale=iw/5:ih/5" {output_file_name}'
 subprocess.run(ff,shell=True) 



May be here ffmpeg can not recognize the file to be compressed. I also tried to solve this using post_save signal.


signals.py :


@receiver(post_save, sender=ChatRoomMessage)
def compress_video_or_audio(sender, instance, created, **kwargs):
 print("Inside signal")
 if created:
 if instance.id is None:
 print("Instance is not present")
 else:
 video_full_path = f'{instance.document.path}'
 print(video_full_path)
 // E:\..\..\..\Personal Chat Room\media\PersonalChatRoom\file\VID_20181219_134306_w5ow8F7.mp4
 output_file_name = filename + '_temp.' + extension
 ff = f'ffmpeg -i {filename} -vf "scale=iw/5:ih/5" {output_file_name}'
 subprocess.run(ff,shell=True)
 instance.document = output_file_name
 instance.save()



It is also causing "E :..\Django\New_Projects\Personal : No such file or directory".
How can I solve this issue ? Any suggetions.It will be more helpful if it can be compressed before saving the object in database. Thanks in advance.