Recherche avancée

Médias (9)

Mot : - Tags -/soundtrack

Autres articles (39)

  • Mise à jour de la version 0.1 vers 0.2

    24 juin 2013, par

    Explications des différents changements notables lors du passage de la version 0.1 de MediaSPIP à la version 0.3. Quelles sont les nouveautés
    Au niveau des dépendances logicielles Utilisation des dernières versions de FFMpeg (>= v1.2.1) ; Installation des dépendances pour Smush ; Installation de MediaInfo et FFprobe pour la récupération des métadonnées ; On n’utilise plus ffmpeg2theora ; On n’installe plus flvtool2 au profit de flvtool++ ; On n’installe plus ffmpeg-php qui n’est plus maintenu au (...)

  • Les autorisations surchargées par les plugins

    27 avril 2010, par

    Mediaspip core
    autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs

  • HTML5 audio and video support

    13 avril 2011, par

    MediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
    The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
    For older browsers the Flowplayer flash fallback is used.
    MediaSPIP allows for media playback on major mobile platforms with the above (...)

Sur d’autres sites (7369)

  • gstreamer : Internal data error, in appsink "pull-sample" mode

    9 mai 2018, par Amir Raza

    I am getting Internal data error, in appsink .
    My application is to read .yuv data , encode and write to a buffer.

    I have accomplished the writing it file but when i changed the code to write it buffer it giving error.
    Its only able to write only single packet (188bytes).

    Output of program :

    (ConsoleApplication6.exe:14432): GStreamer-WARNING **: Failed to load plugin 'C:\gstreamer\1.0\x86_64\lib\gstreamer-1.0\libgstopenh264.dll': 'C:\gstreamer\1.0\x86_64\lib\gstreamer-1.0\libgstopenh264.dll': The specified procedure could not be found.
       pipeline:  filesrc location=Transformers1080p.yuv blocksize=4147200 ! videoparse  width=1920 height=1080 framerate=60/1 ! videoconvert ! video/x-raw,format=I420,width=1920,height=1080,framerate=60/1 !  x264enc ! mpegtsmux ! queue !  appsink name = sink
       Now playing: Transformers1080p.yuv
       Running...

        on_new_sample_from_sink

        sample got of size = 188
       Error: Internal data stream error.
       Returned, stopping playback
       Deleting pipeline

    my code :

    #define _CRT_SECURE_NO_WARNINGS 1
    //#pragma warning(disable:4996)
    #include <gst></gst>gst.h>
    #include <gst></gst>audio/audio.h>
    #include <gst></gst>app/gstappsrc.h>
    #include <gst></gst>base/gstpushsrc.h>
    #include <gst></gst>app/gstappsink.h>
    #include <gst></gst>video/video.h>
    #include <gst></gst>video/gstvideometa.h>
    #include <gst></gst>video/video-overlay-composition.h>

    #include
    #include

    #include
    #include

    using namespace std;

    GstElement *SinkBuff;
    char *out_file_path;
    FILE *out_file;

    //gst-launch-1.0.exe -v filesrc location=Transformers1080p.yuv blocksize=4147200 !  
    //videoconvert ! video/x-raw,format=I420,width=1920,height=1080,framerate=60/1 !  
    //openh264enc ! mpegtsmux ! filesink location=final.ts


    static gboolean bus_call(GstBus     *bus, GstMessage *msg, gpointer    data)
    {
           GMainLoop *loop = (GMainLoop *)data;

           switch (GST_MESSAGE_TYPE(msg))
           {
           case GST_MESSAGE_EOS:
                   g_print("End of stream\n");
                   g_main_loop_quit(loop);
                   break;

           case GST_MESSAGE_ERROR:
             {
                   gchar  *debug;
                   GError *error;

                   gst_message_parse_error(msg, &amp;error, &amp;debug);
                   g_free(debug);

                   g_printerr("Error: %s\n", error->message);
                   g_error_free(error);

                   g_main_loop_quit(loop);
                   break;
             }
           default:
                   break;
       }
           return TRUE;
    }

    /* called when the appsink notifies us that there is a new buffer ready for
    * processing */
    static void  on_new_sample_from_sink(GstElement * elt, void *ptr)
    {
           guint size;
           GstBuffer *app_buffer, *buffer;
           GstElement *source;
           GstMapInfo map = { 0 };
           GstSample *sample;
           static GstClockTime timestamp = 0;
           printf("\n on_new_sample_from_sink \n ");
           /* get the buffer from appsink */
           g_signal_emit_by_name(SinkBuff, "pull-sample", &amp;sample, NULL);
           if (sample)
           {
                   buffer = gst_sample_get_buffer(sample);
                   gst_buffer_map(buffer, &amp;map, GST_MAP_READ);

                   printf("\n sample got of size = %d \n", map.size);
                   //Buffer
                   fwrite((char *)map.data, 1, sizeof(map.size), out_file);

                   gst_buffer_unmap(buffer, &amp;map);
                   gst_sample_unref(sample);
           }
    }


    int main(int   argc, char *argv[])
    {
           GMainLoop *loop;
           int width, height;

           GstElement *pipeline;
           GError *error = NULL;
           GstBus *bus;
           char pipeline_desc[1024];
           out_file = fopen("output.ts", "wb");


           /* Initialisation */
           gst_init(&amp;argc, &amp;argv);

           // Create gstreamer loop
           loop = g_main_loop_new(NULL, FALSE);

           sprintf(
                   pipeline_desc,
                   " filesrc location=Transformers1080p.yuv blocksize=4147200 !"
                   " videoparse  width=1920 height=1080 framerate=60/1 !"
                   " videoconvert ! video/x-raw,format=I420,width=1920,height=1080,framerate=60/1 ! "
                   //" x264enc ! mpegtsmux ! filesink location=final.ts");
                   " x264enc ! mpegtsmux ! queue !  appsink name = sink");


           printf("pipeline: %s\n", pipeline_desc);

           /* Create gstreamer elements */
           pipeline = gst_parse_launch(pipeline_desc, &amp;error);

           /* TODO: Handle recoverable errors. */

           if (!pipeline) {
                   g_printerr("Pipeline could not be created. Exiting.\n");
                   return -1;
           }

           /* get sink */
           SinkBuff = gst_bin_get_by_name(GST_BIN(pipeline), "sink");
           g_object_set(G_OBJECT(SinkBuff), "emit-signals", TRUE, "sync", FALSE, NULL);
           g_signal_connect(SinkBuff, "new-sample", G_CALLBACK(on_new_sample_from_sink), NULL);


           /* Set up the pipeline */
           /* we add a message handler */
           bus = gst_pipeline_get_bus(GST_PIPELINE(pipeline));
           gst_bus_add_watch(bus, bus_call, loop);
           gst_object_unref(bus);

           /* Set the pipeline to "playing" state*/
           g_print("Now playing: Transformers1080p.yuv \n");
           gst_element_set_state(pipeline, GST_STATE_PLAYING);

           /* Iterate */
           g_print("Running...\n");
           g_main_loop_run(loop);

           /* Out of the main loop, clean up nicely */
           g_print("Returned, stopping playback\n");
           gst_element_set_state(pipeline, GST_STATE_NULL);

           g_print("Deleting pipeline\n");
           gst_object_unref(GST_OBJECT(pipeline));
           fclose(out_file);
           g_main_loop_unref(loop);


           return 0;
    }
  • youtube-dl - How do I ensure that the "original" video formats are downloaded ?

    25 juin 2018, par Schytheron

    I am building a C# GUI (Windows only) for youtube-dl where I allow the user to pick the desired video quality and framerate but I am having problems with format selection. youtube-dl sometimes downloads either the wrong video file or the wrong audio file (often it is audio) and after merging them I end up with a .mkv file because according to FFmpeg the files I am trying to merge are incompatible.

    These are the format selection queries I have tried to far :

    bestvideo[height&lt;=?%height%][fps&lt;=?%fps%]+bestaudio/best

    and

    public string[] qualities = { "4320", "2160", "1440", "1080", "720", "480", "360", "240", "144" };
    public string[] framerates = { "60", "50", "48", "30", "24" };
    private void buildFormat(int qualSkip,int fpsSkip)
           {
               string[] qualitiesMin = qualities.Skip(qualSkip).ToArray();
               string[] frameratesMin = framerates.Skip(fpsSkip).ToArray();
               format = "-f ";
               foreach (string quality in qualitiesMin)
               {
                   foreach (string framerate in frameratesMin)
                   {
                       format += "bestvideo[height=?" + quality + "][fps=?" + framerate + "]+bestaudio/";
                   }
               }
               format += "best";
           }

    In the first one I had a problem where on some videos youtube-dl downloaded a video in a lower framerate than what I requested (for example, if I request 1080p60FPS I get 1080p30FPS). I tried to fix this in the second method by searching for the best video for all qualities and framerates that are equal to or lower than the one I picked (for example, if I pick 1080p60FPS it would look for videos from 1080p60->1080p30->720p60->720p30->...->144p30).

    The second method however looks overly convoluted and stupid and another problem still remains. youtube-dl always picks the best audio quality no matter what video quality I choose. I want the audio quality to scale with the video quality (for example, if I pick 144p I want poor audio quality). There has got to be a better way.

    Maybe I am explaining this poorly but I basically want youtube-dl to ALWAYS (consistently) download the exact same video and audio format as the one that is displayed in the youtube video player itself for each picked video quality (see image below). How do I do that ?

    Example 1, Video and audio format codes of video in 4K (the numbers in the red circles are the format codes) :
    enter image description here

    Example 2, Video and audio format of same video but this time in 720p :
    enter image description here

    (should also pick a lower framerate video of same quality if that framerate is not available in the YouTube quality selector, for example 1080p30FPS in a 1080p60FPS video)

    Thanks !

  • FFmpeg producing a flickering video from images

    21 juin 2018, par jjohnn91

    So I’m trying to make a video of a fractal rotating through some values, much like seen here.

    I generate the frames (1000 of them) using a different program written in Java that works just fine, so for the purposes of this scenario assume that all the images are in the target folder and also in numerical order as they need to appear in the video.

    I found the following code on the web to stitch images into a video, and I haven’t the faintest idea how it works, and when I run it, all of the images are indeed stitched into a video and placed on the desktop, but the video appears to have one specific frame just jump in at random positions. I’m not totally sure which one, but its one of the earlier frames, somewhere between 1 and 200 of the 1000.

    I’ve also tested making two half videos, one using the first 500 frames, and the other using the second 500 frames. The first video (1 -> 500) has flickering, and the second video (501 -> 1000) appears not to have flickering to my observations.

    I am seeking help in fixing the flickering behavior, and I will upload the video file to google drive later if asked. The Images are all 1920x1080, and in proper numerical order.

    Thanks in advance !

    import static org.bytedeco.javacpp.opencv_imgcodecs.*;
    import java.io.File;
    import org.bytedeco.javacpp.avcodec;
    import org.bytedeco.javacv.FFmpegFrameRecorder;
    import org.bytedeco.javacv.OpenCVFrameConverter;
    public class ImageToMovie{
       public static void main(String []args){
           String imgPath="C:\\Users\\John\\Images";
           String vidPath="C:\\Users\\John\\Desktop\\video.mp4";
           String[] links=new String[new File(imgPath).listFiles().length];
           File f=new File(imgPath);
           File[] f2=f.listFiles();
           for(int i=0;icode>