Recherche avancée

Médias (0)

Mot : - Tags -/formulaire

Aucun média correspondant à vos critères n’est disponible sur le site.

Autres articles (73)

  • Le profil des utilisateurs

    12 avril 2011, par

    Chaque utilisateur dispose d’une page de profil lui permettant de modifier ses informations personnelle. Dans le menu de haut de page par défaut, un élément de menu est automatiquement créé à l’initialisation de MediaSPIP, visible uniquement si le visiteur est identifié sur le site.
    L’utilisateur a accès à la modification de profil depuis sa page auteur, un lien dans la navigation "Modifier votre profil" est (...)

  • Configurer la prise en compte des langues

    15 novembre 2010, par

    Accéder à la configuration et ajouter des langues prises en compte
    Afin de configurer la prise en compte de nouvelles langues, il est nécessaire de se rendre dans la partie "Administrer" du site.
    De là, dans le menu de navigation, vous pouvez accéder à une partie "Gestion des langues" permettant d’activer la prise en compte de nouvelles langues.
    Chaque nouvelle langue ajoutée reste désactivable tant qu’aucun objet n’est créé dans cette langue. Dans ce cas, elle devient grisée dans la configuration et (...)

  • XMP PHP

    13 mai 2011, par

    Dixit Wikipedia, XMP signifie :
    Extensible Metadata Platform ou XMP est un format de métadonnées basé sur XML utilisé dans les applications PDF, de photographie et de graphisme. Il a été lancé par Adobe Systems en avril 2001 en étant intégré à la version 5.0 d’Adobe Acrobat.
    Étant basé sur XML, il gère un ensemble de tags dynamiques pour l’utilisation dans le cadre du Web sémantique.
    XMP permet d’enregistrer sous forme d’un document XML des informations relatives à un fichier : titre, auteur, historique (...)

Sur d’autres sites (7776)

  • Trying to read streaming video using OpenCVSharp4

    7 septembre 2022, par AlvinfromDiaspar

    I'm just not having any luck whatsoever with this.
I'm calling OpenCvSharp.VideoCapture("udp ://0.0.0.0:11111") to try to read a video stream.
This does not work, and the documentation seems like it doesnt support streaming.

    



    I've also tried (without success) trying to grab images using OpenCvSharp, but i've no idea how to do that. Documentation for it doesn't show any indication this is possible as well.

    



    The snippet for this is here :

    



    

            var vc = new OpenCvSharp.VideoCapture("udp://0.0.0.0:11111");

        if (!vc.IsOpened())
        {
            vc.Open("udp://0.0.0.0:11111");
        }

        while (true)
        {
            var matImage = new OpenCvSharp.Mat();
            if (vc.Read(matImage))
            {
                try
                {
                    var bmp = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(matImage);
                    using (var ms = new MemoryStream())
                    {
                        var bmpImg = new BitmapImage();
                        bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
                        bmpImg.StreamSource = ms;
                        this.videoFrameImage.Background = new ImageBrush(bmpImg);
                        this.isReadingVideoStream = true;
                    }
                }
                catch
                {
                    // just swallow exception
                }
            }
        }


    


    



    Before trying OpenCvSharp (which seemed extremely promising), I tried using ffmpeg with mild/partial success. I was able to extra a frame from the real-time streaming video and save it to a file. Unfortunately, the behavior was not consistent. Sometimes it saves images, sometimes it doesn't. And when it does save images it's usually just a handful (even though the video is constantly being streamed).

    



    The command line for this is here :

    



    


    ffmpeg.exe -i udp ://0.0.0.0:11111 -ss 00:00:01 -vframes 1 -q:v 1 -y
 filename.jpg

    


    



    I may go back to trying again with ffmpeg as im getting absolutely nowhere with OpenCvSharp.
Wondering if anybody out there has been successfully implementing with either one of these (or another way) ?

    



    * Update *

    



    I found a set of Nuget packages which does indicate support for streaming video.
The nugets are :

    



      

    • OpenCvSharp4
    • 


    • OpenCvSharp4.Windows
    • 


    • OpenCvSharp4.runtime.win
    • 


    



    But now i am currently facing a run-time error :

    



    Method not found: 'Void OpenCvSharp.VideoCapture..ctor(System.String, OpenCvSharp.VideoCaptureAPIs)'.


    



    Incidentally, i just raised this issue :

    


  • FMP4 moof box sequence number ordering

    15 avril 2024, par Daniel

    I wanted to do a basic fragmented mp4 broadcast program with avformat libs and HTML5 video and MSE.

    



    This is a live stream and I use avformat to copy h264 data to mp4 fragments.

    



    Here is my basic drawing of clients attaching to the stream :

    



    enter image description here

    



    So, with words :

    



      

    1. C1J : First Client joins :


        

      • avformat process starts
      • 


      • ftyp, moov, moof, mdat boxes will be served to Client1
      • 


      • ftyp and moov atoms are both saved for later reuse
      • 


    2. 


    3. C2J : Second Client joins (later in time) :


        

      • avformat process is ongoing (because it is still serving moof and mdat boxes for Client1)
      • 


      • previously saved ftyp and moov boxes will be served first to Client2
      • 


      • after ftyp and moov boxes were served, Client2 will join to the stream at the next moof box.
      • 


    4. 


    



    I have saved an mp4 file to disk from both clients.

    



    Atoms' order within both files looks good : ftype, moov, moof, mdat, moof, mdat...

    



    Both files can be played by media players (like VLC) and also in browsers directly (Opera).

    



    Client1 can be played also via MSE in the browser (Opera), but Client2's stream is not displaying with MSE (Opera).

    



    No errors on the JS console, and media-internals looks also good (at least equivalent with Client1's one).

    



    Now I realized that every moof box contains an mfhd box (header) with a sequenceNumber field.

    



    Of course in Client1's first moof box this sequenceNumber is 1.
However in the later joined Client2's first moof box this sequenceNumber is always >= 1 (in my case it is 16).

    



    What do I need to modify in the moof boxes in Client2 to have a valid fmp4 from the beginning ?

    



    I think Opera's HTML5 video does not like if sequenceNumber does not start from 1, but there shall be other requirements for being it valid.

    


  • screen recorder by using accord.net

    12 juin 2020, par mohammad

    I tried to creat screen recorder by ussing accord.ffmpeg when run project it show this error :

    



    


    An unhandled exception of type 'System.AccessViolationException' occurred in Accord.Video.FFMPEG.dll
 Additional information : Attempted to read or write protected memory. This is often an indication that other memory is corrupt

    


    



    At line :

    



    FileWriter.WriteAudioFrame(e.Signal.RawData);


    



    Full Code :

    



    using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Accord;
using Accord.Video;
using Accord.Video.FFMPEG;
using System.Diagnostics;
using System.Threading;
using Accord.DirectSound;
using Accord.Audio;
using System.IO;
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        VideoFileWriter FileWriter;
        Stopwatch stopwatch = new Stopwatch();
        AudioCaptureDevice audioDevice;
        int frameTime;
        int totalTime;
        Thread recorderTherad;
        bool start;

        /// diemntion of screen
        int x = 1280;
        int y = 800;

        private void button1_Click(object sender, EventArgs e)
        {
            //Start recorder

            AudioDeviceInfo info = null;
            var adc = new AudioDeviceCollection(AudioDeviceCategory.Capture);
            foreach (var ad in adc)
            {
                string desc = ad.Description;
                if (desc.IndexOf("Audio") > -1)
                {
                    info = ad;
                }
            }
            if (info == null)
            {
                audioDevice = new AudioCaptureDevice();
            }
            else
            {
                audioDevice = new AudioCaptureDevice(info);
            }

            audioDevice.NewFrame += AudioDevice_NewFrame;
            audioDevice.Format = SampleFormat.Format16Bit;



            FileWriter = new VideoFileWriter();
            FileWriter.Open(@"d:\nn.mp4",x,y,10,VideoCodec.MPEG4  ,1000000,AudioCodec.MP3  ,320000,audioDevice.SampleRate ,audioDevice.Channels  );

            recorderTherad = new Thread(delegate () { recorder(); });
            start = true;
            audioDevice.Start();
            recorderTherad.Start();
        }

        private void recorder()
        {
            stopwatch.Start();
            while (start == true)
            {
             Bitmap bitmap = new Bitmap(x, y);
                using (Graphics g = Graphics.FromImage(bitmap))
                { g.CopyFromScreen(new System.Drawing.Point(0, 0), System.Drawing.Point.Empty, new Size(x, y)); }

                stopwatch.Stop();
                frameTime = Convert.ToInt32(stopwatch.ElapsedMilliseconds);
                stopwatch.Restart();

                //if time of get screen shoot > 100 msec
                if (frameTime > 100)
                {
                    totalTime += frameTime;
                    TimeSpan d = new TimeSpan(0, 0, 0, 0, totalTime);
                    FileWriter.WriteVideoFrame(bitmap, d);
                    bitmap.Dispose();
                }
                else
                {
                    totalTime += 100;
                    TimeSpan d = new TimeSpan(0, 0, 0, 0, totalTime);
                    FileWriter.WriteVideoFrame(bitmap, d);
                    bitmap.Dispose();
                    Thread.Sleep(100 - frameTime);
                }
            }
        }
        private void AudioDevice_NewFrame(object sender, Accord.Audio.NewFrameEventArgs e)
        {
                FileWriter.WriteAudioFrame(e.Signal.RawData);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            audioDevice .Stop();
            start = false;
            recorderTherad.Abort();
            FileWriter.Close();
            FileWriter.Dispose();
            audioDevice.Dispose();
        }
    }
}