Recherche avancée

Médias (0)

Mot : - Tags -/configuration

Aucun média correspondant à vos critères n’est disponible sur le site.

Autres articles (100)

  • Publier sur MédiaSpip

    13 juin 2013

    Puis-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

  • Possibilité de déploiement en ferme

    12 avril 2011, par

    MediaSPIP peut être installé comme une ferme, avec un seul "noyau" hébergé sur un serveur dédié et utilisé par une multitude de sites différents.
    Cela permet, par exemple : de pouvoir partager les frais de mise en œuvre entre plusieurs projets / individus ; de pouvoir déployer rapidement une multitude de sites uniques ; d’éviter d’avoir à mettre l’ensemble des créations dans un fourre-tout numérique comme c’est le cas pour les grandes plate-formes tout public disséminées sur le (...)

  • Ajouter des informations spécifiques aux utilisateurs et autres modifications de comportement liées aux auteurs

    12 avril 2011, par

    La manière la plus simple d’ajouter des informations aux auteurs est d’installer le plugin Inscription3. Il permet également de modifier certains comportements liés aux utilisateurs (référez-vous à sa documentation pour plus d’informations).
    Il est également possible d’ajouter des champs aux auteurs en installant les plugins champs extras 2 et Interface pour champs extras.

Sur d’autres sites (11245)

  • FFMPEG conversion issue in PHP | 0KB conversion issue

    27 mai 2012, par PHPLearner

    i am using below code in the exec() command, it works in other server, in my dev region just converting into empty flv file.

    i have paid to my host to reinstall the ffmpeg, they have confirmed its good still not getting the output.

    they are claiming that i have a issue in the below syntax. does any one have any thoughts on this ?

    ffmpeg -i /home/hereitis/uploads/videos/MVI_0572.AVI -f flv -s 320x240 /home/hereitis/videos/flv/MVI_0572.flv

    Thank you so mcuh for your interest to read this.

  • Crop video by frame and save output as video

    3 avril 2018, par D_Corson

    I’m trying to resolve a question I had posted earlier (trying to only use FFMPEG) and am still stuck and hoping someone else has a solution.

    I have a video that I want to crop frame by frame with a varying locations to extract a region of interest. I can currently do this using moviepy which has been excellent, but I would like to try and solve this using only FFMPEG. The added constraints are that I would like to be able to crop the frame and put this in a new video without having to save the cropped images locally and compiling them.

    Thanks

  • Increase/Decrease audio volume using FFmpeg

    9 juin 2016, par williamtroup

    I’m am currently using C# invokes to call the FFmpeg APIs to handle video and audio. I have the following code in place to extract the audio from a video and write it to a file.

    while (ffmpeg.av_read_frame(formatContext, &packet) >= 0)
    {
       if (packet.stream_index == streamIndex)
       {
           while (packet.size > 0)
           {
               int frameDecoded;
               int frameDecodedResult = ffmpeg.avcodec_decode_audio4(codecContext, frame, &frameDecoded, packet);

               if (frameDecoded > 0 && frameDecodedResult >= 0)
               {
                   //writeAudio.WriteFrame(frame);

                   packet.data += totalBytesDecoded;
                   packet.size -= totalBytesDecoded;
               }
           }

           frameIndex++;
       }

       Avcodec.av_free_packet(&packet);
    }

    This is all working correctly. I’m currently using the FFmpeg.AutoGen project for the API access.

    I want to be able to increase/decrease the volume of the audio before its written to the file, but I cannot seem to find a command or any help with this. Does it have to be done manually ?

    Update 1 :

    After receiving some help, this is the class layout I have :

    public unsafe class FilterVolume
    {
       #region Private Member Variables

       private AVFilterGraph* m_filterGraph = null;
       private AVFilterContext* m_aBufferSourceFilterContext = null;
       private AVFilterContext* m_aBufferSinkFilterContext = null;

       #endregion

       #region Private Constant Member Variables

       private const int EAGAIN = 11;

       #endregion

       public FilterVolume(AVCodecContext* codecContext, AVStream* stream, float volume)
       {
           CodecContext = codecContext;
           Stream = stream;
           Volume = volume;

           Initialise();
       }

       public AVFrame* Adjust(AVFrame* frame)
       {
           AVFrame* returnFilteredFrame = ffmpeg.av_frame_alloc();

           if (m_aBufferSourceFilterContext != null && m_aBufferSinkFilterContext != null)
           {
               int bufferSourceAddFrameResult = ffmpeg.av_buffersrc_add_frame(m_aBufferSourceFilterContext, frame);
               if (bufferSourceAddFrameResult < 0)
               {
               }

               int bufferSinkGetFrameResult = ffmpeg.av_buffersink_get_frame(m_aBufferSinkFilterContext, returnFilteredFrame);
               if (bufferSinkGetFrameResult < 0 && bufferSinkGetFrameResult != -EAGAIN)
               {
               }
           }

           return returnFilteredFrame;
       }

       public void Dispose()
       {
           Cleanup(m_filterGraph);
       }

       #region Private Properties

       private AVCodecContext* CodecContext { get; set; }
       private AVStream* Stream { get; set; }
       private float Volume { get; set; }

       #endregion

       #region Private Setup Helper Functions

       private void Initialise()
       {
           m_filterGraph = GetAllocatedFilterGraph();

           string aBufferFilterArguments = string.Format("sample_fmt={0}:channel_layout={1}:sample_rate={2}:time_base={3}/{4}",
               (int)CodecContext->sample_fmt,
               CodecContext->channel_layout,
               CodecContext->sample_rate,
               Stream->time_base.num,
               Stream->time_base.den);

           AVFilterContext* aBufferSourceFilterContext = CreateFilter("abuffer", m_filterGraph, aBufferFilterArguments);
           AVFilterContext* volumeFilterContext = CreateFilter("volume", m_filterGraph, string.Format("volume={0}", Volume));
           AVFilterContext* aBufferSinkFilterContext = CreateFilter("abuffersink", m_filterGraph);

           LinkFilter(aBufferSourceFilterContext, volumeFilterContext);
           LinkFilter(volumeFilterContext, aBufferSinkFilterContext);

           SetFilterGraphConfiguration(m_filterGraph, null);

           m_aBufferSourceFilterContext = aBufferSourceFilterContext;
           m_aBufferSinkFilterContext = aBufferSinkFilterContext;
       }

       #endregion

       #region Private Cleanup Helper Functions

       private static void Cleanup(AVFilterGraph* filterGraph)
       {
           if (filterGraph != null)
           {
               ffmpeg.avfilter_graph_free(&filterGraph);
           }
       }

       #endregion

       #region Provate Helpers

       private AVFilterGraph* GetAllocatedFilterGraph()
       {
           AVFilterGraph* filterGraph = ffmpeg.avfilter_graph_alloc();
           if (filterGraph == null)
           {
           }

           return filterGraph;
       }

       private AVFilter* GetFilterByName(string name)
       {
           AVFilter* filter = ffmpeg.avfilter_get_by_name(name);
           if (filter == null)
           {
           }

           return filter;
       }

       private void SetFilterGraphConfiguration(AVFilterGraph* filterGraph, void* logContext)
       {
           int filterGraphConfigResult = ffmpeg.avfilter_graph_config(filterGraph, logContext);
           if (filterGraphConfigResult < 0)
           {
           }
       }

       private AVFilterContext* CreateFilter(string filterName, AVFilterGraph* filterGraph, string filterArguments = null)
       {
           AVFilter* filter = GetFilterByName(filterName);
           AVFilterContext* filterContext;

           int aBufferFilterCreateResult = ffmpeg.avfilter_graph_create_filter(&filterContext, filter, filterName, filterArguments, null, filterGraph);
           if (aBufferFilterCreateResult < 0)
           {
           }

           return filterContext;
       }

       private void LinkFilter(AVFilterContext* source, AVFilterContext* destination)
       {
           int filterLinkResult = ffmpeg.avfilter_link(source, 0, destination, 0);
           if (filterLinkResult < 0)
           {
           }
       }

       #endregion
    }

    The Adjust() function is called after a frame is decoded. I’m currently getting a -22 error when av_buffersrc_add_frame() is called. This indicates that a parameter is invalid, but after debugging, I cannot see anything that would be causing this.

    This is how the code is called :

    while (ffmpeg.av_read_frame(formatContext, &packet) >= 0)
    {
       if (packet.stream_index == streamIndex)
       {
           while (packet.size > 0)
           {
               int frameDecoded;
               int frameDecodedResult = ffmpeg.avcodec_decode_audio4(codecContext, frame, &frameDecoded, packet);

               if (frameDecoded > 0 && frameDecodedResult >= 0)
               {
                   AVFrame* filteredFrame = m_filterVolume.Adjust(frame);

                   //writeAudio.WriteFrame(filteredFrame);

                   packet.data += totalBytesDecoded;
                   packet.size -= totalBytesDecoded;
               }
           }

           frameIndex++;
       }

       Avcodec.av_free_packet(&packet);
    }

    Update 2 :

    Cracked it. The "channel_layout" option in the filter argument string is supposed to be a hexadecimal. This is what the string formatting should look like :

    string aBufferFilterArguments = string.Format("sample_fmt={0}:channel_layout=0x{1}:sample_rate={2}:time_base={3}/{4}",
       (int)CodecContext->sample_fmt,
       CodecContext->channel_layout,
       CodecContext->sample_rate,
       Stream->time_base.num,
       Stream->time_base.den);