
Recherche avancée
Médias (17)
-
Matmos - Action at a Distance
15 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
DJ Dolores - Oslodum 2004 (includes (cc) sample of “Oslodum” by Gilberto Gil)
15 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
Danger Mouse & Jemini - What U Sittin’ On ? (starring Cee Lo and Tha Alkaholiks)
15 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
Cornelius - Wataridori 2
15 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
The Rapture - Sister Saviour (Blackstrobe Remix)
15 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
Chuck D with Fine Arts Militia - No Meaning No
15 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
Autres articles (46)
-
Les autorisations surchargées par les plugins
27 avril 2010, parMediaspip core
autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs -
Publier sur MédiaSpip
13 juin 2013Puis-je poster des contenus à partir d’une tablette Ipad ?
Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir -
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 (6684)
-
Moviepy write_videofile changes number of video and audio frames even after using 'rawvideo' as the codec parameter
14 mars 2019, par Jaideep SagarI am using moviepy (Python) to read video and audio frames of a video and after making some changes I am writing them back to a videofile, say new.avi, to preserve the changes, or to avoid compression, I am using codec= ’rawvideo’ in write_videofile function. But when I read the video and audio frames back, the number of video and audio frames are different than when they were when written, they are usually increased.
Can anybody tell me the reason, ? is it because of the ffmpeg used or some other reason ? Does it happen always or there is some problem in my machine ? Thank you :-) -
Use Static Library Build Shared Library Undefined Reference
26 mai 2020, par LeoI want to use AndroidStudio ndk-build to build Shared Library on Window with ffmpeg lib but i got Undefined Reference Error,Please tell me what I do wrong



ndkVersion = 21.0.6113669
compileSdkVersion 29



I also try to build By GCC , the same error happen
I also try to build By CMake with ffmpeg SourceCode , the same error happen



I try to build .a file with some simple C Code on gcc and use another C Code to use it,it work,but not with ffmpeg .a file i dont know why



this is my Android.mk



`LOCAL_PATH := $(call my-dir)
 include $(CLEAR_VARS)
 LOCAL_MODULE := avcodec
 LOCAL_SRC_FILES := lib/libavcodec.dll.a
 include $(PREBUILT_STATIC_LIBRARY)

 include $(CLEAR_VARS)
 LOCAL_MODULE := avformat
 LOCAL_SRC_FILES := lib/libavformat.dll.a
 include $(PREBUILT_STATIC_LIBRARY)

 ...

 include $(CLEAR_VARS)
 LOCAL_MODULE := avutil
 LOCAL_SRC_FILES := lib/libavutil.dll.a
 include $(PREBUILT_STATIC_LIBRARY)

 include $(CLEAR_VARS)
 LOCAL_MODULE := libTestDll
 LOCAL_SRC_FILES := TestDll.cpp
 LOCAL_C_MODULE := avcodec avformat swscale avutil avfilter avdevice

 include $(BUILD_SHARED_LIBRARY)`




this is my main cpp



#include 
#include 

#define __STDC_CONSTANT_MACROS

#include <string>

extern"C"
{
#include "libavformat/avformat.h"
#include "libavutil/mathematics.h"
#include "libavutil/time.h"
#include "libavutil/pixfmt.h"
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
#include "libswscale/swscale.h"
#include "libavutil/imgutils.h"
}

using namespace std;

char output[99999];
int frameCount = 0;
uint8_t* buf;
int bufLength;
uint8_t* p_global_bgr_buffer;
int num_bytes;
int wrap;
bool EndReceFrame = false;
SwsContext* swsContext;
AVFrame* pFrame = av_frame_alloc();
AVCodecContext* pCodecContext;
AVPixelFormat dstFmt = AV_PIX_FMT_RGB24;

static void BGRpgm_save(AVFrame* frame)
{
 int linesize[8] = { frame->linesize[0] * 3 };

 uint8_t* bgr_buffer[8] = { p_global_bgr_buffer };

 sws_scale(swsContext, frame->data, frame->linesize, 0, frame->height, bgr_buffer, linesize);

 memcpy(buf, bgr_buffer[0], linesize[0] * frame->height);

 bufLength = linesize[0] * frame->height;

 frameCount++;

}
...

</string>



Error Message



[x86] SharedLibrary : libTestDll.so
jni/TestDll.cpp:123: error: undefined reference to 'avformat_open_input'
jni/TestDll.cpp:127: error: undefined reference to 'avformat_find_stream_info'
jni/TestDll.cpp:138: error: undefined reference to 'av_dump_format'
jni/TestDll.cpp:144: error: undefined reference to 'avcodec_find_decoder'
jni/TestDll.cpp:146: error: undefined reference to 'avcodec_alloc_context3'



-
discord.py music bot slowing down for longer audio queries
1er janvier 2023, par BoblugeSo I'm trying to make a music bot with discord.py. Shown below is a minimum working example of the bot with the problematic functions :


import os

import discord
from discord.ext import commands
from discord import player as p

import yt_dlp as youtube_dl

intents = discord.Intents.default()
intents.members = True

bot = commands.Bot(command_prefix=';')

class Music(commands.Cog):
 def __init__(self, bot):
 self.bot = bot
 self.yt-dlp_opts = {
 'format': 'bestaudio/best',
 'outtmpl': '%(extractor)s-%(id)s-%(title)s.%(ext)s',
 'restrictfilenames': True,
 'noplaylist': True,
 'playlistend': 1,
 '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
 }
 self.ffmpeg_opts = {
 'options': '-vn',
 # Source: https://stackoverflow.com/questions/66070749/
 "before_options": "-reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 5",
 }
 self.cur_stream = None
 self.cur_link = None

 @commands.command(aliases=["p"])
 async def play(self, ctx, url):
 yt-dlp = youtube_dl.YoutubeDL(self.ytdl_opts)
 data = yt-dlp.extract_info(url, download=False)
 filename = data['url'] # So far only works with links
 print(filename)
 audio = p.FFmpegPCMAudio(filename, **self.ffmpeg_opts)
 self.cur_stream = audio
 self.cur_link = filename

 # You must be connected to a voice channel first
 await ctx.author.voice.channel.connect()
 ctx.voice_client.play(audio)
 await ctx.send(f"now playing")

 @commands.command(aliases=["ff"])
 async def seek(self, ctx):
 """
 Fast forwards 10 seconds
 """
 ctx.voice_client.pause()
 for _ in range(500):
 self.cur_stream.read() # 500*20ms of audio = 10000ms = 10s
 ctx.voice_client.resume()

 await ctx.send(f"fast forwarded 10 seconds")

 @commands.command(aliases=["j"])
 async def jump(self, ctx, time):
 """
 Jumps to a time in the song, input in the format of HH:MM:SS
 """
 ctx.voice_client.stop()
 temp_ffempg = {
 'options': '-vn',
 # Keyframe skipping when passed as an input option (fast)
 "before_options": f"-ss {time} -reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 5",
 }
 new_audio = p.FFmpegPCMAudio(self.cur_link, **temp_ffempg)
 self.cur_stream = new_audio
 ctx.voice_client.play(new_audio)
 await ctx.send(f"skipped to {time}")


bot.add_cog(Music(bot))
bot.run(os.environ["BOT_TOKEN"])



My
requirements.txt
file :

discord.py[voice]==1.7.3
yt-dlp==2021.9.2



To play a song in Discord the following format is used :


;p 



Where
is any link that yt-dlp supports. Under normal circumstances, the
;p
command is used with songs that are relatively short, to whichseek()
andjump()
work extremely quickly to do what they are supposed to do. For example if I execute these sequence of commands in Discord :

;p https://www.youtube.com/watch?v=n8X9_MgEdCg <- 4 min song



And when the bot starts playing, spam the following :


;ff
;ff
;ff
;ff
;ff



The bot is able to almost instantly seek five 10-second increments of the song. Additionally, I can jump to the three minute mark very quickly with :


;j 00:03:00



From some experimentation, the
seek()
andjump()
functions seem to work quickly for songs that are under 10 minutes. If I try the exact same sequence of commands but with a 15 minute song likehttps://www.youtube.com/watch?v=Ks9Ck5LfGWE
or longerhttps://www.youtube.com/watch?v=VThrx5MRJXA
(10 hours classical music), there is an evident slowdown when running the;ff
command. However, when I include a few seconds of delay between firings of the;ff
command, the seeking is just as fast as previously mentioned. I'm not exactly sure what is going on with yt-dlp/FFmpeg behind the scenes when streaming, but I speculate that there is some sort of internal buffer, and songs that pass a certain length threshold are processed differently.

For longer songs, the
seek()
command takes longer to get to the desired position, which makes sense since this site specifies that-ss
used as an input option loops through keyframes (as there must be more keyframes in longer songs). However, if the following commands are run in Discord :

;p https://www.youtube.com/watch?v=VThrx5MRJXA <- 10 hour classical music
;j 09:00:00 <- jump to 9 hour mark
;j 00:03:00 <- jump to 3 minute mark



The first seek command takes around 5 to 10 seconds to perform a successful seek, which isn't bad, but it could be better. The second seek command takes around the same time as the first command, which doesn't make sense to me, because I thought less keyframes were skipped in order to reach the 3 minute mark.


So I'm wondering what's going on, and how to potentially solve the following :


- 

- What is actually going on with the
seek()
command ? My implementation ofseek()
uses discord.py'sdiscord.player.FFmpegPCMAudio.read()
method, which apparently runs slower if the song's length is longer ? Why ? - Why does input seeking for long YouTube videos take almost the same time no matter where I seek to ?
- How the yt-dlp and FFmpeg commands work behind the scenes to stream a video from YouTube (or any other website that YTDL supports). Does yt-dlp and FFmpeg behave differently for audio streams above a certain length threshold ?
- Potential ways to speed up
seek()
andjump()
for long songs. I recall some well-known discord music bots were able to do this very quickly.










- What is actually going on with the