Recherche avancée

Médias (91)

Autres articles (106)

  • 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

  • Encoding and processing into web-friendly formats

    13 avril 2011, par

    MediaSPIP automatically converts uploaded files to internet-compatible formats.
    Video files are encoded in MP4, Ogv and WebM (supported by HTML5) and MP4 (supported by Flash).
    Audio files are encoded in MP3 and Ogg (supported by HTML5) and MP3 (supported by Flash).
    Where possible, text is analyzed in order to retrieve the data needed for search engine detection, and then exported as a series of image files.
    All uploaded files are stored online in their original format, so you can (...)

  • Qu’est ce qu’un masque de formulaire

    13 juin 2013, par

    Un masque de formulaire consiste en la personnalisation du formulaire de mise en ligne des médias, rubriques, actualités, éditoriaux et liens vers des sites.
    Chaque formulaire de publication d’objet peut donc être personnalisé.
    Pour accéder à la personnalisation des champs de formulaires, il est nécessaire d’aller dans l’administration de votre MediaSPIP puis de sélectionner "Configuration des masques de formulaires".
    Sélectionnez ensuite le formulaire à modifier en cliquant sur sont type d’objet. (...)

Sur d’autres sites (11709)

  • Pass camera input to ffmpeg

    30 mai 2017, par Sachin Sonone

    I am trying to develop an delphi app which will show a preview of the camera in the delphi form and then send the frames of video as images to the ffmpeg in the stdin of ffmpeg. ffmpeg then broadcast the video to wowza server over rtmp. but fmpeg gives an error ’pipe:0 Bad file descriptor’

       FFMPEG command:
       ffmpeg -f image2pipe -i pipe:0  -c:v libx264 -y -report -f flv wowza_url

    I followed this https://msdn.microsoft.com/en-us/library/ms682499(VS.85).aspx article to build the parent app which will open ffmpeg as a child and use FFmpeg’s stdin to pass input

      // Create a pipe for the child process's STDOUT.
    Createpipe(STDOut_ReadPipe, STDOut_WritePipe, @Security,0);

     // Ensure the read handle to the pipe for STDOUT is not inherited.
    SetHandleInformation(STDOut_ReadPipe,HANDLE_FLAG_INHERIT,0);

    // Create a pipe for the child process's STDIN.

    if (  CreatePipe(STDIn_ReadPipe , STDIn_WritePipe, @Security, 0) = true) then


    // Ensure the write handle to the pipe for STDIN is not inherited.

    SetHandleInformation(STDIn_WritePipe, HANDLE_FLAG_INHERIT, 0)  ;

    This the code to start ffmpeg process

    FillChar(StartupInfo,Sizeof(StartupInfo),0);
    StartupInfo.cb := Sizeof(StartupInfo);
    StartupInfo.dwFlags := STARTF_USESTDHANDLES;


    StartupInfo.wShowWindow := 1;
    S := args;
    UniqueString(S);

    StartupInfo.hStdError := STDOut_WritePipe;
    StartupInfo.hStdOutput := STDOut_WritePipe;
    StartupInfo.hStdInput := STDIn_ReadPipe;

    but as soon as program start ffmpeg exits with the error.

    This is the full console log of the ffmpeg

    ffmpeg started on 2017-05-30 at 18:45:36
    Report written to "ffmpeg-20170530-184536.log"
    Command line:
    "ffmpeg.exe" -f image2pipe -i pipe:0 -report -movflags +faststart -tune
    zerolatency -an -pix_fmt yuv420p -preset ultrafast -vcodec libx264 -b:v 250k
    -y -f flv test.flv
    ffmpeg version N-85750-ga75ef15 Copyright (c) 2000-2017 the FFmpeg
    developers
    built with gcc 6.3.0 (GCC)
    configuration: --enable-gpl --enable-version3 --enable-cuda --enable-cuvid
    --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-nvenc --enable-
    avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls
    --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-
    libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-
     libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb
     --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --
    enable-libopus --enable-librtmp --enable-libsnappy --enable-libsoxr --
     enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab
    --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-
        libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-
      libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-zlib
     libavutil      55. 61.100 / 55. 61.100
     libavcodec     57. 93.100 / 57. 93.100
     libavformat    57. 72.101 / 57. 72.101
     libavdevice    57.  7.100 / 57.  7.100
     libavfilter     6. 88.100 /  6. 88.100
     libswscale      4.  7.101 /  4.  7.101
     libswresample   2.  8.100 /  2.  8.100
     libpostproc    54.  6.100 / 54.  6.100
     Splitting the commandline.
      Reading option '-f' ... matched as option 'f' (force format) with
       argument 'image2pipe'.
      Reading option '-i' ... matched as input url with argument 'pipe:0'.
     Reading option '-report' ... matched as option 'report' (generate a
     report) with argument '1'.
     Reading option '-movflags' ... matched as AVOption 'movflags' with
     argument '+faststart'.
     Reading option '-tune' ... matched as AVOption 'tune' with argument
     'zerolatency'.
      Reading option '-an' ... matched as option 'an' (disable audio) with
      argument '1'.
      Reading option '-pix_fmt' ... matched as option 'pix_fmt' (set pixel
      format)
     with argument 'yuv420p'.
    Reading option '-preset' ... matched as AVOption 'preset' with argument
    'ultrafast'.
    Reading option '-vcodec' ... matched as option 'vcodec' (force video codec
    ('copy' to copy stream)) with argument 'libx264'.
     Reading option '-b:v' ... matched as option 'b' (video bitrate (please use -
    b:v)) with argument '250k'.
     Reading option '-y' ... matched as option 'y' (overwrite output files)
    with
    argument '1'.
    Reading option '-f' ... matched as option 'f' (force format) with argument
    'flv'.
    Reading option 'test.flv' ... matched as output url.
    Finished splitting the commandline.
    Parsing a group of options: global .
     Applying option report (generate a report) with argument 1.
    Applying option y (overwrite output files) with argument 1.
    Successfully parsed a group of options.
    Parsing a group of options: input url pipe:0.
    Applying option f (force format) with argument image2pipe.
     Successfully parsed a group of options.
    Opening an input file: pipe:0.
    [pipe @ 003bdea0] Setting default whitelist 'crypto'
    [AVIOContext @ 03115e60] Statistics: 0 bytes read, 0 seeks
    pipe:0: Bad file descriptor'
  • Podcast Producer 2 REST api

    11 septembre 2009

    I’ve been working on documenting the REST api that PCP2 uses for client server communication as part of a new project. I thought it might be useful to other folks. Consider this a work in progress - I’ve only documented the workflow for doing a multisource recording so far. Follow the job for the info.

    Each section gives a sample command and a sample response.

    All pages are behind basic HTTP auth.

    General sequence of events

    * get workflow list
    * get cameras
    * request status for camera (including thumbnail)
    * start cameras
    * create recording enclosure
    * stop cameras, provide submission_UUID returned by above step, include title


    *URL : https://pcpserver:8170/podcastproducer/info

    *Type : GET

    *Content : version=2

    *Response :
    <pre>
    <podcast_producer_result>
    <action>index</action>
    <status>success</status>
    <plist version="1.0">
    <dict>
    <key>server_version</key>
    <string>2.0</string>
    <key>http_auth_type</key>
    <array>
    <string>basic</string>
    <string>digest</string>
    <string>kerberos</string>
    </array>
    <key>krb_service_principals</key>
    <array>
    <string>pcast/x101-186-103-dhcp.cla.umn.edu@X101-186-103-DHCP.CLA.UMN.EDU</string>
    </array>
    <key>server_uuid</key>
    <string>DB31DA49-10AE-472C-B3B9-86A8F8112399</string>
    <key>cluster_members</key>
    <dict>
    <key>F1021B98-7E7E-44FB-8EB1-E0DA1885D5BA</key>
    <dict>
    <key>date_added</key>
    <string>Tue Sep 01 10:23:49 -0500 2009</string>
    <key>last_update</key>
    <string>Tue Sep 08 10:35:17 -0500 2009</string>
    <key>server_host</key>
    <string>x101-186-103-dhcp.cla.umn.edu</string>
    <key>server_port</key>
    <string>8170</string>
    <key>tunnel_agent_host</key>
    <string>x101-186-103-dhcp.cla.umn.edu</string>
    <key>tunnel_agent_port</key>
    <string>8175</string>
    <key>network_addrs</key>
    <array>
    <string>128.101.186.103</string>
    </array>
    </dict>
    </dict>
    </dict>
    </plist>
    </podcast_producer_result>
    </pre>


    * URL : https://pcpserver:8170/podcastproducer/workflows
    * Type : GET
    * Content : version=2&language=en
    * Response :
    <pre>
    <podcast_producer_result>
    <action>index</action>
    <status>success</status>
    <results>OK</results>
    <plist version="1.0">
    <dict>
    <key>user_fullname</key>
    <string>podcast</string>
    <key>user_shortname</key>
    <string>podcast</string>
    <key>workflows</key>
    <array>
    <dict>
    <key>name</key>
    <string>Montage</string>
    <key>title</key>
    <string>Montage</string>
    <key>description</key>
    <string>Montage workflow</string>
    <key>uuid</key>
    <string>F797D54D-1539-42AA-B6AC-3CB3A4C15EF5</string>
    <key>version</key>
    <string>2.0</string>
    <key>editor</key>
    <string>Podcast Composer</string>
    <key>sources</key>
    <array>
    <dict>
    <key>contentTypes</key>
    <array>
    <string>com.apple.quicktime-movie</string>
    <string>com.adobe.pdf</string>
    <string>com.apple.iwork.keynote.key</string>
    <string>com.apple.iwork.pages.pages</string>
    <string>org.openxmlformats.wordprocessingml.document</string>
    <string>com.microsoft.word.doc</string>
    <string>org.openxmlformats.presentationml.presentation</string>
    <string>com.microsoft.powerpoint.ppt</string>
    <string>com.microsoft.bmp</string>
    <string>com.compuserve.gif</string>
    <string>public.jpeg-2000</string>
    <string>public.jpeg</string>
    <string>com.adobe.pdf</string>
    <string>com.apple.pict</string>
    <string>public.png</string>
    <string>com.adobe.photoshop-image</string>
    <string>com.sgi.sgi-image</string>
    <string>com.truevision.tga-image</string>
    <string>public.tiff</string>
    </array>
    <key>description</key>
    <string>Any Document</string>
    <key>isFolder</key>
    <true/>
    <key>isOptional</key>
    <false/>
    <key>sourceTypes</key>
    <array>
    <string>File</string>
    </array>
    </dict>
    </array>
    <key>user_requirements</key>
    <array>
    <string>Title</string>
    <string>Description</string>
    </array>
    <key>access_control_entries</key>
    <array>
    </array>
    </dict>
    <dict>
    <key>name</key>
    <string>Single Source</string>
    <key>title</key>
    <string>Single Source</string>
    <key>description</key>
    <string>Single Source workflow</string>
    <key>uuid</key>
    <string>DEFA1587-A650-426E-92DA-01C5EB811705</string>
    <key>version</key>
    <string>2.0</string>
    <key>editor</key>
    <string>Podcast Composer</string>
    <key>sources</key>
    <array>
    <dict>
    <key>contentTypes</key>
    <array>
    <string>com.apple.quicktime-movie</string>
    </array>
    <key>description</key>
    <string>Any Video</string>
    <key>isFolder</key>
    <false/>
    <key>isOptional</key>
    <false/>
    <key>sourceTypes</key>
    <array>
    <string>Video</string>
    <string>Screen</string>
    <string>Audio</string>
    <string>File</string>
    </array>
    </dict>
    </array>
    <key>user_requirements</key>
    <array>
    <string>Title</string>
    <string>Description</string>
    </array>
    <key>access_control_entries</key>
    <array>
    </array>
    </dict>
    </array>
    </dict>
    </plist>
    </podcast_producer_result>
    </pre>
    ----

    * URL : https://pcpserver:8170/podcastproducer/cameras
    * Type : GET
    * Content : version=2
    * Response :
    <pre>
    <podcast_producer_result>
    <action>index</action>
    <status>success</status>
    <plist version="1.0">
    <dict>
    <key>cameras</key>
    <array>
    <dict>
    <key>name</key>
    <string>150-A Camera</string>
    <key>uuid</key>
    <string>307682A5-B552-4AFA-B7E2-3811D772C9A1</string>
    <key>connected_to_member_uuid</key>
    <string>F1021B98-7E7E-44FB-8EB1-E0DA1885D5BA</string>
    <key>in_use</key>
    <string>false</string>
    <key>recording_status</key>
    <string>online</string>
    <key>preview_url</key>
    <string>https://x101-186-103-dhcp.cla.umn.edu:8170/podcastproducer/previews/307682A5-B552-4AFA-B7E2-3811D772C9A1.jpg</string> ;
    <key>access_control_entries</key>
    <array>
    </array>
    </dict>
    <dict>
    <key>name</key>
    <string>150-A Epiphan</string>
    <key>uuid</key>
    <string>CE610AB0-CA50-49EB-8FFE-78E57CDCA550</string>
    <key>connected_to_member_uuid</key>
    <string>F1021B98-7E7E-44FB-8EB1-E0DA1885D5BA</string>
    <key>in_use</key>
    <string>false</string>
    <key>recording_status</key>
    <string>online</string>
    <key>preview_url</key>
    <string>https://x101-186-103-dhcp.cla.umn.edu:8170/podcastproducer/previews/CE610AB0-CA50-49EB-8FFE-78E57CDCA550.jpg</string> ;
    <key>access_control_entries</key>
    <array>
    </array>
    </dict>
    </array>
    </dict>
    </plist>
    </podcast_producer_result>
    </pre>


    * URL : https://pcpserver:8170/podcastproducer/cameras/start
    * Type : POST
    * Content : action=pause&version=2&camera_name=150-A%20Camera&controller=cameras
    * Response :
    <pre>
    <podcast_producer_result>
    <action>start</action>
    <status>success</status>
    <results>OK</results>
    </podcast_producer_result>
    </pre>


    * URL : https://pcpserver:8170/podcastproducer/cameras/status
    * Type : POST
    * Content : delay=0&action=start&version=2&camera_name=150-A%20Epiphan&controller=cameras
    * Response :
    <pre><podcast_producer_result>
    <action>status</action>
    <status>success</status>
    <results>OK</results>
    <plist version="1.0">
    <dict>
    <key>preview</key>
    <string>https://x101-186-103-dhcp.cla.umn.edu:8170/podcastproducer/previews/307682A5-B552-4AFA-B7E2-3811D772C9A1.jpg</string> ;
    <key>preview_image_data</key>
    <string>RAW JPEG DATA RAW JPEG DATA RAW JPEG DATA RAW JPEG DATA RAW JPEG DATA</string>
    <key>recording_status</key>
    <string>online</string>
    <key>started_at</key>
    <string>Tue Sep 08 09:31:40 -0500 2009</string>
    <key>stopped_at</key>
    <string>Tue Sep 08 09:32:10 -0500 2009</string>
    <key>elapsed</key>
    <string>41</string>
    <key>last_error</key>
    <string>805306368</string>
    </dict>
    </plist>
    </podcast_producer_result>
    </pre>


    * URL : https://pcpserver:8170/podcastproducer/cameras/pause
    * Type : POST
    * Content : action=pause&version=2&camera_name=150-A%20Camera&controller=cameras
    * Response :
    <pre><podcast_producer_result>
    <action>status</action>
    <status>success</status>
    <results>OK</results>
    <plist version="1.0">
    <dict>
    <key>preview</key>
    <string>https://x101-186-103-dhcp.cla.umn.edu:8170/podcastproducer/previews/307682A5-B552-4AFA-B7E2-3811D772C9A1.jpg</string> ;
    <key>recording_status</key>
    <string>online</string>
    <key>started_at</key>
    <string>Tue Sep 08 09:31:40 -0500 2009</string>
    <key>stopped_at</key>
    <string>Tue Sep 08 09:32:10 -0500 2009</string>
    <key>elapsed</key>
    <string>41</string>
    <key>last_error</key>
    <string>805306368</string>
    </dict>
    </plist>
    </podcast_producer_result></pre>


    * URL : https://pcpserver:8170/podcastproducer/cameras/stop
    * Type : POST
    * Content : workflow_name=&UserMetadata_Description=&submission_uuid=7497E3AC-0A75-4C7C-8C66-26294C9274FE&action=stop&version=2&camera_name=150-A%20Epiphan&controller=cameras&UserMetadata_Title=Test123
    * Response :
    <pre><podcast_producer_result>
    <action>stop</action>
    <status>success</status>
    <results>OK</results>
    </podcast_producer_result>
    </pre>


    * URL : https://pcpserver:8170/podcastproducer/recordings/create
    * Type : POST
    * Content : version=2&workflow_uuid=C6EF52A7-04E3-477D-9F38-6B61F108D7B9
    * Response :
    <pre>
    <podcast_producer_result>
    <action>create</action>
    <status>success</status>
    <results>OK</results>
    <plist version="1.0">
    <dict>
    <key>workflow_uuid</key>
    <string>C6EF52A7-04E3-477D-9F38-6B61F108D7B9</string>
    <key>recording_uuid</key>
    <string>FD5A1459-F7CE-41FA-8155-049DF774298B</string>
    <key>submission_uuids</key>
    <array>
    <string>A626D8E4-E439-4E57-9982-DB4BD035CB41</string>
    <string>CFBCCB74-A41F-42D3-BEAA-58165B1116C6</string>
    </array>
    </dict>
    </plist>
    </podcast_producer_result>
    </pre>

  • using ffmpeg in Azure function to cut files using c#

    24 mars 2017, par abhishekmoondra1989

    I have written an Azure function in C# which will cut a big mp4 files into some small duration. I have copied everything that is required (ffmpeg executeable, video file) in home directory via KUDU console. But when I run the the function it runs for more than 5 minutes and it doesn’t give any files in the home directory.

    Function :

    using System;
    using System.Diagnostics;

    public static void Run(string input, TraceWriter log)
    {
       log.Info("Executing");
       using (var process = new Process())
       {
           process.StartInfo.FileName = @"D:\home\ffmpeg.exe";
           process.StartInfo.Arguments = @"-i D:\home\AmnestyInternational.mp4 -ss 00:00:03 -t 00:00:08 -async 1 D:\home\cut.mp4";
           process.StartInfo.UseShellExecute = false;
           process.StartInfo.RedirectStandardOutput = true;
           process.StartInfo.RedirectStandardError = true;
           log.Info(Directory.GetCurrentDirectory());
           log.Info("Cutting starts:"+DateTime.Now.ToString("h:mm:ss tt"));
           process.Start();
           string output = process.StandardOutput.ReadToEnd();
           process.WaitForExit();
           log.Info("Cutting ends :"+DateTime.Now.ToString("h:mm:ss tt"));
           log.Info(output);
       }
    }

    Output seen on Azure function Console :

    2017-03-24T11:06:00.705 Function started (Id=df082f54-719a-415f-b7f1-b10548a213be)
    2017-03-24T11:06:00.721 Executing
    2017-03-24T11:06:00.721 D:\Windows\system32
    2017-03-24T11:06:00.721 Cutting start :11:06:00 AM
    2017-03-24T11:07:14  No new trace in the past 1 min(s).
    2017-03-24T11:08:14  No new trace in the past 2 min(s).
    2017-03-24T11:09:14  No new trace in the past 3 min(s).
    2017-03-24T11:10:14  No new trace in the past 4 min(s).
    2017-03-24T11:11:00.758 Microsoft.Azure.WebJobs.Host: Timeout value of 00:05:00 was exceeded by function: Functions.ManualTriggerCSharp1.

    When I try to execute this same command on KUDU console or my own PC it only take 1.5 mins and I get a file of the desired duration

    Could anyone please help me with this ? What I might be missing ?