Recherche avancée

Médias (1)

Mot : - Tags -/censure

Autres articles (44)

  • List of compatible distributions

    26 avril 2011, par

    The table below is the list of Linux distributions compatible with the automated installation script of MediaSPIP. Distribution nameVersion nameVersion number Debian Squeeze 6.x.x Debian Weezy 7.x.x Debian Jessie 8.x.x Ubuntu The Precise Pangolin 12.04 LTS Ubuntu The Trusty Tahr 14.04
    If you want to help us improve this list, you can provide us access to a machine whose distribution is not mentioned above or send the necessary fixes to add (...)

  • Demande de création d’un canal

    12 mars 2010, par

    En fonction de la configuration de la plateforme, l’utilisateur peu avoir à sa disposition deux méthodes différentes de demande de création de canal. La première est au moment de son inscription, la seconde, après son inscription en remplissant un formulaire de demande.
    Les deux manières demandent les mêmes choses fonctionnent à peu près de la même manière, le futur utilisateur doit remplir une série de champ de formulaire permettant tout d’abord aux administrateurs d’avoir des informations quant à (...)

  • Changer son thème graphique

    22 février 2011, par

    Le thème graphique ne touche pas à la disposition à proprement dite des éléments dans la page. Il ne fait que modifier l’apparence des éléments.
    Le placement peut être modifié effectivement, mais cette modification n’est que visuelle et non pas au niveau de la représentation sémantique de la page.
    Modifier le thème graphique utilisé
    Pour modifier le thème graphique utilisé, il est nécessaire que le plugin zen-garden soit activé sur le site.
    Il suffit ensuite de se rendre dans l’espace de configuration du (...)

Sur d’autres sites (6726)

  • Is there a way to horizontal flip video captured from flutter front camera

    5 mai 2024, par JoyJoy

    Basically, I'm trying to flip video horizontally after capturing it from flutter front camera. So I start recording, stop recording, flip the video and pass it to another page. I'm fairly new and would appreciate any assistance as my code isn't working

    


    I've tried doing so using the new ffmpeg_kit flutter

    


    Future<void> flipVideo(String inputPath, String outputPath) async{&#xA;final ffmpegCommand = "-i $inputPath -vf hflip $outputPath";&#xA;final session = FFmpegKit.executeAsync(ffmpegCommand);&#xA;await session.then((session) async {&#xA;  final returnCode = await session.getReturnCode();&#xA;  if (ReturnCode.isSuccess(returnCode)) {&#xA;    print(&#x27;Video flipping successful&#x27;);&#xA;  } else {&#xA;    print(&#x27;Video flipping failed: ${session.getAllLogs()}&#x27;);&#xA;  }&#xA;});}&#xA;&#xA;void stopVideoRecording() async {&#xA;XFile videopath = await cameraController.stopVideoRecording();&#xA;&#xA;try {&#xA;  final Directory appDocDir = await &#xA;  getApplicationDocumentsDirectory();&#xA;  final String outputDirectory = appDocDir.path;&#xA;  final String timeStamp = DateTime.now().millisecondsSinceEpoch.toString();&#xA;  final String outputPath = &#x27;$outputDirectory/flipped_video_$timeStamp.mp4&#x27;;&#xA;&#xA;  await flipVideo(videopath.path, outputPath);&#xA;&#xA;  // Once completed,&#xA;   Navigator.push(&#xA;    context,&#xA;    MaterialPageRoute(&#xA;      builder: (builder) => VideoViewPage(&#xA;        path: File(outputPath),&#xA;        fromFrontCamera: iscamerafront,&#xA;        flash: flash,&#xA;      )));&#xA;  print(&#x27;Video flipping completed&#x27;);&#xA;} catch (e) {&#xA;  print(&#x27;Error flipping video: $e&#x27;);&#xA;}&#xA;</void>

    &#xA;

    }

    &#xA;

  • Try to concatenate videos using FFmpeg Package. My videos concatenate correctly but those that i record from fornt camera rotate 90' in concatenate

    24 avril 2024, par Ahmad Akram

    Here is my code where I pass a list of image paths that concatenate. I am facing an issue with the front camera video. When concatenated completely some videos rotate 90 degrees.

    &#xA;

    Future<void> mergeVideos(List<string> videoPaths) async {&#xA;    VideoHelper.showInSnackBar(&#x27;Videos merged Start&#x27;, context);&#xA;    String outputPath = await VideoHelper.generateOutputPath();&#xA;    FlutterFFmpeg flutterFFmpeg = FlutterFFmpeg();&#xA;&#xA;    // Create a text file containing the paths of the videos to concatenate&#xA;    String fileListPath =&#xA;        &#x27;${(await getTemporaryDirectory()).path}/fileList.txt&#x27;;&#xA;    File fileList = File(fileListPath);&#xA;    await fileList&#xA;        .writeAsString(videoPaths.map((path) => &#x27;file \&#x27;$path\&#x27;&#x27;).join(&#x27;\n&#x27;));&#xA;&#xA;    // Run FFmpeg command to concatenate videos&#xA;    // String command = &#x27;-f concat -safe 0 -i $fileListPath -c copy $outputPath&#x27;;&#xA;&#xA;    String command =&#xA;        &#x27;-f concat -safe 0 -i $fileListPath -vf "transpose=1" -c:a copy $outputPath&#x27;;&#xA;&#xA;    VideoHelper.showInSnackBar(&#x27;command Start&#x27;, context);&#xA;    await flutterFFmpeg.execute(command).then((value) {&#xA;      if (value == 0) {&#xA;        print("Output Path : $outputPath");&#xA;        VideoHelper.showInSnackBar(&#x27;Videos merged successfully&#x27;, context);&#xA;        Navigator.push(&#xA;            context,&#xA;            MaterialPageRoute(&#xA;                builder: (context) => VideoPlayerScreen(&#xA;                      videoFile: XFile(outputPath),&#xA;                    )));&#xA;      } else {&#xA;        VideoHelper.showInSnackBar(&#xA;            &#x27;Error merging videos  ::::: returnCode=== $value &#x27;, context);&#xA;      }&#xA;    });&#xA;  }&#xA;</string></void>

    &#xA;

  • Problem with FFmpeg breaking when streaming the entire screen and switching tabs

    2 octobre 2024, par Ibad Ahmad

    I'm working on a screen recording and streaming setup where the user records their entire screen and streams it to Twitch. The setup works fine initially, but when I switch tabs during recording, the stream breaks on the backend, and I get the following FFmpeg errors :

    &#xA;

    FFmpeg STDERR: [matroska,webm @ 0x7f9dcb904580] EBML header parsing failed&#xA;[in#0 @ 0x7f9dcb904380] Error opening input: Invalid data found when processing input&#xA;Error opening input file -.&#xA;Error opening input files: Invalid data found when processing input&#xA;

    &#xA;

    My frontend code captures the screen and microphone and streams it via a WebSocket to the backend, where FFmpeg processes the stream. Below is my relevant frontend code :

    &#xA;

    const startRecording = async () => {&#xA;    try {&#xA;        const screenStream = await navigator.mediaDevices.getDisplayMedia({&#xA;            preferCurrentTab: true,&#xA;            systemAudio: &#x27;include&#x27;,&#xA;            surfaceSwitching: &#x27;include&#x27;,&#xA;            monitorTypeSurfaces: &#x27;include&#x27;,&#xA;            video: {&#xA;                displaySurface: &#x27;browser&#x27;,&#xA;                height: 720,&#xA;                width: 1280,&#xA;                frameRate: { ideal: 24, max: 30 },&#xA;            },&#xA;        });&#xA;&#xA;        screenStream.getVideoTracks()[0].onended = () => {&#xA;            console.log(&#x27;Screen sharing ended. Stopping the recorder.&#x27;);&#xA;            stopRecording();&#xA;        };&#xA;&#xA;        const micStream = await navigator.mediaDevices.getUserMedia({&#xA;            audio: true,&#xA;        });&#xA;&#xA;        const combinedStream = new MediaStream([&#xA;            ...screenStream.getVideoTracks(),&#xA;            ...micStream.getAudioTracks(),&#xA;        ]);&#xA;&#xA;        const recorder = new MediaRecorder(combinedStream, {&#xA;            mimeType: &#x27;video/webm; codecs=vp8,opus&#x27;,&#xA;            videoBitsPerSecond: 3 * 1024 * 1024,&#xA;        });&#xA;&#xA;        const timeslice = 1000;&#xA;&#xA;        recorder.ondataavailable = async (event) => {&#xA;            if (socket?.current?.connected &amp;&amp; event.data.size > 0) {&#xA;                console.log(&#x27;Sending chunk data:&#x27;, socket.current.id);&#xA;                socket?.current.send(event.data);&#xA;                recordedChunks.current.push(event.data);&#xA;            } else if (!socket?.current?.connected) {&#xA;                handleSocketDisconnection();&#xA;            }&#xA;        };&#xA;&#xA;        mediaRecorder.current = recorder;&#xA;        recorder.start(timeslice);&#xA;        setIsRecording(true);&#xA;    } catch (error) {&#xA;        console.log(&#x27;Error starting screen recording:&#x27;, error);&#xA;        toast.error(&#x27;Failed to start screen recording: &#x27; &#x2B; error);&#xA;    }&#xA;};&#xA;&#xA;const stopRecording = () => {&#xA;    if (socket?.current &amp;&amp; mediaRecorder) {&#xA;        mediaRecorder?.current?.stop();&#xA;        socket.current.close();&#xA;        setIsRecording(false);&#xA;        downloadRecordedVideo();&#xA;    }&#xA;};&#xA;&#xA;

    &#xA;

    And here’s my backend code with FFmpeg settings for Twitch streaming :

    &#xA;

    const inputSettings = [&#xA;    &#x27;-f&#x27;, &#x27;webm&#x27;, &#x27;-i&#x27;, &#x27;-&#x27;, &#x27;-v&#x27;, &#x27;error&#x27;, &#x27;-analyzeduration&#x27;, &#x27;1000000&#x27;, &#x27;-probesize&#x27;, &#x27;5000000&#x27;,&#xA;];&#xA;&#xA;const twitchSettings = (twitch) => {&#xA;    return [&#xA;        &#x27;-c:v&#x27;, &#x27;libx264&#x27;, &#x27;-preset&#x27;, &#x27;veryfast&#x27;, &#x27;-tune&#x27;, &#x27;zerolatency&#x27;,&#xA;        &#x27;-g&#x27;, &#x27;60&#x27;, &#x27;-b:v&#x27;, &#x27;2500k&#x27;, &#x27;-maxrate&#x27;, &#x27;3000k&#x27;, &#x27;-bufsize&#x27;, &#x27;8000k&#x27;,&#xA;        &#x27;-r&#x27;, &#x27;30&#x27;, &#x27;-vf&#x27;, &#x27;tpad=stop_mode=clone:stop_duration=2&#x27;,&#xA;        &#x27;-c:a&#x27;, &#x27;aac&#x27;, &#x27;-ar&#x27;, &#x27;44100&#x27;, &#x27;-b:a&#x27;, &#x27;96k&#x27;,&#xA;        &#x27;-use_wallclock_as_timestamps&#x27;, &#x27;1&#x27;, &#x27;-async&#x27;, &#x27;1&#x27;,&#xA;        &#x27;-err_detect&#x27;, &#x27;ignore_err&#x27;, &#x27;-reconnect&#x27;, &#x27;1&#x27;,&#xA;        &#x27;-reconnect_streamed&#x27;, &#x27;1&#x27;, &#x27;-reconnect_delay_max&#x27;, &#x27;5&#x27;,&#xA;        &#x27;-y&#x27;, &#x27;-f&#x27;, &#x27;flv&#x27;, twitch,&#xA;    ];&#xA;};&#xA;&#xA;

    &#xA;

    Problem : When switching tabs during screen sharing, it seems like the frame rate drops or the stream gets interrupted, leading to FFmpeg errors like EBML header parsing failed and Invalid data found when processing input. I suspect this happens because the browser deprioritizes resources when the tab is not active, which might lead to corrupt chunks being sent to FFmpeg.

    &#xA;

    Questions :

    &#xA;

      &#xA;
    1. Could switching tabs during screen capture be causing the issue by disrupting the frame rate or dropping frames ?
    2. &#xA;

    3. Is there a way to ensure FFmpeg doesn’t break due to these interruptions ?
    4. &#xA;

    5. Any suggestions on handling the stream more reliably when switching tabs or optimizing the FFmpeg setup for this scenario ?
    6. &#xA;

    &#xA;

    I tried adjusting the bitrate, frame rate, and buffer size but still experienced the same issue. I'm trying to figure out if the issue is related to how browsers handle screen capture when tab switching or something specific with FFmpeg handling the video stream.

    &#xA;

    Any insights would be greatly appreciated.&#xA;Thanks in advance !

    &#xA;