Recherche avancée

Médias (1)

Mot : - Tags -/illustrator

Autres articles (40)

  • Other interesting software

    13 avril 2011, par

    We don’t claim to be the only ones doing what we do ... and especially not to assert claims to be the best either ... What we do, we just try to do it well and getting better ...
    The following list represents softwares that tend to be more or less as MediaSPIP or that MediaSPIP tries more or less to do the same, whatever ...
    We don’t know them, we didn’t try them, but you can take a peek.
    Videopress
    Website : http://videopress.com/
    License : GNU/GPL v2
    Source code : (...)

  • Personnaliser en ajoutant son logo, sa bannière ou son image de fond

    5 septembre 2013, par

    Certains thèmes prennent en compte trois éléments de personnalisation : l’ajout d’un logo ; l’ajout d’une bannière l’ajout d’une image de fond ;

  • Les autorisations surchargées par les plugins

    27 avril 2010, par

    Mediaspip core
    autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs

Sur d’autres sites (5641)

  • flutter integration with ffmpeg package for video stream recording using rtsp url

    16 avril, par Brijesh Gangwar
    Launching lib\main.dart on SM X115 in debug mode...
C:\Users\hp\AppData\Local\Pub\Cache\hosted\pub.dev\ffmpeg_kit_flutter_full_gpl-6.0.3\android\src\main\java\com\arthenica\ffmpegkit\flutter\FFmpegKitFlutterPlugin.java:157: error: cannot find symbol
    public static void registerWith(final io.flutter.plugin.common.PluginRegistry.Registrar registrar) {
                                                                                 ^
  symbol:   class Registrar
  location: interface PluginRegistry
C:\Users\hp\AppData\Local\Pub\Cache\hosted\pub.dev\ffmpeg_kit_flutter_full_gpl-6.0.3\android\src\main\java\com\arthenica\ffmpegkit\flutter\FFmpegKitFlutterPlugin.java:651: error: cannot find symbol
    protected void init(final BinaryMessenger messenger, final Context context, final Activity activity, final io.flutter.plugin.common.PluginRegistry.Registrar registrar, final ActivityPluginBinding activityBinding) {
                                                                                          ^
  symbol:   class Registrar
  location: interface PluginRegistry
2 errors

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':ffmpeg_kit_flutter_full_gpl:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.

* Try:
> Run with --info option to get more log output.
> Run with --scan to get full insights.

BUILD FAILED in 15s

┌─ Flutter Fix ───────────────────────────────────────────────────────────────────────────────────┐
│ [!] Consult the error logs above to identify any broken plugins, specifically those containing  │
│ "error: cannot find symbol..."                                                                  │
│ This issue is likely caused by v1 embedding removal and the plugin's continued usage of removed │
│ references to the v1 embedding.                                                                 │
│ To fix this error, please upgrade your current package's dependencies to latest versions by     │
│ running `flutter pub upgrade`.                                                                  │
│ If that does not work, please file an issue for the problematic plugin(s) here:                 │
│ https://github.com/flutter/flutter/issues                                                       │
└─────────────────────────────────────────────────────────────────────────────────────────────────┘
Error: Gradle task assembleDebug failed with exit code 1

Exited (1). 


    


    how to solve this

    


    I tried to use widget_record_video package instead but it is still depended on flutter ffmpeg package.
I have already tried to install app on real device.
Help me out to solve this error

    


  • How to replace the video track in a video file with a still image ?

    22 février 2021, par cornerstore

    I am trying to use ffmpeg to replace the video track in a video file with a still image. I tried some commands I got from other questions such as the one here

    


    ffmpeg -i x.png -i orig.mp4 final.mp4

    


    ffmpeg -r 1/5 -i x.png -r 30 -i orig.mp4 final.mp4

    


    But these didn't work. I'm not sure which of these arguments are required or not. The output should be accepted by YouTube as a valid video - I was able to simply remove the video track, but apparently they don't let you upload a video without a video track.

    


  • Write EPIPE after upgrade NodeJS

    28 juillet, par Rougher

    I am using this code for detecting audio replay gain. It was working well with NodeJs 16, but after upgrading to NodeJs 22, it started crashing a few times in an hour with this error :

    


    write EPIPE
    at WriteWrap.onWriteComplete [as oncomplete] (node:internal/stream_base_commons:87:19) {
  errno: -32,
  code: 'EPIPE',
  syscall: 'write'
}


    


    My original code was

    


    static getReplayGainVolume(audioData: Buffer) {
        // Calculate the mean volume of the audio file at the given filePath
        var ffmpeg = spawn('ffmpeg', [
            '-i', '-',
            '-af', 'replaygain',
            '-f', 'null', '/dev/null',
            '-hide_banner', '-nostats'
        ]);

        var output = '';

        ffmpeg.stdin.write(audioData);
        ffmpeg.stdin.end();

        return new Promise((resolve,reject)=>{
            ffmpeg.on('error', function (err: any) {
                reject(err);
            });
            
            ffmpeg.on('close', function (_code: any) {
                // [Parsed_replaygain_0 @ 0000000002a2b5c0] track_gain = +6.53 dB
                if (!output.includes("track_gain")) {
                    reject(output);

                    return;
                }

                const gainWithDb = output.split("track_gain = ")[1];
                if (!gainWithDb) {
                    reject(output);

                    return;
                }

                const gain = gainWithDb.split(" dB")[0];
                if (!gain) {
                    reject(output);

                    return;
                }

                resolve(parseFloat(gain));
            });
            
            ffmpeg.stderr.on('data', function (data: any) {
                // ffmpeg sends all output to stderr. It is not a bug, it is a feature :)
                var tData = data.toString('utf8');
                output += tData;
            });
        });
    }


    


    Then after search in forums and Google, I improved (I hope I improved it with cleanups)

    


    static getReplayGainVolume(audioData: Buffer): Promise<number> {&#xA;        return new Promise((resolve, reject) => {&#xA;            const FFMPEG_PATH = &#x27;ffmpeg&#x27;; // Adjust this if ffmpeg is not in system PATH&#xA;            const FFMPEG_TIMEOUT_MS = 30 * 1000; // 30 seconds timeout for FFmpeg execution&#xA;&#xA;            let ffmpeg: ChildProcessWithoutNullStreams;&#xA;            let output = &#x27;&#x27;; // Accumulate all stderr output&#xA;&#xA;            // Timeout for the FFmpeg process itself&#xA;            const ffmpegTimeout = setTimeout(() => {&#xA;                log.error(`[FFmpeg] FFmpeg process timed out after ${FFMPEG_TIMEOUT_MS / 1000} seconds. Killing process.`);&#xA;                if (ffmpeg &amp;&amp; !ffmpeg.killed) {&#xA;                    ffmpeg.kill(&#x27;SIGKILL&#x27;); // Force kill&#xA;                    reject(new Error(`FFmpeg process timed out and was killed.`));&#xA;                }&#xA;            }, FFMPEG_TIMEOUT_MS);&#xA;&#xA;            // --- Define cleanup function to be called on process exit/error ---&#xA;            const cleanup = (shouldReject = false, error?: Error | string) => {&#xA;                clearTimeout(ffmpegTimeout); // Ensure timeout is cleared&#xA;&#xA;                // Remove all listeners to prevent leaks&#xA;                // This is CRITICAL for long-running bots that spawn many child processes&#xA;                ffmpeg.stdin.removeAllListeners();&#xA;                ffmpeg.stdout.removeAllListeners();&#xA;                ffmpeg.stderr.removeAllListeners();&#xA;                ffmpeg.removeAllListeners(); // Remove process listeners&#xA;&#xA;                if (ffmpeg &amp;&amp; !ffmpeg.killed) { // Ensure ffmpeg process is killed if still alive&#xA;                    ffmpeg.kill(); // Graceful kill (SIGTERM), then wait for exit. If not, then SIGKILL.&#xA;                }&#xA;&#xA;                if (shouldReject) {&#xA;                    reject(error instanceof Error ? error : new Error(String(error)));&#xA;                }&#xA;            };&#xA;&#xA;            try {&#xA;                ffmpeg = spawn(FFMPEG_PATH, [&#xA;                    &#x27;-i&#x27;, &#x27;pipe:0&#x27;, // Read input from stdin (pipe:0)&#xA;                    &#x27;-af&#x27;, &#x27;replaygain&#x27;,&#xA;                    &#x27;-f&#x27;, &#x27;null&#x27;, &#x27;/dev/null&#x27;, // Write output to null device (discard audio output)&#xA;                    &#x27;-hide_banner&#x27;, &#x27;-nostats&#x27; // Suppress ffmpeg&#x27;s initial info and progress stats&#xA;                ], { stdio: [&#x27;pipe&#x27;, &#x27;pipe&#x27;, &#x27;pipe&#x27;] }); // Explicitly pipe stdin, stdout, stderr&#xA;&#xA;                // --- CRITICAL: Event Handlers for ffmpeg process ---&#xA;&#xA;                // 1. Handle errors during spawning or execution (e.g., ffmpeg not found)&#xA;                ffmpeg.on(&#x27;error&#x27;, (err: any) => {&#xA;                    log.error(`[FFmpeg] Failed to spawn or execute FFmpeg process:`, err);&#xA;                    cleanup(true, new Error(`FFmpeg process error: ${err.message}`));&#xA;                });&#xA;&#xA;                // 2. Accumulate stderr output (where replaygain results and ffmpeg errors are printed)&#xA;                ffmpeg.stderr.on(&#x27;data&#x27;, (data: Buffer) => {&#xA;                    output &#x2B;= data.toString(&#x27;utf8&#x27;);&#xA;                });&#xA;&#xA;                // 3. Handle process exit (success or failure)&#xA;                ffmpeg.on(&#x27;close&#x27;, (code: number) => { // &#x27;close&#x27; indicates process has exited&#xA;                    log.debug(`[FFmpeg] FFmpeg process exited with code: ${code}.`);&#xA;                    if (code !== 0) { // Non-zero exit code means failure&#xA;                        log.error(`[FFmpeg] FFmpeg process exited with non-zero code ${code}. Output:\n${output}`);&#xA;                        cleanup(true, new Error(`FFmpeg process failed with exit code ${code}. Output: ${output}`));&#xA;                        return;&#xA;                    }&#xA;&#xA;                    // If successful exit (code 0), parse the output&#xA;                    if (!output.includes("track_gain")) {&#xA;                        log.error(`[FFmpeg] &#x27;track_gain&#x27; not found in FFmpeg output (exit code 0). Output:\n${output}`);&#xA;                        cleanup(true, new Error(`&#x27;track_gain&#x27; not found in FFmpeg output. Output: ${output}`));&#xA;                        return;&#xA;                    }&#xA;&#xA;                    try {&#xA;                        // Regex to parse track_gain (e.g., "&#x2B;6.53 dB" or "-12.00 dB")&#xA;                        const gainMatch = output.match(/track_gain\s*=\s*([&#x2B;-]?\d&#x2B;\.?\d*)\s*dB/);&#xA;                        if (gainMatch &amp;&amp; gainMatch[1]) {&#xA;                            const gain = parseFloat(gainMatch[1]);&#xA;                            log.debug(`[FFmpeg] Replay gain volume: ${gain} dB.`);&#xA;                            cleanup(); // Clean up on success&#xA;                            resolve(gain);&#xA;                        } else {&#xA;                            log.error(`[FFmpeg] Failed to parse gain from FFmpeg output. Output:\n${output}`);&#xA;                            cleanup(true, new Error(`Failed to parse gain from FFmpeg output. Output: ${output}`));&#xA;                        }&#xA;                    } catch (parseError: any) {&#xA;                        log.error(`[FFmpeg] Error parsing FFmpeg replay gain output:`, parseError);&#xA;                        cleanup(true, new Error(`Error parsing FFmpeg output: ${parseError.message}. Output: ${output}`));&#xA;                    }&#xA;                });&#xA;&#xA;                // 4. Write audio data to ffmpeg&#x27;s stdin&#xA;                // This is the only write operation that could throw EPIPE in this function.&#xA;                try {&#xA;                    ffmpeg.stdin.write(audioData);&#xA;                    ffmpeg.stdin.end(); // Close stdin to signal end of input&#xA;                } catch (stdinError: any) {&#xA;                    log.error(`[FFmpeg] Error writing audioData to FFmpeg stdin:`, stdinError);&#xA;                    // This error means ffmpeg&#x27;s stdin pipe closed unexpectedly.&#xA;                    // This is the direct equivalent of an EPIPE (Broken Pipe) at the child process level.&#xA;                    cleanup(true, new Error(`Failed to pipe audio data to FFmpeg stdin: ${stdinError.message}`));&#xA;                }&#xA;&#xA;            } catch (spawnError: any) { // Catch errors from the spawn call itself (e.g., FFMPEG_PATH is invalid)&#xA;                log.error(`[FFmpeg] Error spawning FFmpeg:`, spawnError);&#xA;                cleanup(true, new Error(`Failed to spawn FFmpeg process: ${spawnError.message}`));&#xA;            }&#xA;        });&#xA;    }&#xA;</number>

    &#xA;

    But unfortunately I still get the same error. Has anyone encountered this problem ? How can I solve it ?

    &#xA;

    I use ffmpeg version 4.2.7-0ubuntu0.1

    &#xA;

    Thanks.

    &#xA;