Recherche avancée

Médias (1)

Mot : - Tags -/getid3

Autres articles (58)

  • MediaSPIP 0.1 Beta version

    25 avril 2011, par

    MediaSPIP 0.1 beta is the first version of MediaSPIP proclaimed as "usable".
    The zip file provided here only contains the sources of MediaSPIP in its standalone version.
    To get a working installation, you must manually install all-software dependencies on the server.
    If you want to use this archive for an installation in "farm mode", you will also need to proceed to other manual (...)

  • MediaSPIP version 0.1 Beta

    16 avril 2011, par

    MediaSPIP 0.1 beta est la première version de MediaSPIP décrétée comme "utilisable".
    Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
    Pour avoir une installation fonctionnelle, il est nécessaire d’installer manuellement l’ensemble des dépendances logicielles sur le serveur.
    Si vous souhaitez utiliser cette archive pour une installation en mode ferme, il vous faudra également procéder à d’autres modifications (...)

  • 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 (...)

Sur d’autres sites (8800)

  • 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;

  • How to extract audio from video with ffmpegKit in flutter

    8 juillet 2024, par Carlos Peñaranda

    I want to extract audio from video with this method :

    &#xA;

     Future<audio> extractAudio(Video video, String formatAudioByUser) async {&#xA;   &#xA;    final pathAudio = video.pathIn;&#xA;&#xA;    FFmpegKit.execute(&#xA;            &#x27;-i ${video.pathIn} -q:a 0 -map a audio_${video.title}.mp3&#x27;)&#xA;        .then((session) async {&#xA;      final returnCode = await session.getReturnCode();&#xA;&#xA;      if (ReturnCode.isSuccess(returnCode)) {&#xA;        Fluttertoast.showToast(msg: &#x27;Extraccion exitosa&#x27;);&#xA;      } else if (ReturnCode.isCancel(returnCode)) {&#xA;        Fluttertoast.showToast(msg: &#x27;Extraccion cancelada&#x27;);&#xA;      } else {&#xA;        final error = await session.getFailStackTrace();&#xA;        Fluttertoast.showToast(msg: &#x27;Fallo al extraer audio: $error&#x27;);&#xA;      }&#xA;    });&#xA;&#xA;//creates object&#xA;  final audio = Audio(&#xA;      id: &#x27;audio_${video.id}&#x27;,&#xA;      title: &#x27;audio_${video.title}&#x27;,&#xA;      duration: video.duration,&#xA;      pathIn: video.pathIn, &#xA;      pathOut:pathAudio,&#xA;      format: formatAudioByUser,&#xA;    );&#xA;    &#xA;    return audio;&#xA;  }&#xA;</audio>

    &#xA;

    which i use in my datasource_impl.

    &#xA;

    But when choosing the media (video) and running the method, it doesn't work from the ffmpegkit script, and it shows this error : "Fallo al extraer audio: null"

    &#xA;

    I've reviewed the debugging mode, and created brakpoints, but all the video data looks good.

    &#xA;

  • How to execute this CMD Script in a Batch File ?

    10 août 2024, par Edgar Ferreira

    &#xA;

    I am trying to make a batch file that when executes makes a list named VideosToJoin.txt of the files with the extension .mp4, .mts and .avi in the folder and the after that proceed with the concat of those same files creating a final one named FinalVideo.mp4&#xA;I need some help here, because i want to automatize a specific process...

    &#xA;

    (for %i in (*.mp4,*.mts,*.avi) do @echo file &#x27;%i&#x27;) > VideosToJoin.txt   &#xA;  &#xA;ffmpeg -f concat -i VideosToJoin.txt -c copy FinalVideo.mp4&#xA;

    &#xA;

    The expected result is to have the final video by executing just one file, that's all i want, please help.

    &#xA;