Recherche avancée

Médias (91)

Autres articles (104)

  • Personnaliser les catégories

    21 juin 2013, par

    Formulaire de création d’une catégorie
    Pour ceux qui connaissent bien SPIP, une catégorie peut être assimilée à une rubrique.
    Dans le cas d’un document de type catégorie, les champs proposés par défaut sont : Texte
    On peut modifier ce formulaire dans la partie :
    Administration > Configuration des masques de formulaire.
    Dans le cas d’un document de type média, les champs non affichés par défaut sont : Descriptif rapide
    Par ailleurs, c’est dans cette partie configuration qu’on peut indiquer le (...)

  • Librairies et binaires spécifiques au traitement vidéo et sonore

    31 janvier 2010, par

    Les logiciels et librairies suivantes sont utilisées par SPIPmotion d’une manière ou d’une autre.
    Binaires obligatoires FFMpeg : encodeur principal, permet de transcoder presque tous les types de fichiers vidéo et sonores dans les formats lisibles sur Internet. CF ce tutoriel pour son installation ; Oggz-tools : outils d’inspection de fichiers ogg ; Mediainfo : récupération d’informations depuis la plupart des formats vidéos et sonores ;
    Binaires complémentaires et facultatifs flvtool2 : (...)

  • Support audio et vidéo HTML5

    10 avril 2011

    MediaSPIP utilise les balises HTML5 video et audio pour la lecture de documents multimedia en profitant des dernières innovations du W3C supportées par les navigateurs modernes.
    Pour les navigateurs plus anciens, le lecteur flash Flowplayer est utilisé.
    Le lecteur HTML5 utilisé a été spécifiquement créé pour MediaSPIP : il est complètement modifiable graphiquement pour correspondre à un thème choisi.
    Ces technologies permettent de distribuer vidéo et son à la fois sur des ordinateurs conventionnels (...)

Sur d’autres sites (13007)

  • How to automate ffmpeg to split and merge parts of video, and keep the audio in sync ?

    9 décembre 2024, par Tree

    I have a Python script that automates trimming a large video (2 hours) into smaller segments and then concatenating them without re-encoding, to keep the process fast. The script runs these ffmpeg commands :

    


    import subprocess

# Extract chunks
segments = [(0, 300), (300, 600), (600, 900)]  # example segments in seconds
for i, (start, length) in enumerate(segments):
    subprocess.run([
        "ffmpeg", "-i", "input.mp4", "-ss", str(start), "-t", str(length),
        "-c", "copy", "-reset_timestamps", "1", "-y", f"chunk_{i}.mp4"
    ], check=True)

# Create concat list
with open("list.txt", "w") as f:
    for i in range(len(segments)):
        f.write(f"file 'chunk_{i}.mp4'\n")

# Concatenate
subprocess.run([
    "ffmpeg", "-f", "concat", "-safe", "0",
    "-i", "list.txt", "-c", "copy", "-y", "merged_output.mp4"
], check=True)


    


    All chunks come from the same source video, with identical codecs, resolution, and bitrate. Despite this, the final merged_output.mp4 sometimes has audio out of sync—especially after the first chunk.

    


    I’ve tried using -ss before -i to cut on keyframes, but the issue persists.

    


    Question : How can I ensure correct A/V sync in the final concatenated video when programmatically segmenting and merging via ffmpeg without fully re-encoding ? Is there a way to adjust the ffmpeg commands or process to avoid audio desynchronization ?

    


  • How to convert 7sec Video to Gif Android

    21 août 2014, par Donnie Ibiyemi

    Am making an app that convert shot video clips to Gif. i was wondering if there was a libary that directly converts videos to gifs on the Fly on Android.

    I’ve tried to extract all the frames of the video and encode them into a gif but am only getting the the first frame of the video. my code is below :

            public static final int GIF_DELAY_BETWEEN_FRAMES = 100;  
            public static final float SPEED_RATIO = 1.1f;

            Uri videoFileUri=Uri.parse(mOutputFile.toString());
           FFmpegMediaMetadataRetriever retriever = new FFmpegMediaMetadataRetriever();
           retriever.setDataSource(mOutputFile.getAbsolutePath());
            rev = new ArrayList<bitmap>();
           MediaPlayer mp = MediaPlayer.create(RecorderActivity.this, videoFileUri);
            int millis = mp.getDuration();
            for(int i=1000000;itest.gif");
               outStream.write(generateGIF());
               outStream.close();
            }catch(Exception e){
               e.printStackTrace();
            }


           public byte[] generateGIF() {
           ByteArrayOutputStream bos = new ByteArrayOutputStream();
           AnimatedGifEncoder encoder = new AnimatedGifEncoder();
           encoder.setDelay((int)(GIF_DELAY_BETWEEN_FRAMES * (1 / SPEED_RATIO)));
           encoder.start(bos);
           for (Bitmap bitmap : rev) {
               encoder.addFrame(bitmap);
           }
           encoder.finish();
           return bos.toByteArray();
        }
    </bitmap>

    Please help me guys...thanks

  • FFMPEG with moviepy

    5 novembre 2023, par Shenhav Mor

    I'm working on something that concatenate videos and adds some titles on through moviepy.

    &#xA;

    As I saw on the web and on my on pc moviepy works on the CPU and takes a lot of time to save(render) a movie. Is there a way to improve the speed by running the writing of moviepy on GPU ? Like using FFmpeg or something like this ?

    &#xA;

    I didn't find an answer to that on the web, so I hope that some of you can help me.&#xA;I tried using thread=4 and thread=16 but they are still very very slow and didn't change much.

    &#xA;

    My CPU is very strong (i7 10700k), but still, rendering on moviepy takes me for a compilation with a total of 8 minutes 40 seconds, which is a lot.

    &#xA;

    Any ideas ?Thanks !&#xA;the code doesnt realy matter but :

    &#xA;

    def Edit_Clips(self):&#xA;&#xA;    clips = []&#xA;&#xA;    time=0.0&#xA;    for i,filename in enumerate(os.listdir(self.path)):&#xA;        if filename.endswith(".mp4"):&#xA;            tempVideo=VideoFileClip(self.path &#x2B; "\\" &#x2B; filename)&#xA;&#xA;            txt = TextClip(txt=self.arrNames[i], font=&#x27;Amiri-regular&#x27;,&#xA;                           color=&#x27;white&#x27;, fontsize=70)&#xA;            txt_col = txt.on_color(size=(tempVideo.w &#x2B; txt.w, txt.h - 10),&#xA;                                   color=(0, 0, 0), pos=(6, &#x27;center&#x27;), col_opacity=0.6)&#xA;&#xA;            w, h = moviesize = tempVideo.size&#xA;            txt_mov = txt_col.set_pos(lambda t: (max(w / 30, int(w - 0.5 * w * t)),&#xA;                                                 max(5 * h / 6, int(100 * t))))&#xA;&#xA;            sub=txt_mov.subclip(time,time&#x2B;4)&#xA;            time = time &#x2B; tempVideo.duration&#xA;&#xA;            final=CompositeVideoClip([tempVideo,sub])&#xA;&#xA;            clips.append(final)&#xA;&#xA;    video = concatenate_videoclips(clips, method=&#x27;compose&#x27;)&#xA;    print("after")&#xA;    video.write_videofile(self.targetPath&#x2B;"\\"&#x2B;&#x27;test.mp4&#x27;,threads=16,audio_fps=44100,codec = &#x27;libx264&#x27;)&#xA;

    &#xA;