Recherche avancée

Médias (2)

Mot : - Tags -/doc2img

Autres articles (78)

  • Websites made ​​with MediaSPIP

    2 mai 2011, par

    This page lists some websites based on MediaSPIP.

  • Amélioration de la version de base

    13 septembre 2013

    Jolie sélection multiple
    Le plugin Chosen permet d’améliorer l’ergonomie des champs de sélection multiple. Voir les deux images suivantes pour comparer.
    Il suffit pour cela d’activer le plugin Chosen (Configuration générale du site > Gestion des plugins), puis de configurer le plugin (Les squelettes > Chosen) en activant l’utilisation de Chosen dans le site public et en spécifiant les éléments de formulaires à améliorer, par exemple select[multiple] pour les listes à sélection multiple (...)

  • Emballe médias : à quoi cela sert ?

    4 février 2011, par

    Ce plugin vise à gérer des sites de mise en ligne de documents de tous types.
    Il crée des "médias", à savoir : un "média" est un article au sens SPIP créé automatiquement lors du téléversement d’un document qu’il soit audio, vidéo, image ou textuel ; un seul document ne peut être lié à un article dit "média" ;

Sur d’autres sites (12179)

  • Xuggle - Concatenate two videos - Error - java.lang.RuntimeException : error -1094995529 decoding audio

    1er avril 2013, par user2232357

    I am using the Xuggle API to concatenate two MPEG videos (with Audio inbuilt in the MPEGs).
    I am referring to the https://code.google.com/p/xuggle/source/browse/trunk/java/xuggle-xuggler/src/com/xuggle/mediatool/demos/ConcatenateAudioAndVideo.java?r=929. (my both inputs and output are MPEGs).

    Getting the bellow error.

    14:06:50.139 [main] ERROR org.ffmpeg - [mp2 @ 0x7fd54693d000] incomplete frame
    java.lang.RuntimeException: error -1094995529 decoding audio
       at com.xuggle.mediatool.MediaReader.decodeAudio(MediaReader.java:549)
       at com.xuggle.mediatool.MediaReader.readPacket(MediaReader.java:469)
       at com.tav.factory.video.XuggleMediaCreator.concatenateAllVideos(XuggleMediaCreator.java:271)
       at com.tav.factory.video.XuggleMediaCreator.main(XuggleMediaCreator.java:446)

    Can anyone help mw with this ??? Thanks in Advance..

    Here is the complete code.

    public String concatenateAllVideos(ArrayList<tavtexttoavrequest> list){
           String finalPath="";


           String sourceUrl1 = "/Users/SSID/WS/SampleTTS/page2/AV_TAVImage2.mpeg";
           String sourceUrl2 = "/Users/SSID/WS/SampleTTS/page2/AV_TAVImage3.mpeg";
           String destinationUrl = "/Users/SSID/WS/SampleTTS/page2/z_AV_TAVImage_Final23.mpeg";

           out.printf("transcode %s + %s -> %s\n", sourceUrl1, sourceUrl2,
             destinationUrl);

           //////////////////////////////////////////////////////////////////////
           //                                                                  //
           // NOTE: be sure that the audio and video parameters match those of //
           // your input media                                                 //
           //                                                                  //
           //////////////////////////////////////////////////////////////////////

           // video parameters

           final int videoStreamIndex = 0;
           final int videoStreamId = 0;
           final int width = 400;
           final int height = 400;

           // audio parameters

           final int audioStreamIndex = 1;
           final int audioStreamId = 0;
           final int channelCount = 1;
           final int sampleRate = 16000 ; // Hz 16000 44100;

           // create the first media reader

           IMediaReader reader1 = ToolFactory.makeReader(sourceUrl1);

           // create the second media reader

           IMediaReader reader2 = ToolFactory.makeReader(sourceUrl2);

           // create the media concatenator

           MediaConcatenator concatenator = new MediaConcatenator(audioStreamIndex,
             videoStreamIndex);

           // concatenator listens to both readers

           reader1.addListener(concatenator);
           reader2.addListener(concatenator);

           // create the media writer which listens to the concatenator

           IMediaWriter writer = ToolFactory.makeWriter(destinationUrl);
           concatenator.addListener(writer);

           // add the video stream

           writer.addVideoStream(videoStreamIndex, videoStreamId, width, height);

           // add the audio stream

           writer.addAudioStream(audioStreamIndex, audioStreamId, channelCount,sampleRate);

           // read packets from the first source file until done

           try {
               while (reader1.readPacket() == null)
                 ;
           } catch (Exception e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
           }

           // read packets from the second source file until done

           try {
               while (reader2.readPacket() == null)
                 ;
           } catch (Exception e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
           }

           // close the writer

           writer.close();


           return finalPath;
       }

       static class MediaConcatenator extends MediaToolAdapter
         {
           // the current offset

           private long mOffset = 0;

           // the next video timestamp

           private long mNextVideo = 0;

           // the next audio timestamp

           private long mNextAudio = 0;

           // the index of the audio stream

           private final int mAudoStreamIndex;

           // the index of the video stream

           private final int mVideoStreamIndex;

           /**
            * Create a concatenator.
            *
            * @param audioStreamIndex index of audio stream
            * @param videoStreamIndex index of video stream
            */

           public MediaConcatenator(int audioStreamIndex, int videoStreamIndex)
           {
             mAudoStreamIndex = audioStreamIndex;
             mVideoStreamIndex = videoStreamIndex;
           }

           public void onAudioSamples(IAudioSamplesEvent event)
           {
             IAudioSamples samples = event.getAudioSamples();

             // set the new time stamp to the original plus the offset established
             // for this media file

             long newTimeStamp = samples.getTimeStamp() + mOffset;

             // keep track of predicted time of the next audio samples, if the end
             // of the media file is encountered, then the offset will be adjusted
             // to this time.

             mNextAudio = samples.getNextPts();

             // set the new timestamp on audio samples

             samples.setTimeStamp(newTimeStamp);

             // create a new audio samples event with the one true audio stream
             // index

             super.onAudioSamples(new AudioSamplesEvent(this, samples,
               mAudoStreamIndex));
           }

           public void onVideoPicture(IVideoPictureEvent event)
           {
             IVideoPicture picture = event.getMediaData();
             long originalTimeStamp = picture.getTimeStamp();

             // set the new time stamp to the original plus the offset established
             // for this media file

             long newTimeStamp = originalTimeStamp + mOffset;

             // keep track of predicted time of the next video picture, if the end
             // of the media file is encountered, then the offset will be adjusted
             // to this this time.
             //
             // You&#39;ll note in the audio samples listener above we used
             // a method called getNextPts().  Video pictures don&#39;t have
             // a similar method because frame-rates can be variable, so
             // we don&#39;t now.  The minimum thing we do know though (since
             // all media containers require media to have monotonically
             // increasing time stamps), is that the next video timestamp
             // should be at least one tick ahead.  So, we fake it.

             mNextVideo = originalTimeStamp + 1;

             // set the new timestamp on video samples

             picture.setTimeStamp(newTimeStamp);

             // create a new video picture event with the one true video stream
             // index

             super.onVideoPicture(new VideoPictureEvent(this, picture,
               mVideoStreamIndex));
           }

           public void onClose(ICloseEvent event)
           {
             // update the offset by the larger of the next expected audio or video
             // frame time

             mOffset = Math.max(mNextVideo, mNextAudio);

             if (mNextAudio &lt; mNextVideo)
             {
               // In this case we know that there is more video in the
               // last file that we read than audio. Technically you
               // should pad the audio in the output file with enough
               // samples to fill that gap, as many media players (e.g.
               // Quicktime, Microsoft Media Player, MPlayer) actually
               // ignore audio time stamps and just play audio sequentially.
               // If you don&#39;t pad, in those players it may look like
               // audio and video is getting out of sync.

               // However kiddies, this is demo code, so that code
               // is left as an exercise for the readers. As a hint,
               // see the IAudioSamples.defaultPtsToSamples(...) methods.
             }
           }

           public void onAddStream(IAddStreamEvent event)
           {
             // overridden to ensure that add stream events are not passed down
             // the tool chain to the writer, which could cause problems
           }

           public void onOpen(IOpenEvent event)
           {
             // overridden to ensure that open events are not passed down the tool
             // chain to the writer, which could cause problems
           }

           public void onOpenCoder(IOpenCoderEvent event)
           {
             // overridden to ensure that open coder events are not passed down the
             // tool chain to the writer, which could cause problems
           }

           public void onCloseCoder(ICloseCoderEvent event)
           {
             // overridden to ensure that close coder events are not passed down the
             // tool chain to the writer, which could cause problems
           }
         }
    </tavtexttoavrequest>
  • MoviePy error : failed to read the first frame of video file ****. That might mean that the file is corrupted

    14 juillet 2022, par Udit Hari Vashisht

    I am trying to reverse a video using MoviePy. My code is as under : -

    &#xA;

    from moviepy.editor import VideoFileClip&#xA;from moviepy.video.fx.all import time_mirror&#xA;&#xA;clip = VideoFileClip("udit.mp4")&#xA;&#xA;clip = clip.fx(time_mirror)&#xA;&#xA;clip.write_videofile("reversed.mp4")&#xA;

    &#xA;

    But, when I run it I get the following error :-

    &#xA;

    Traceback (most recent call last):&#xA;  File "/Users/uditvashisht/projects/experiments/script.py", line 6, in <module>&#xA;    clip = clip.fx(time_mirror)&#xA;  File "/opt/homebrew/lib/python3.9/site-packages/moviepy/Clip.py", line 212, in fx&#xA;    return func(self, *args, **kwargs)&#xA;  File "", line 2, in time_mirror&#xA;  File "/opt/homebrew/lib/python3.9/site-packages/moviepy/decorators.py", line 54, in requires_duration&#xA;    return f(clip, *a, **k)&#xA;  File "", line 2, in time_mirror&#xA;  File "/opt/homebrew/lib/python3.9/site-packages/moviepy/decorators.py", line 29, in apply_to_mask&#xA;    newclip = f(clip, *a, **k)&#xA;  File "", line 2, in time_mirror&#xA;  File "/opt/homebrew/lib/python3.9/site-packages/moviepy/decorators.py", line 41, in apply_to_audio&#xA;    newclip = f(clip, *a, **k)&#xA;  File "/opt/homebrew/lib/python3.9/site-packages/moviepy/video/fx/time_mirror.py", line 13, in time_mirror&#xA;    return self.fl_time(lambda t: self.duration - t, keep_duration=True)&#xA;  File "/opt/homebrew/lib/python3.9/site-packages/moviepy/Clip.py", line 187, in fl_time&#xA;    return self.fl(lambda gf, t: gf(t_func(t)), apply_to,&#xA;  File "/opt/homebrew/lib/python3.9/site-packages/moviepy/Clip.py", line 136, in fl&#xA;    newclip = self.set_make_frame(lambda t: fun(self.get_frame, t))&#xA;  File "", line 2, in set_make_frame&#xA;  File "/opt/homebrew/lib/python3.9/site-packages/moviepy/decorators.py", line 14, in outplace&#xA;    f(newclip, *a, **k)&#xA;  File "/opt/homebrew/lib/python3.9/site-packages/moviepy/video/VideoClip.py", line 644, in set_make_frame&#xA;    self.size = self.get_frame(0).shape[:2][::-1]&#xA;  File "", line 2, in get_frame&#xA;  File "/opt/homebrew/lib/python3.9/site-packages/moviepy/decorators.py", line 89, in wrapper&#xA;    return f(*new_a, **new_kw)&#xA;  File "/opt/homebrew/lib/python3.9/site-packages/moviepy/Clip.py", line 93, in get_frame&#xA;    return self.make_frame(t)&#xA;  File "/opt/homebrew/lib/python3.9/site-packages/moviepy/Clip.py", line 136, in <lambda>&#xA;    newclip = self.set_make_frame(lambda t: fun(self.get_frame, t))&#xA;  File "/opt/homebrew/lib/python3.9/site-packages/moviepy/Clip.py", line 187, in <lambda>&#xA;    return self.fl(lambda gf, t: gf(t_func(t)), apply_to,&#xA;  File "", line 2, in get_frame&#xA;  File "/opt/homebrew/lib/python3.9/site-packages/moviepy/decorators.py", line 89, in wrapper&#xA;    return f(*new_a, **new_kw)&#xA;  File "/opt/homebrew/lib/python3.9/site-packages/moviepy/Clip.py", line 93, in get_frame&#xA;    return self.make_frame(t)&#xA;  File "/opt/homebrew/lib/python3.9/site-packages/moviepy/video/io/VideoFileClip.py", line 113, in <lambda>&#xA;    self.make_frame = lambda t: self.reader.get_frame(t)&#xA;  File "/opt/homebrew/lib/python3.9/site-packages/moviepy/video/io/ffmpeg_reader.py", line 184, in get_frame&#xA;    result = self.read_frame()&#xA;  File "/opt/homebrew/lib/python3.9/site-packages/moviepy/video/io/ffmpeg_reader.py", line 133, in read_frame&#xA;    raise IOError(("MoviePy error: failed to read the first frame of "&#xA;OSError: MoviePy error: failed to read the first frame of video file udit.mp4. That might mean that the file is corrupted. That may also mean that you are using a deprecated version of FFMPEG. On Ubuntu/Debian for instance the version in the repos is deprecated. Please update to a recent version from the website&#xA;</lambda></lambda></lambda></module>

    &#xA;

    I have tried the code on both Mac and Windows PC. The other functionality of MoviePy works fine, but I am not able to reverse the video. Both of my systems have ImageMagick and FFMPEG installed.

    &#xA;

  • FFMPEG : Why aren't all my codecs showing up when I call av_codec_next()

    21 juin 2018, par alvion

    I’m trying to make a custom build of ffmpeg to use in my c++ application. The only codecs I need are encode/decode for h264 and aac. Because I cannot use GPL code, I’m trying to use openh264.

    I successfully built openh264.

    I am configuring my ffmpeg build thusly :

    ../../../configure\
    --toolchain=msvc\
    --arch=x86_64\
    --enable-shared\
    --prefix=../../../Build/Windows10/x64\
    --disable-programs\
    --disable-everything\
    --enable-libopenh264\
    --extra-ldflags=../../../../openh264/openh264.lib\
    --enable-hwaccel=h264_d3d11va\
    --enable-encoder=libopenh264\
    --enable-encoder=aac\
    --enable-decoder=h264\
    --enable-decoder=aac\
    --enable-muxer=mp4\
    --enable-demuxer=mov\
    --enable-parser=h264\
    --enable-parser=aac\
    --disable-dxva2\
    --enable-protocol=file

    Here is my configure output :

    install prefix            ../../../Build/Windows10/x64
    source path               /c/ffmpeg
    C compiler                cl
    C library                 msvcrt
    ARCH                      x86 (generic)
    big-endian                no
    runtime cpu detection     yes
    yasm                      yes
    MMX enabled               yes
    MMXEXT enabled            yes
    3DNow! enabled            yes
    3DNow! extended enabled   yes
    SSE enabled               yes
    SSSE3 enabled             yes
    AESNI enabled             yes
    AVX enabled               yes
    XOP enabled               yes
    FMA3 enabled              yes
    FMA4 enabled              yes
    i686 features enabled     yes
    CMOV is fast              yes
    EBX available             no
    EBP available             no
    debug symbols             yes
    strip symbols             no
    optimize for size         no
    optimizations             yes
    static                    no
    shared                    yes
    postprocessing support    no
    network support           no
    threading support         w32threads
    safe bitstream reader     yes
    texi2html enabled         no
    perl enabled              yes
    pod2man enabled           no
    makeinfo enabled          yes
    makeinfo supports HTML    no

    External libraries:
    libopenh264             schannel                xlib

    External libraries providing hardware acceleration:
    cuda                    cuvid                   d3d11va                 nvenc

    Libraries:
    avcodec                 avfilter                avformat                avutil                  swresample              swscale
    avdevice

    Programs:

    Enabled decoders:
    aac                     h264

    Enabled encoders:
    aac                     libopenh264

    Enabled hwaccels:
    h264_d3d11va

    Enabled parsers:
    aac                     h264

    Enabled demuxers:
    mov

    Enabled muxers:
    mov                     mp4

    Enabled protocols:
    file

    Enabled filters:

    Enabled bsfs:

    Enabled indevs:

    Enabled outdevs:

    License: LGPL version 2.1 or later

    As you can see, it is listing two values each for encoders and decoders. HOWEVER, when I try to list the codecs available like so :

    av_register_all();
    AVCodec* current_codec = av_codec_next(nullptr);
    while (current_codec != nullptr)
    {
       if (av_codec_is_encoder(current_codec))
       {
           cout &lt;&lt; "Found encoder " &lt;&lt; current_codec->long_name &lt;&lt; endl;
       }
       current_codec = av_codec_next(current_codec);
    }

    Only the first call to av_codec_next returns non-null, and it is the h264 decoder. I don’t see the aac decoder, and I don’t see any encoders at all.

    I’ve tried the same source code but linking to a prebuilt version of ffmpeg (from Zeroane), so I’m sure the code to iterate over the codecs is correct.

    What do I need to do to get openh264 and aac to be listed as codecs ?