Recherche avancée

Médias (1)

Mot : - Tags -/Rennes

Autres articles (13)

  • Supporting all media types

    13 avril 2011, par

    Unlike most software and media-sharing platforms, MediaSPIP aims to manage as many different media types as possible. The following are just a few examples from an ever-expanding list of supported formats : images : png, gif, jpg, bmp and more audio : MP3, Ogg, Wav and more video : AVI, MP4, OGV, mpg, mov, wmv and more text, code and other data : OpenOffice, Microsoft Office (Word, PowerPoint, Excel), web (html, CSS), LaTeX, Google Earth and (...)

  • Automated installation script of MediaSPIP

    25 avril 2011, par

    To overcome the difficulties mainly due to the installation of server side software dependencies, an "all-in-one" installation script written in bash was created to facilitate this step on a server with a compatible Linux distribution.
    You must have access to your server via SSH and a root account to use it, which will install the dependencies. Contact your provider if you do not have that.
    The documentation of the use of this installation script is available here.
    The code of this (...)

  • Script d’installation automatique de MediaSPIP

    25 avril 2011, par

    Afin de palier aux difficultés d’installation dues principalement aux dépendances logicielles coté serveur, un script d’installation "tout en un" en bash a été créé afin de faciliter cette étape sur un serveur doté d’une distribution Linux compatible.
    Vous devez bénéficier d’un accès SSH à votre serveur et d’un compte "root" afin de l’utiliser, ce qui permettra d’installer les dépendances. Contactez votre hébergeur si vous ne disposez pas de cela.
    La documentation de l’utilisation du script d’installation (...)

Sur d’autres sites (5950)

  • How to add a subtitle to a video using ffmpeg in Flutter ?

    3 juillet 2024, par Mohammed Bekele

    I'm using flutter_ffmpeg_kit_full package to add subtitles to my video. First I loop through all words and create an srt file and stored it in temp folder :

    


     Future<string> _createSrtFile() async {&#xA;    String filePath = await getSrtOutputFilePath();&#xA;&#xA;    final file = File(filePath);&#xA;    final buffer = StringBuffer();&#xA;&#xA;    for (int i = 0; i &lt; widget.words.length; i&#x2B;&#x2B;) {&#xA;      final word = widget.words[i];&#xA;      final startTime = _formatSrtTime(word[&#x27;startTime&#x27;].toDouble());&#xA;      final endTime = _formatSrtTime(word[&#x27;endTime&#x27;].toDouble());&#xA;      final text = word[&#x27;word&#x27;];&#xA;&#xA;      buffer.writeln(&#x27;${i &#x2B; 1}&#x27;);&#xA;      buffer.writeln(&#x27;$startTime --> $endTime&#x27;);&#xA;      buffer.writeln(&#x27;$text&#x27;);&#xA;      buffer.writeln(&#x27;&#x27;);&#xA;    }&#xA;&#xA;    await file.writeAsString(buffer.toString());&#xA;    return filePath;&#xA;  }&#xA;&#xA;  String _formatSrtTime(double seconds) {&#xA;    final int hours = seconds ~/ 3600;&#xA;    final int minutes = ((seconds % 3600) ~/ 60);&#xA;    final int secs = (seconds % 60).toInt();&#xA;    final int millis = ((seconds - secs) * 1000).toInt() % 1000;&#xA;&#xA;    return &#x27;${hours.toString().padLeft(2, &#x27;0&#x27;)}:${minutes.toString().padLeft(2, &#x27;0&#x27;)}:${secs.toString().padLeft(2, &#x27;0&#x27;)},${millis.toString().padLeft(3, &#x27;0&#x27;)}&#x27;;&#xA;  }&#xA;</string>

    &#xA;

    Then I create a future function to handle the export by using ffmpeg command :

    &#xA;

    Future<void> _exportVideo() async {&#xA;    final hasPermission = await _requestStoragePermission();&#xA;    if (!hasPermission) {&#xA;      ScaffoldMessenger.of(context).showSnackBar(&#xA;          const SnackBar(content: Text(&#x27;Storage permission denied&#x27;)));&#xA;      return;&#xA;    }&#xA;&#xA;    setState(() {&#xA;      _isProcessing = true;&#xA;      _outputFilePath = "";&#xA;    });&#xA;&#xA;    try {&#xA;      final srtFilePath = await _createSrtFile();&#xA;&#xA;      String videoPath = widget.videoFile!.path;&#xA;&#xA;      String _outputPath = await getOutputFilePath();&#xA;&#xA;      final command =&#xA;          &#x27;-i $videoPath -vf "drawtext="text=\&#x27;Stack Overflow\&#x27;:fontcolor=white:fontsize=24:box=1:boxcolor=black@0.5:boxborderw=5:x=(w-text_w)/2:y=(h-text_h)/2"" -codec:a copy $_outputPath&#x27;;&#xA;&#xA;      // final cmd = [&#xA;      //   &#x27;-i&#x27;,&#xA;      //   videoPath,&#xA;      //   &#x27;-preset&#x27;,&#xA;      //   &#x27;ultrafast&#x27;,&#xA;      //   &#x27;-vf&#x27;,&#xA;      //   &#x27;subtitles=$srtFilePath:force_style=\&#x27;Fontname=Roboto Bold,FontSize=30,MarginV=70,PrimaryColour=ffffff,OutlineColour=000000\&#x27;&#x27;,&#xA;      //   _outputPath&#xA;      // ];&#xA;      // FFmpegKit.executeWithArguments(cmd)&#xA;&#xA;      print(&#x27;Executing FFmpeg command: $command&#x27;);&#xA;&#xA;      await FFmpegKit.execute(command).then((session) async {&#xA;        final returnCode = await session.getReturnCode();&#xA;        final output = await session.getOutput();&#xA;        final failStackTrace = await session.getFailStackTrace();&#xA;&#xA;        print(&#x27;FFmpeg Output: $output&#x27;);&#xA;        if (failStackTrace != null) {&#xA;          print(&#x27;FFmpeg Fail StackTrace: $failStackTrace&#x27;);&#xA;        }&#xA;&#xA;        if (ReturnCode.isSuccess(returnCode)) {&#xA;          setState(() {&#xA;            _outputFilePath = _outputPath;&#xA;          });&#xA;          ScaffoldMessenger.of(context).showSnackBar(&#xA;              const SnackBar(content: Text(&#x27;Export successful!&#x27;)));&#xA;        } else {&#xA;          final logs = await session.getLogsAsString();&#xA;          print(&#x27;FFmpeg Logs: $logs&#x27;);&#xA;          ScaffoldMessenger.of(context)&#xA;              .showSnackBar(const SnackBar(content: Text(&#x27;Export failed!&#x27;)));&#xA;        }&#xA;      });&#xA;    } catch (e) {&#xA;      print(&#x27;Error: $e&#x27;);&#xA;      ScaffoldMessenger.of(context).showSnackBar(&#xA;          SnackBar(content: Text(&#x27;Export failed with error: $e&#x27;)));&#xA;    } finally {&#xA;      setState(() {&#xA;        _isProcessing = false;&#xA;      });&#xA;    }&#xA;  }&#xA;</void>

    &#xA;

    I did the export without the subtitles and it works. but the issue is when I try to do it with subtitles. I don't know what fault I'm making but this code is failing to export. Here is the path for the srt and video itself :

    &#xA;

      Future<string> getOutputFilePath() async {&#xA;    final Directory? downloadsDir = await getDownloadsDirectory();&#xA;    final timestamp = DateTime.now().millisecondsSinceEpoch;&#xA;    final name = "output-$timestamp.avi";&#xA;    return &#x27;${downloadsDir!.path}/$name&#x27;; // Save in downloads folder&#xA;  }&#xA;&#xA;  Future<string> getSrtOutputFilePath() async {&#xA;    final Directory? downloadsDir = await getDownloadsDirectory();&#xA;    final timestamp = DateTime.now().millisecondsSinceEpoch;&#xA;    final name = "caption-$timestamp.srt";&#xA;    return &#x27;${downloadsDir!.path}/$name&#x27;; // Save in downloads folder&#xA;  }&#xA;</string></string>

    &#xA;

  • ffmpeg-How to burn subtitles into the video

    28 décembre 2013, par user3141070

    Sir i want to burn subtitles into video.
    i use this command

    ffmpeg -i video.avi -vf subtitles=subtitle.srt out.avi

    but nothing is burn on video.
    My video is 30 sec.
    and my srt file is like this

    1
    00:00:04,700 --> 00:00:06,736
    where are you going so early?

    2
    00:00:06,900 --> 00:00:09,494
    Don&#39;t record any more messages
    on my alarm clock.

    3
    00:00:09 --> 00:00:11
    why not?

    4
    00:00:11 --> 00:00:13
    I&#39;ll start to think we&#39;re married
    or something.

    5
    00:00:14 --> 00:00:15
    Don&#39;t ever say that word.

    6
    00:00:15 --> 00:00:20
    I&#39;ll never bring you chicken soup
    and fuck your brains out again.

    7
    00:00:20--> 00:00:25
    - How&#39;s your cold?
    - Still there. How about yours?

    8
    00:00:25 --> 00:00:29
    - You definitely took my mind off it.
    - Really?

    so what's the problem ?

  • What does "copy" do in a ffmpeg command line ?

    14 juillet 2016, par PsyberAlyen

    I know that it copies something but other than that what does it do (to what extend it affects the output file) ? Is it a switch or option ? Why does it not have a hyphen before the word itself ?

    I see from other questions that it can copy streams without transcode but what are other possibility that I can manipulate it ?

    I have done ffmpeg --help but I don’t see any documentation about it. Is there a website I can read more about it ?