
Recherche avancée
Autres articles (9)
-
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 (...) -
Selection of projects using MediaSPIP
2 mai 2011, parThe examples below are representative elements of MediaSPIP specific uses for specific projects.
MediaSPIP farm @ Infini
The non profit organizationInfini develops hospitality activities, internet access point, training, realizing innovative projects in the field of information and communication technologies and Communication, and hosting of websites. It plays a unique and prominent role in the Brest (France) area, at the national level, among the half-dozen such association. Its members (...) -
Les formats acceptés
28 janvier 2010, parLes commandes suivantes permettent d’avoir des informations sur les formats et codecs gérés par l’installation local de ffmpeg :
ffmpeg -codecs ffmpeg -formats
Les format videos acceptés en entrée
Cette liste est non exhaustive, elle met en exergue les principaux formats utilisés : h264 : H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 m4v : raw MPEG-4 video format flv : Flash Video (FLV) / Sorenson Spark / Sorenson H.263 Theora wmv :
Les formats vidéos de sortie possibles
Dans un premier temps on (...)
Sur d’autres sites (2827)
-
Is it possible to download a song playlist through following description with yt-dlp ?
26 février 2023, par BhaturaGuySince downloading a thumbnail from youtube music provides really bad quality,
is it possible to download it in following manner :


Download the link as bestvideo+bestaudio formatt and when the video is downloaded then extract frame number 24 then use that as thumbnail and mux it and audio to .mp3 ?


Screenshot of bestvideo :
sc


Screenshot of normally download with yt-dlp :
sc2


-
Discord.py : Access files on the computer of the person who sent a message. Play a song from the local drive of any user on the server
7 avril 2021, par daDibI have a bot that can play music from my computer. Is there a way to play a song from the computer of the person who sent the message ? My thought would be using
message.author
to somehow access the person's session and get into their drive. Here is my bot. It can join a voice channel, create playlists from local file paths, start a playlist or individual file with stop/pause/play/next/previous controls :

import discord
import os.path
import logging
import asyncio
from os import path

global ready 
global vc
global source
global songQueue
global songIndex
global commandList
global stopPlaylist

ready = False
stopPlaylist = False
songQueue = []
songIndex = 0

logger = logging.getLogger('discord')
logger.setLevel(logging.DEBUG)
handler = logging.FileHandler(filename='D:\DnD\DiscordBot\discord.log', encoding='utf-8', mode='w')
handler.setFormatter(logging.Formatter('%(asctime)s:%(levelname)s:%(name)s: %(message)s'))
logger.addHandler(handler)

client = discord.Client()
commands = [
 '!connect\nConnect to a voice channel by channel id. Use !channels to find the desired id.\nExample Command: !connect 827202170973323305\n\n',
 '!channels\nLists all voice channels and their connection id.\n\n',
 '!add\nAdd a file path to the playlist.\nExample Command: !add D:\\DnD\\DiscordBot\\mySong.mp3\n\n',
 '!delete\nDeletes the last song added to the playlist.\n\n',
 '!view\nDisplays the current playlist, in order.\n\n',
 '!playlist\nStarts the playlist from the beginning, or optionally add a number as the start position.\nExample Command: !playlist 3\n\n',
 '!playSong\nPlays a specified file.\nExample Command: !playSong D:\\DnD\\DiscordBot\\mySong.mp3\n\n',
 '!next\nPlays next song in playlist.\n\n',
 '!prev\nPlays previous song in playlist.\n\n',
 '!stop\nStops all music song. Playlist will restart from the beginning.\n\n',
 '!pause\nPauses the current song. Restart with !resumeSong.\n\n',
 '!resume\nResumes the current song.\n\n'
 '!status\nLets you know if the bot thinks it is playing music.'
 ]
commandList=''
for command in commands:
 commandList+=command

@client.event
async def on_ready():
 print('We have logged in as {0.user}'.format(client))

@client.event
async def on_message(message):
 global ready 
 global vc
 global source
 global songQueue
 global songIndex
 global commandList
 global stopPlaylist

 if message.author == client.user:
 return
#!help
 if message.content.startswith('!help'):
 await message.channel.send('{0}'.format(commandList))
 return
#!connect
 if message.content.startswith('!connect'): 
 if ready:
 await message.channel.send('Bot [{0}] is already connected to a voice channel.'.format(client.user))
 return
 channel = int(message.content[9:])
 vc = await client.get_channel(channel).connect()
 ready = True
 await message.channel.send('Bot [{0}] is connecting to voice.'.format(client.user))
 return
#!channels
 if message.content.startswith('!channels'):
 channelList = ''
 for channel in client.get_all_channels():
 if channel.type == discord.ChannelType.voice:
 channelList += 'name: ' + channel.name + '\n'
 channelList += 'id: ' + str(channel.id) + '\n\n'
 await message.channel.send('{0}'.format(channelList))
 return
#!add
 if message.content.startswith('!add'):
 song = message.content[5:]
 if not path.exists(song):
 await message.channel.send('Song not found or invalid path specified.\nSpecified Path: {0}\nExample command: !addSong C:\\Users\\Public\\Music\\mySong.mp3'.format(song))
 return
 songQueue.append(song)
 await message.channel.send('Song added: {0}\nCurrent playist length: {1} song(s)'.format(song,len(songQueue)))
 return
#!delete
 if message.content.startswith('!delete'):
 if len(songQueue) == 0:
 await message.channel.send('Playlist is empty. Use !addSong, !viewList, and !playList to manage playlists.')
 return
 await message.channel.send('Removed song: {0}'.format(songQueue.pop()))
 return
#!view
 if message.content.startswith('!view'):
 if len(songQueue) == 0:
 await message.channel.send('Playlist is empty. Use !addSong, !deleteSong, and !playList to manage playlists.')
 return
 await message.channel.send('Current Playlist:\n{0}'.format('\n'.join(songQueue)))
 return
#play commands
 if message.content.startswith('!play'):
 if not ready:
 await message.channel.send('Bot [{0}] is not connected to a voice channel.'.format(client.user))
 return
#!playlist 
 if message.content.startswith('!playlist'):
 try:
 songIndex = int(message.content[10:]) - 1
 if songIndex >= len(songQueue):
 songIndex = len(songQueue) - 1
 except:
 pass 
 playSong()
 return
#!playSong
 if message.content.startswith('!playSong'):
 song = message.content[10:]
 if not path.exists(song):
 await message.channel.send('Song not found or invalid path specified.\nSpecified Path: {0}\nExample command: !play C:\\Users\\Public\\Music\\mySong.mp3'.format(song))
 return
 source = discord.FFmpegPCMAudio(song)
 vc.play(source, after=None)
 await message.channel.send('Playing song: {0}'.format(song))
 return
#!next
 if message.content.startswith('!next'):
 vc.stop()
#!prev
 if message.content.startswith('!prev'):
 songIndex -= 2
 if songIndex < -1:
 songIndex = -1
 vc.stop()
#!stop
 if message.content.startswith('!stop'):
 if not ready:
 await message.channel.send('Bot [{0}] is not connected to a voice channel.'.format(client.user))
 return
 vc.stop()
 songIndex = 0
 stopPlaylist = True
 await message.channel.send('Stopping music.')
 return
#!pause
 if message.content.startswith('!pause'):
 if not ready:
 await message.channel.send('Bot [{0}] is not connected to a voice channel.'.format(client.user))
 return
 vc.pause()
 await message.channel.send('Pausing music.')
 return
#!resume
 if message.content.startswith('!resume'):
 if not ready:
 await message.channel.send('Bot [{0}] is not connected to a voice channel.'.format(client.user))
 return
 vc.resume()
 await message.channel.send('Resuming music.')
 return
#!status
 if message.content.startswith('!status'):
 if not ready:
 await message.channel.send('Bot [{0}] is not connected to a voice channel.'.format(client.user))
 return
 if vc.is_playing():
 await message.channel.send('Something is playing.')
 return
 await message.channel.send('Nothing is playing.')
 return

def playSong():
 global songQueue
 global songIndex
 global vc
 try:
 song = songQueue[songIndex]
 source = discord.FFmpegPCMAudio(song)
 vc.play(source, after=nextSong)
 except Exception as e:
 print('playSong error {0}'.format(e))

def nextSong(error):
 global songQueue
 global songIndex
 global stopPlaylist
 try:
 songIndex += 1
 if songIndex >= len(songQueue):
 stopPlaylist = True
 if stopPlaylist:
 songIndex = 0
 stopPlaylist = False
 return
 futureFunction = asyncio.run_coroutine_threadsafe(playSong(), client.loop)
 futureFunction.result()
 except Exception as e:
 print('nextSong error {0}'.format(e))

#@client.event
#async def on_logout(user)
# global ready
# if user == client.user:
# ready = False

client.run('TOKEN')



-
How to add a scrolling text of the audio file song name on a sepecific part of a video and stream it to youtube using ffmpeg
5 novembre 2022, par Youssef LasheenI know this is s very long and specific question but it can be broken down to these points :


- 

- How to add a text of song name on video
- How to scroll in a specific area not from the beginning of the video to the end
- How to stream a looping video and loop through multiple audio files to youtube/twitch.








I kinda got the third point but i think its not an elegant solution


ffmpeg -re -stream_loop -1 -i back.gif -safe 0 -i mylist.txt -c copy -map 0:v:0 -map 1:a:0 -c:v libx264 -preset veryfast -b:v 3000k -maxrate 3000k \ -bufsize 6000k -pix_fmt yuv420p -g 50 -c:a aac -b:a 160k -ac 2 \ -ar 44100 -f flv rtmp://live.twitch.tv/app/$key


I also found this script that adds a scrolling image (input.jpg) to specific aree of a video but i coudlnt integrate it with the script above


ffmpeg -y -ignore_loop 0 -r 25 -i back.gif -loop 1 -r 25 -i input.jpg -filter_complex "[0:v]crop=270:257:360:55[c0];[c0][1:v]overlay=y='257-t*257*0.04':eof_action=endall[fg];[0:v][fg]overlay=x=360:y=55:eof_action=endall" -t 50 output.mp4