
Recherche avancée
Médias (1)
-
Bug de détection d’ogg
22 mars 2013, par
Mis à jour : Avril 2013
Langue : français
Type : Video
Autres articles (109)
-
Des sites réalisés avec MediaSPIP
2 mai 2011, parCette page présente quelques-uns des sites fonctionnant sous MediaSPIP.
Vous pouvez bien entendu ajouter le votre grâce au formulaire en bas de page. -
Support audio et vidéo HTML5
10 avril 2011MediaSPIP utilise les balises HTML5 video et audio pour la lecture de documents multimedia en profitant des dernières innovations du W3C supportées par les navigateurs modernes.
Pour les navigateurs plus anciens, le lecteur flash Flowplayer est utilisé.
Le lecteur HTML5 utilisé a été spécifiquement créé pour MediaSPIP : il est complètement modifiable graphiquement pour correspondre à un thème choisi.
Ces technologies permettent de distribuer vidéo et son à la fois sur des ordinateurs conventionnels (...) -
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 (...)
Sur d’autres sites (14946)
-
how to play mp3 using ffmpeg
5 novembre 2013, par AriI'm trying to play audio mp3 file using ffmpeg in android
but I'm facing a problem in the below mentioned codehow to play mp3 using ffmpeg
void JNICALL Java_com_music_MainActivity_loadFile(JNIEnv* env, jobject obj,jstring file,jbyteArray array)
{
jboolean isfilenameCopy;
const char * filename = (*env)->GetStringUTFChars(env, file, &isfilenameCopy);
AVCodec *codec;
AVCodecContext *c= NULL;
int out_size, len;
FILE *f, *outfile;
uint8_t *outbuf;
uint8_t inbuf[AUDIO_INBUF_SIZE + FF_INPUT_BUFFER_PADDING_SIZE];
AVPacket avpkt;
jclass cls = (*env)->GetObjectClass(env, obj);
jmethodID play = (*env)->GetMethodID(env, cls, "playSound", "([BI)V");//At the begining of your main function
av_init_packet(&avpkt);
printf("Audio decoding\n");
__android_log_print(ANDROID_LOG_INFO, DEBUG_TAG, "inside load file");
/* find the mpeg audio decoder */
codec = avcodec_find_decoder(CODEC_ID_MP3);
if (!codec) {
fprintf(stderr, "codec not found\n");
exit(1);
}
c= avcodec_alloc_context();
/* open it */
if (avcodec_open(c, codec) < 0) {
fprintf(stderr, "could not open codec\n");
exit(1);
}
__android_log_print(ANDROID_LOG_INFO, DEBUG_TAG, "open avcode");
outbuf = malloc(AVCODEC_MAX_AUDIO_FRAME_SIZE);
__android_log_print(ANDROID_LOG_INFO, DEBUG_TAG, "open %s",outbuf);
f = fopen(filename, "rb");
if (!f) {
fprintf(stderr, "could not open %s\n", filename);
exit(1);
}
/* decode until eof */
avpkt.data = inbuf;
avpkt.size = fread(inbuf, 1, AUDIO_INBUF_SIZE, f);
__android_log_print(ANDROID_LOG_INFO, DEBUG_TAG, "data =%s and size %d",avpkt.data,avpkt.size);
while (avpkt.size > 0) {
out_size = AVCODEC_MAX_AUDIO_FRAME_SIZE;
len = avcodec_decode_audio3(c, (short *)outbuf, &out_size, &avpkt);
__android_log_print(ANDROID_LOG_INFO, DEBUG_TAG, "length =%d",len);
if (len < 0) {
fprintf(stderr, "Error while decoding\n");
__android_log_print(ANDROID_LOG_INFO, DEBUG_TAG, " failed length =%d",errno);
exit(1);
}
if (out_size > 0) {
/* if a frame has been decoded, output it */
jbyte *bytes = (*env)->GetByteArrayElements(env, array, NULL);
memcpy(bytes, outbuf, out_size); //
(*env)->ReleaseByteArrayElements(env, array, bytes, 0);
(*env)->CallVoidMethod(env, obj, play, array, out_size);
}
avpkt.size -= len;
avpkt.data += len;
if (avpkt.size < AUDIO_REFILL_THRESH) {
/* Refill the input buffer, to avoid trying to decode
* incomplete frames. Instead of this, one could also use
* a parser, or use a proper container format through
* libavformat. */
memmove(inbuf, avpkt.data, avpkt.size);
avpkt.data = inbuf;
len = fread(avpkt.data + avpkt.size, 1,
AUDIO_INBUF_SIZE - avpkt.size, f);
if (len > 0)
avpkt.size += len;
}
}
fclose(f);
free(outbuf);
avcodec_close(c);
av_free(c);
}i am getting the len = - 1 in
len = avcodec_decode_audio3(c, (short *)outbuf, &out_size, &avpkt);
what am i doing wrong ??
please help
-
play m3u8 video from laravel storage
21 janvier 2020, par JennsenMy question is the same as how to play m3u8 videos from laravel storage but this one did not get answers.
If I play the video from the public folder it does it without problems.
but if I want to play it from storage this doesn’t work.
public function watch(Request $request, Episode $episode)
{
$video = Storage::disk('videos')->get($episode->video);
return new Response($video, 200, ['Content-Type' => 'application/x-mpegURL', 'isHls' => true]);
}this is the definition of my disk in config/filesystems.php
'videos' => [
'driver' => 'local',
'root' => storage_path('app/videos'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],this is my conversion code (job)
*/
public function handle()
{
$path = $this->episode->id . '.m3u8';
$lowBitrate = (new X264 ('aac'))->setKiloBitrate(500)->setVideoCodec('libx264');
$midBitrate = (new X264 ('aac'))->setKiloBitrate(1000)->setVideoCodec('libx264');
$highBitrate = (new X264 ('aac'))->setKiloBitrate(3000)->setVideoCodec('libx264');
FFMpeg::fromDisk('tmp')->open($this->episode->video)
->exportForHLS()
->dontSortFormats()
->setSegmentLength(10)
->toDisk('local')
->addFormat($lowBitrate, function($media) {
$media->addFilter(function ($filters) {
$filters->resize(new \FFMpeg\Coordinate\Dimension(640, 480));
});
})
->addFormat($midBitrate, function($media) {
$media->addFilter(function ($filters) {
$filters->resize(new \FFMpeg\Coordinate\Dimension(1280, 960));
});
})
->addFormat($highBitrate, function($media) {
$media->addFilter(function ($filters) {
$filters->resize(new \FFMpeg\Coordinate\Dimension(1280, 960));
});
})
->save($path);
$this->episode->update([
'video' => $path,
]);
FFMpeg::cleanupTemporaryFiles();
} -
The bot doesn't play music (discord.py)
30 avril 2024, par NaydarThe code works fine, but when using the command in guild the bot enters the voice channel but doesn't play music, immediately console gives : ffmpeg process 56560 successfully terminated with return code of 3199971767.


import discord
import youtube_dl
import ffmpeg
import requests
from discord.ext import commands

class music(commands.Cog, name = 'music'):
 def __init__(self, bot):
 self.bot = bot

 self.is_playing = False
 self.is_paused = False


 self.music_queue = []
 self.YTDL_OPTIONS = {'format': 'bestaudio', 'noplaylist': 'True'}
 self.FFMPEG_OPTIONS = {'before_options': '-reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 5', 'options': '-vn -filter "volume=0.25"'}

 self.voice_client = None
 
 @commands.command(name="play")
 async def play(self, ctx, url):
 if not ctx.message.author.voice:
 await ctx.send("You are not connected to a voice channel.")
 return

 self.voice_channel = ctx.message.author.voice.channel
 if self.voice_client and self.voice_client.is_connected():
 await self.voice_client.move_to(self.voice_channel)
 else:
 self.voice_client = await self.voice_channel.connect()

 api_key = "my_key"
 video_id = url.split("v=")[1]
 api_url = f"https://www.googleapis.com/youtube/v3/videos?part=snippet&id={video_id}&key={api_key}"

 response = requests.get(api_url)
 if response.status_code == 200:
 data = response.json()
 title = data["items"][0]["snippet"]["title"]
 audio_url = f"https://www.youtube.com/watch?v={video_id}"
 self.voice_client.play(discord.FFmpegOpusAudio(audio_url))
 await ctx.send("Now playing: " + title)
 else:
 await ctx.send("Unable to fetch video information.")

async def setup(bot):
 await bot.add_cog(music(bot))



I tried to rewrite some YTDL and FFMPEG options
(tried to replace "noplaylist" option on "False" and terminal sent :
"discord.player : ffmpeg process 51124 successfully terminated with return code of 4294967295").
Also i checked the updates of modules.