Recherche avancée

Médias (91)

Autres articles (62)

  • Gestion des droits de création et d’édition des objets

    8 février 2011, par

    Par défaut, beaucoup de fonctionnalités sont limitées aux administrateurs mais restent configurables indépendamment pour modifier leur statut minimal d’utilisation notamment : la rédaction de contenus sur le site modifiables dans la gestion des templates de formulaires ; l’ajout de notes aux articles ; l’ajout de légendes et d’annotations sur les images ;

  • Des sites réalisés avec MediaSPIP

    2 mai 2011, par

    Cette page présente quelques-uns des sites fonctionnant sous MediaSPIP.
    Vous pouvez bien entendu ajouter le votre grâce au formulaire en bas de page.

  • Dépôt de média et thèmes par FTP

    31 mai 2013, par

    L’outil MédiaSPIP traite aussi les média transférés par la voie FTP. Si vous préférez déposer par cette voie, récupérez les identifiants d’accès vers votre site MédiaSPIP et utilisez votre client FTP favori.
    Vous trouverez dès le départ les dossiers suivants dans votre espace FTP : config/ : dossier de configuration du site IMG/ : dossier des média déjà traités et en ligne sur le site local/ : répertoire cache du site web themes/ : les thèmes ou les feuilles de style personnalisées tmp/ : dossier de travail (...)

Sur d’autres sites (6205)

  • Multiple Dialogue lines of an ASS subtitle file is displayed at the same time on the video file

    14 janvier 2024, par Furkan Gözükara

    I am trying to code an ASS subtitle burner.

    


    Converting given SRT file into ASS subtitle

    


    Let me show examples

    


    Below is given SRT file - generated with Whisper

    


    1&#xA;00:00:00,000 --> 00:00:00,080&#xA;<u>American</u> XL Bully Dog&#xA;&#xA;2&#xA;00:00:00,080 --> 00:00:00,640&#xA;American <u>XL</u> Bully Dog&#xA;&#xA;3&#xA;00:00:00,640 --> 00:00:01,140&#xA;American XL <u>Bully</u> Dog&#xA;&#xA;4&#xA;00:00:01,140 --> 00:00:01,280&#xA;American XL Bully <u>Dog</u>&#xA;&#xA;5&#xA;00:00:01,280 --> 00:00:01,520&#xA;<u>is</u> a danger to&#xA;&#xA;6&#xA;00:00:01,520 --> 00:00:01,640&#xA;is <u>a</u> danger to&#xA;&#xA;7&#xA;00:00:01,640 --> 00:00:01,800&#xA;is a <u>danger</u> to&#xA;&#xA;8&#xA;00:00:01,800 --> 00:00:02,220&#xA;is a danger <u>to</u>&#xA;&#xA;9&#xA;00:00:02,220 --> 00:00:02,380&#xA;<u>our</u> communities, particularly our&#xA;&#xA;10&#xA;00:00:02,380 --> 00:00:02,680&#xA;our <u>communities,</u> particularly our&#xA;&#xA;11&#xA;00:00:02,680 --> 00:00:03,360&#xA;our communities, particularly our&#xA;&#xA;12&#xA;00:00:03,360 --> 00:00:03,580&#xA;our communities, <u>particularly</u> our&#xA;&#xA;13&#xA;00:00:03,580 --> 00:00:04,060&#xA;our communities, particularly <u>our</u>&#xA;&#xA;14&#xA;00:00:04,060 --> 00:00:04,280&#xA;<u>children.</u>&#xA;

    &#xA;

    Then this above SRT file is converted into the below ASS subtitle

    &#xA;

    [Script Info]&#xA;ScriptType: v4.00&#x2B;&#xA;PlayResX: 384&#xA;PlayResY: 288&#xA;&#xA;[V4&#x2B; Styles]&#xA;Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding&#xA;Style: Default,Arial,16,&amp;H00FFFFFF,&amp;H0000FF00,&amp;H00000000,&amp;H00000000,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1&#xA;&#xA;[Events]&#xA;Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text&#xA;Dialogue: 0,00:00:00.000,00:00:00.080,Default,,0,0,0,,{\c&amp;H00FF00&amp;}American{\c&amp;HFFFFFF&amp;} XL Bully Dog&#xA;Dialogue: 0,00:00:00.080,00:00:00.640,Default,,0,0,0,,American {\c&amp;H00FF00&amp;}XL{\c&amp;HFFFFFF&amp;} Bully Dog&#xA;Dialogue: 0,00:00:00.640,00:00:01.140,Default,,0,0,0,,American XL {\c&amp;H00FF00&amp;}Bully{\c&amp;HFFFFFF&amp;} Dog&#xA;Dialogue: 0,00:00:01.140,00:00:01.280,Default,,0,0,0,,American XL Bully {\c&amp;H00FF00&amp;}Dog{\c&amp;HFFFFFF&amp;}&#xA;Dialogue: 0,00:00:01.280,00:00:01.520,Default,,0,0,0,,{\c&amp;H00FF00&amp;}is{\c&amp;HFFFFFF&amp;} a danger to&#xA;Dialogue: 0,00:00:01.520,00:00:01.640,Default,,0,0,0,,is {\c&amp;H00FF00&amp;}a{\c&amp;HFFFFFF&amp;} danger to&#xA;Dialogue: 0,00:00:01.640,00:00:01.800,Default,,0,0,0,,is a {\c&amp;H00FF00&amp;}danger{\c&amp;HFFFFFF&amp;} to&#xA;Dialogue: 0,00:00:01.800,00:00:02.220,Default,,0,0,0,,is a danger {\c&amp;H00FF00&amp;}to{\c&amp;HFFFFFF&amp;}&#xA;Dialogue: 0,00:00:02.220,00:00:02.380,Default,,0,0,0,,{\c&amp;H00FF00&amp;}our{\c&amp;HFFFFFF&amp;} communities, particularly our&#xA;Dialogue: 0,00:00:02.380,00:00:02.680,Default,,0,0,0,,our {\c&amp;H00FF00&amp;}communities,{\c&amp;HFFFFFF&amp;} particularly our&#xA;Dialogue: 0,00:00:02.680,00:00:03.360,Default,,0,0,0,,our communities, particularly our&#xA;Dialogue: 0,00:00:03.360,00:00:03.580,Default,,0,0,0,,our communities, {\c&amp;H00FF00&amp;}particularly{\c&amp;HFFFFFF&amp;} our&#xA;Dialogue: 0,00:00:03.580,00:00:04.060,Default,,0,0,0,,our communities, particularly {\c&amp;H00FF00&amp;}our{\c&amp;HFFFFFF&amp;}&#xA;Dialogue: 0,00:00:04.060,00:00:04.280,Default,,0,0,0,,{\c&amp;H00FF00&amp;}children.{\c&amp;HFFFFFF&amp;}&#xA;

    &#xA;

    Both when playing the subtitle in any video player or burning into video via FFMPEG, what happens is, multiple Dialogue lines are being displayed at the same time on the screen.

    &#xA;

    I am doing a lot of research regarding this but still couldn't find out the issue.

    &#xA;

    Here screenshot of what I mean. So how can I fix this issue ? What is wrong with my ASS file format ?

    &#xA;

    enter image description here

    &#xA;

    Here below the functio that I am use to generate that ASS format

    &#xA;

    def convert_srt_to_ass(srt_content):&#xA;    # ASS header&#xA;    ass_header = (&#xA;        "[Script Info]\n"&#xA;        "ScriptType: v4.00&#x2B;\n"&#xA;        "PlayResX: 384\n"&#xA;        "PlayResY: 288\n\n"&#xA;        "[V4&#x2B; Styles]\n"&#xA;        "Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding\n"&#xA;        "Style: Default,Arial,16,&amp;H00FFFFFF,&amp;H0000FF00,&amp;H00000000,&amp;H00000000,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1\n\n"&#xA;        "[Events]\n"&#xA;        "Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text\n"&#xA;    )&#xA;&#xA;    ass_content = ass_header&#xA;    # Adjust regex to properly capture subtitle number, start time, end time, and text&#xA;    matches = list(re.finditer(r&#x27;(\d&#x2B;)\n(\d{2}:\d{2}:\d{2},\d{3}) --> (\d{2}:\d{2}:\d{2},\d{3})\n(.&#x2B;?)\n\n&#x27;, srt_content, re.DOTALL))&#xA;&#xA;    prev_end = None&#xA;    &#xA;    for match in matches:&#xA;        start, end, text = match.group(2), match.group(3), match.group(4)&#xA;        start = start.replace(&#x27;,&#x27;, &#x27;.&#x27;)&#xA;        end = end.replace(&#x27;,&#x27;, &#x27;.&#x27;)&#xA;&#xA;        # Calculate the correct start and end times to ensure no overlap&#xA;        if prev_end and start &lt;= prev_end:&#xA;            # Adjust the previous end time to be a bit before the current start time&#xA;            prev_end_time = datetime.strptime(prev_end, &#x27;%H:%M:%S.%f&#x27;)&#xA;            adjusted_end_time = prev_end_time - timedelta(milliseconds=100)  # Adjust by 100 milliseconds&#xA;            prev_end = adjusted_end_time.strftime(&#x27;%H:%M:%S.%f&#x27;)[:-3]  # Truncate to 3 decimal places&#xA;&#xA;            ass_content = ass_content.rstrip()&#xA;            ass_content = re.sub(r&#x27;(\d{2}:\d{2}:\d{2}\.\d{3}),Default,,$&#x27;, f&#x27;{prev_end},Default,,&#x27;, ass_content, 1)&#xA;            ass_content &#x2B;= &#x27;\n&#x27;&#xA;&#xA;        prev_end = end&#xA;&#xA;        # Formatting the text and adding it to the content&#xA;        text = text.replace(&#x27;<u>&#x27;, &#x27;{\\c&amp;H00FF00&amp;}&#x27;).replace(&#x27;</u>&#x27;, &#x27;{\\c&amp;HFFFFFF&amp;}&#x27;)&#xA;        text = text.replace(&#x27;\n&#x27;, &#x27;\\N&#x27;)  # Convert newlines within text for ASS format&#xA;        ass_content &#x2B;= f"Dialogue: 0,{start},{end},Default,,0,0,0,,{text}\n"&#xA;&#xA;        &#xA;        # Conversion of text and other formatting remains the same&#xA;&#xA;    return ass_content&#xA;

    &#xA;

  • What is the Relationship Between RMS Level and Amplitude ?

    2 juillet 2024, par Xavier Hugo

    I have an Android recorder project, and I'm trying to implement a waveform display for recording and playing audio.

    &#xA;

    During recording, I chose to use mediaRecorder.maxAmplitude to get the data I need to draw the waveform.

    &#xA;

    During audio playback (importing other audio from storage, so I can't use the above method), I used ffprobe -v error -f lavfi -i amovie=audioFile,asetnsamples=44100,astats=metadata=1:reset=1 -show_entries frame_tags=lavfi.astats.Overall.RMS_level -of csv=p=0 to get the data. However, their outputs look very different.

    &#xA;

    The amplitude data looks like this :

    &#xA;

    0&#xA;351&#xA;650&#xA;31987&#xA;402&#xA;443&#xA;674&#xA;432&#xA;774&#xA;1156&#xA;32139&#xA;565&#xA;532&#xA;511&#xA;355&#xA;366&#xA;628&#xA;25996&#xA;610&#xA;700&#xA;423&#xA;1317&#xA;1241&#xA;621&#xA;1078&#xA;1994&#xA;1068&#xA;1549&#xA;0&#xA;

    &#xA;

    The RMS level data looks like this :

    &#xA;

    -63.081060&#xA;-47.268557&#xA;-46.641208&#xA;-29.585361&#xA;-47.808792&#xA;-46.119954&#xA;-45.888205&#xA;-46.613955&#xA;-39.633273&#xA;-29.618461&#xA;-48.102711&#xA;-45.607349&#xA;-47.897675&#xA;-48.915841&#xA;-50.470556&#xA;-51.066509&#xA;-45.216680&#xA;-29.337245&#xA;-49.955258&#xA;-47.591584&#xA;-50.107631&#xA;-38.120322&#xA;-42.553827&#xA;-45.452827&#xA;-41.609616&#xA;-37.368340&#xA;-42.241799&#xA;-53.744867&#xA;

    &#xA;

    It seems there is some correlation between them (e.g., their trends are identical). I want to know how to convert RMS level to amplitude so that the waveforms of the recording and the audio playback look similar.

    &#xA;

  • How do I properly use Flutter FFmpegKit to convert video file formats to H.264 ?

    21 août 2024, par Spencer

    I've been using GPT and publications from Medium to help with my how I'm supposed to use the FFmpeg kit for Flutter but they have been no help. Perhaps I need clarification on what the tool is supposed to do because links like these below have not been of any help and are very outdated :

    &#xA;

    https://dev.to/usp/flutter-live-streaming-a-complete-guide-2634

    &#xA;

    https://medium.com/itnext/how-to-make-a-serverless-flutter-video-sharing-app-with-firebase-storage-including-hls-and-411e4fff68fa

    &#xA;

    https://github.com/arthenica/ffmpeg-kit/blob/main/flutter/flutter/README.md

    &#xA;

    This is the code i've been trying to run to convert a video file before I upload to Firestore Database.

    &#xA;

    Future convertToH264(Uint8List bytes) async {&#xA;  try {&#xA;    final filename = const Uuid().v4();&#xA;    final tempDir = await getTemporaryDirectory();&#xA;    final tempVideoFile = File(&#x27;${tempDir.path}/$filename.mp4&#x27;);&#xA;    await tempVideoFile.writeAsBytes(bytes);&#xA;    final outputPath = &#x27;${tempDir.path}/$filename-aac.mp4&#x27;;&#xA;&#xA;    await FFmpegKit.execute(&#xA;      &#x27;-i ${tempVideoFile.path} -c:v libx264 -c:a aac $outputPath&#x27;,&#xA;    );&#xA;    return await File(outputPath).readAsBytes();&#xA;  } catch (e) {&#xA;    rethrow;&#xA;  }&#xA;} &#xA;

    &#xA;