Recherche avancée

Médias (1)

Mot : - Tags -/intégration

Autres articles (101)

  • ANNEXE : Les plugins utilisés spécifiquement pour la ferme

    5 mars 2010, par

    Le site central/maître de la ferme a besoin d’utiliser plusieurs plugins supplémentaires vis à vis des canaux pour son bon fonctionnement. le plugin Gestion de la mutualisation ; le plugin inscription3 pour gérer les inscriptions et les demandes de création d’instance de mutualisation dès l’inscription des utilisateurs ; le plugin verifier qui fournit une API de vérification des champs (utilisé par inscription3) ; le plugin champs extras v2 nécessité par inscription3 (...)

  • 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

  • Problèmes fréquents

    10 mars 2010, par

    PHP et safe_mode activé
    Une des principales sources de problèmes relève de la configuration de PHP et notamment de l’activation du safe_mode
    La solution consiterait à soit désactiver le safe_mode soit placer le script dans un répertoire accessible par apache pour le site

Sur d’autres sites (12436)

  • FFmpeg memory growing in avcodec_decode_video2

    21 juillet 2015, par Wendy Pan

    I am using C# to call the ffmpeg lib.
    I use the example code to decode an video in the MP4 format.

    However, I found out that the memory grows a lot (like 10MB), when I called the avcodec_decode_video2 function.

    The memory keeps growing until I called the avcodec_close(&CodecContext) function.

    I suppose the reason may be that AVCodecContext alloc 10MB data during the call of avcodec_decode_video2 function. And this memory will not be released until the AVCodecContext is closed.

    I do not know if I am right.

    Main codes are in the following.

    private bool readNextBuffer(int index)
       {
           /// Read frames into buffer
           //m_codecContext->refcounted_frames = 0;
           int frameNumber = 0;
           FrameBuffer[index].Clear();
           GC.Collect();

           while (frameNumber < m_bufferSize)
           {
               AVPacket Packet; /// vedio packet
               AVPacket* pPacket = &Packet;
               //AVFrame* pDecodedFrame = FFmpegInvoke.avcodec_alloc_frame();
               AVFrame* pDecodedFrame = FFmpegInvoke.av_frame_alloc();
               if (FFmpegInvoke.av_read_frame(m_pFormatContext, pPacket) < 0)
               {
                   Console.WriteLine("The end of the vedio.");
                   break;
               }
               if (pPacket->stream_index == pStream->index)
               {
                   /// Decode vedio frame
                   int gotPicture = 0;
                   int size = FFmpegInvoke.avcodec_decode_video2(m_codecContext, pDecodedFrame, &gotPicture, pPacket);
                   if (size < 0)
                   {
                       Console.WriteLine("End of the vedio.");
                       //throw new Exception(string.Format("Error while decoding frame {0}", frameNumber));
                       break;
                   }

                   if (gotPicture == 1)
                   {
                       /// Allocate an AVFrame structure

                       if (convertFrame(pDecodedFrame, index))
                       {
                           frameNumber++;
                       }
                       else
                       {
                           Console.WriteLine("Error: convert failed.");
                       }
                   }
               }
               FFmpegInvoke.av_frame_free(&pDecodedFrame);
               FFmpegInvoke.av_free_packet(pPacket);
               GC.Collect();
           }
           nowFrameIndex = 0;
           return FrameBuffer.Count > 0 ? true : false;
       }
  • How to play mp4 video file with HTML5 video tag on iOS (iPhone and iPad) ?

    22 avril 2015, par Mokielas

    I want to display HTML5 video to my users using the video tag. For Firefox, Chrome and Opera WEBM works as expected. In Safari on Windows and Mac my MP4 version works, too. The only problem I’m experiencing is, that it won’t play on iPad and iPhone (Safari of course).

    Create video

    The MP4 (h.264 + acc-lc) is converted like this (with profile : baseline and level 3.0 for maximum compatibility with iOS) :

    • Stream #0:0(eng) : Video : h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 640x352, 198 kb/s, 17 fps, 17 tbr, 17408 tbn, 34 tbc (default)
    • Stream #0:1(eng) : Audio : aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 56 kb/s (default)

    Edit : Whole ffprobe output (slight changes in bitrate etc. to the above mentioned) :

    Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf56.30.100
    Duration: 00:01:00.05, start: 0.046440, bitrate: 289 kb/s
    Stream #0:0(eng): Video: h264 (Constrained Baseline)
    (avc1 /0x31637661), yuv420p, 640x352, 198 kb/s, 25 fps, 25 tbr,
    12800 tbn, 50 tbc (default)
    Metadata:
     handler_name    : VideoHandler
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz,
    stereo, fltp, 85 kb/s (default)
    Metadata:
     handler_name    : SoundHandler

    I found various requirements for iOS devices like this and this, also someone mentioned to add the yuv420p pixel format when converting.

    In fact the ffmpeg cmd looks like this :

    ffmpeg -i __inputfile__ -vcodec libx264 -pix_fmt yuv420p -profile:v baseline -level 3.0 -b:v 200K -r 17 -bt 800K -c:a libfdk_aac -b:a 85k -ar 44100 -y __outputfile_lowversion__.mp4

    Display video

    With Modernizr I detect which format is "supported" and add it to the src or the video tag. Last thing is adding the right MIME type. For mp4 I add type="video/mp4". The full code for the video tag is :

    <video class="p-video" preload="auto" autoplay="" type="video/mp4" src="http://full.url/to/video_low.mp4"></video>

    I tried various ways : own implementation with own interface, controls and stuff from browser vendors and video.js just to check whether i’m too studip for this. All work in the environments listed above except for iPhone and iPad.

    I read this article on Video on the web, especially this part and only serve the "right" file with the "right" type without a posterattribute set.

    My Apache has

    AddType video/mp4                      mp4 m4v f4v f4p
    AddType video/ogg                      ogv
    AddType video/webm                     webm

    And byte-ranges are enabled. This is needed to get partial content from the server.

    Has anyone a clue what’s going on there ? Thanks in advance !

    Edit : Safari and Chrome both throw MEDIA_ERR_SRC_NOT_SUPPORTED Error on iPad. There must be an issue with the encoding.

  • Process is not exiting ffmpeg.exe only for the command which detects the silences from a video

    20 juillet 2015, par Jitender Kumar

    The job of the method ExecuteCommandSync is to detect the silences from a video and return the output as string but when I run this code it never bring the value of proc.HasExited as true. If I forcefully drag the debugger to the line

    result =proc.StandardOutput.ReadToEnd()

    then it never exit the ffmpeg.exe so as a result control never returns back.

    Although the same method is working fine for a different command like creating an audio file from a video. In this case proc.HasExited also returns false but it also generates the audio file successfully.

    public static string ExecuteCommandSync(string fileName, int timeoutMilliseconds)
       {
           string result = String.Empty;
           string workingDirectory = Directory.GetCurrentDirectory();
           try
           {
               string command = string.Format("ffmpeg -i {0} -af silencedetect=noise=-20dB:d=0.2 -f null -", "\"" + fileName + "\"");                
               System.Diagnostics.ProcessStartInfo procStartInfo =
                   new System.Diagnostics.ProcessStartInfo("cmd", "/c " + command);

               procStartInfo.WorkingDirectory = workingDirectory;                
               procStartInfo.RedirectStandardOutput = true;
               procStartInfo.RedirectStandardError = true;
               procStartInfo.UseShellExecute = false;                
               procStartInfo.CreateNoWindow = false;                
               System.Diagnostics.Process proc = new System.Diagnostics.Process();
               proc.StartInfo = procStartInfo;
               proc.Start();                
               proc.WaitForExit(timeoutMilliseconds);
               // Get the output into a string
               if (proc.HasExited)
               {
                   if (!proc.StandardOutput.EndOfStream)
                   {
                       result = proc.StandardOutput.ReadToEnd();
                   }
                   else if (!proc.StandardError.EndOfStream)
                   {
                       result = "Error:: " + proc.StandardError.ReadToEnd();
                   }
               }
           }
           catch (Exception)
           {
               throw;
           }
           return result;
       }

    So please advice.