Recherche avancée

Médias (1)

Mot : - Tags -/bug

Autres articles (109)

  • Des sites réalisés avec MediaSPIP

    2 mai 2011, par

    Cette 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 2011

    MediaSPIP 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, par

    Le 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 Ari

    I'm trying to play audio mp3 file using ffmpeg in android
    but I'm facing a problem in the below mentioned code

    how 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 Jennsen

    My 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 Naydar

    The 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.