Recherche avancée

Médias (0)

Mot : - Tags -/optimisation

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

Autres articles (35)

  • La sauvegarde automatique de canaux SPIP

    1er avril 2010, par

    Dans le cadre de la mise en place d’une plateforme ouverte, il est important pour les hébergeurs de pouvoir disposer de sauvegardes assez régulières pour parer à tout problème éventuel.
    Pour réaliser cette tâche on se base sur deux plugins SPIP : Saveauto qui permet une sauvegarde régulière de la base de donnée sous la forme d’un dump mysql (utilisable dans phpmyadmin) mes_fichiers_2 qui permet de réaliser une archive au format zip des données importantes du site (les documents, les éléments (...)

  • 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

  • Support audio et vidéo HTML5

    10 avril 2011

    MediaSPIP utilise les balises HTML5 video et audio pour la lecture de documents multimedia en profitant des dernières innovations du W3C supportées par les navigateurs modernes.
    Pour les navigateurs plus anciens, le lecteur flash Flowplayer est utilisé.
    Le lecteur HTML5 utilisé a été spécifiquement créé pour MediaSPIP : il est complètement modifiable graphiquement pour correspondre à un thème choisi.
    Ces technologies permettent de distribuer vidéo et son à la fois sur des ordinateurs conventionnels (...)

Sur d’autres sites (9600)

  • ffmpeg : video to images with pts in filename

    12 février 2016, par ntg

    I am trying to extract images of exact times (say every second) from a mp4 video of an experiment. There are a lot of methods to do that using ffmpeg out there, but surprisingly enough the time accuracy is off.

    To measure accuracy, I have first time-stamped the video using pts, e.g. :

    -vf "[in] scale=640:-2 , drawtext=fontcolor=white:fontsize=22:fontfile='times.ttf':timecode='22\:10\:55\:00:text='03/12/15__':r=23.976023976:x=0:y=0 [out]"

    And as a result I got a millisecond precision time-stamp on the video. I checked the video and it seems the time-stamps are very accurate. I then tried all the methods I could find out there including :

    -Using -ss [timestamp] to go to an exact time and -vframes 1 to get the first frame at that time : this method is extremely slow since it involves calling ffmpeg once for each second of the video. Furthermore, seems to work fine for the first minutes, but then gets out of sync.

    -Using fps=1 and using out_%05d.jpg as the output. This was probably the most inaccurate, as it went off by whole seconds, plus it never got exactly the 0th millisecond.

    -Using a fast fps, and then selecting only the ones I need, e.g. -vf "fps=10, framestep=10, select=not(mod(n\,40))" was promising for the first minutes, but also became inaccurate after that.

    -I tried writing the pts/date as metadata, but (do not know how to /cannot) write to the metadata of a .jpg from ffmpeg...

    The problem is that after some time, if we are using out_%05d.jpg, the numbers get completely out of sinc, while the -ss gets inaccurate, and takes forever.

    Ideally there should be a way to write the %pts or the date as part of the filename... Does anyone know a method to extract images from an .mp4 file with millisecond precision, preferably using ffmpeg (or its library ? I am using python and getting desperate...)

    [Edit : as explained in the comment by Mulvya, the pts is calculated by using the fps of the video, ffmpeg can give it to you. In my case some of the videos have 30 and others 24*(100/1001) fps. Bellow is an example, which was produced by :

    args = ['ffmpeg',
    '-i',
    'c:\\Temp\\scr_cam.mp4',
    '-y',
    '-vf',
    "[in] drawtext=fontcolor=black:fontsize=22:fontfile='times.ttf':timecode='17\\:00\\:29\\:00':text='09/02/16__':r=30.0:x=0:y=0, drawtext=fontcolor=black:fontsize=22:fontfile='times.ttf':timecode='00\\:00\\:00\\:00':text='':r=30.0 :x=0:y=30, drawtext=fontcolor=black:fontsize=22:fontfile='times.ttf':text='n\\: %{n}   pts\\:%{pts}':r=30.0:x=0:y=60 [out]",
    '-c:a',
    'copy',
    '-metadata',
    'creation_time=2016-02-09T17:00:29',
    '-preset',
    'ultrafast',
    '-threads',
    '3',
    'c:\\Temp\\stamped_scr_cam.mp4']
    subprocess.call(args)

    In it we see that indeed pts = n/30 (n is the frame no). I have tried many combinations of the params of the commands I talk in the beginning, so listing all my efforts would take too much space. As we see, the drawtext seems to be very accurate, so it does not seem to be a problem of incorrect fps.

    sample of drawtext

    To get the fps I am using :

    def get_frame_rate_and_duration(filename):
       if not os.path.exists(filename):
           sys.stderr.write("ERROR: filename %r was not found!" % (filename,))
           return -1
       args = ["ffprobe",filename,"-v","0","-select_streams","v","-print_format","flat"]
       args.extend(["-show_entries","stream=r_frame_rate"])
       args.extend(["-show_entries","format=duration"])
       out = subprocess.check_output(args).split("\n")
       rate = out[0].split('=')[1].strip()[1:-1].split('/')
       duration = pd.Timedelta("{0} sec".format(out[1].split('=')[1].strip()[1:-1]))
       if len(rate)==1:
           rate = float(rate[0])
       if len(rate)==2:
           rate =  float(rate[0])/float(rate[1])
       else:
           rate = -1
       return rate, duration
  • FFmpeg missed packets (from time to time) while copying RTP stream to file

    1er septembre 2017, par Gnitry

    I have and RTP video broadcast stream (using NOVUS – H.264 / MPEG-4 HD/SD Broadcast Encoder). And I have a Windows Server 2012 (Intel Xeon E5-2690, 128Gb RAM) with service which is recording this stream to file (using lastest FFmpeg, calling it as external process). Every 2-5 minutes recording stops and starts again to a new file.

    From time to time there are significant (and not) lags in video. At most these lags are at the beginning file, sometimes in the center/end. Regarding log there are missed packets.

    It could be network problems, but :

    I ran manually from console in parallel another instance of ffmpeg and started to record the same broadcast stream with segmentation by time. And in this case recording is very good (missed packets 1..5 very very rarely), no lags. At moments, when the first ffmpeg records the second ffmpeg has no problems.

    What could be the reason of this behavior ? Two ffmpeg instances run in parallel and read the same udp input, but the first misses packets when the second feels good. No memory problems, no hdd problems, no CPU overload. I also tried to set highest priority of the first ffmpeg process, but it didn’t help. The only difference between them I see is that first ffmpeg is run from service, and the second is run from from local administrator. To be honest, I used vlc as recorder before, but it had the same problems too... And I can surely say that video stream is ok, because it is played in VLC player 24h/day on another PC without lags...

    That is how I run ffmpeg from windows service (C#) :

    _process = new Process();
    var startInfo = new ProcessStartInfo(@"ffmpeg\ffmpeg.exe");
    startInfo.UseShellExecute = false;
    startInfo.RedirectStandardInput = true;
    startInfo.Arguments = "-loglevel debug -y -ss 1 -i \"" + _url + "\" -vcodec copy -y -an \"" + _outputFileName + "\"";
    startInfo.CreateNoWindow = true;

    Command to record video automatically from windows service :

    ffmpeg.exe -loglevel debug -y -ss 1 -i "rtp://225.1.1.1:1024" -vcodec copy -y -an "Session-021221.ts"

    Command to record video manually.

    D:\ffmpeg\ffmpeg -i "rtp://225.1.1.1:1024" -vcodec copy -an -f segment -strftime 1 -segment_time 300 "novus-%Y-%m-%d_%H-%M-%S.ts"

    This is part of the log of one of the broken recordings (some other full logs are attached) :

    ...
    2017.09.01 18R:22:56.171  frame=  172 fps= 45 q=-1.0 size=    2816kB time=00:00:03.45 bitrate=6674.9kbits/s speed=0.909x    
    2017.09.01 18R:22:56.174  [NULL @ 0000000000a89ee0] ct_type:0 pic_struct:0
    2017.09.01 18R:22:56.686      Last message repeated 26 times
    2017.09.01 18R:22:56.687  frame=  199 fps= 46 q=-1.0 size=    3072kB time=00:00:03.99 bitrate=6297.7kbits/s speed=0.926x    
    2017.09.01 18R:23:04.554  [NULL @ 0000000000a89ee0] ct_type:0 pic_struct:0
    2017.09.01 18R:23:04.571      Last message repeated 26 times
    2017.09.01 18R:23:04.571  frame=  226 fps= 47 q=-1.0 size=    3584kB time=00:00:04.53 bitrate=6472.7kbits/s speed=0.939x    
    2017.09.01 18R:23:04.571  [NULL @ 0000000000a89ee0] ct_type:0 pic_struct:0
    2017.09.01 18R:23:04.572      Last message repeated 26 times
    2017.09.01 18R:23:04.572  frame=  253 fps= 47 q=-1.0 size=    4096kB time=00:00:05.07 bitrate=6610.4kbits/s speed=0.948x    
    2017.09.01 18R:23:04.572  [NULL @ 0000000000a89ee0] ct_type:0 pic_struct:0
    2017.09.01 18R:23:04.572  frame=  254 fps= 21 q=-1.0 size=    4096kB time=00:00:05.09 bitrate=6584.5kbits/s speed=0.418x    
    2017.09.01 18R:23:04.572  [NULL @ 0000000000a89ee0] ct_type:0 pic_struct:0
    2017.09.01 18R:23:04.655      Last message repeated 5 times
    2017.09.01 18R:23:04.684  [rtp @ 0000000000a3a9a0] max delay reached. need to consume packet
    2017.09.01 18R:23:04.684  [rtp @ 0000000000a3a9a0] RTP: missed 4147 packets
    2017.09.01 18R:23:04.685  [rtp @ 0000000000a3a9a0] RTP: PT=21: bad cseq a237 expected=9204
    2017.09.01 18R:23:04.685  [rtp @ 0000000000a3a9a0] max delay reached. need to consume packet
    2017.09.01 18R:23:04.685  [rtp @ 0000000000a3a9a0] RTP: missed 4148 packets
    2017.09.01 18R:23:04.685  [rtp @ 0000000000a3a9a0] Continuity check failed for pid 256 expected 8 got 15
    2017.09.01 18R:23:04.686  [rtp @ 0000000000a3a9a0] Continuity check failed for pid 272 expected 10 got 15
    2017.09.01 18R:23:04.686  [rtp @ 0000000000a3a9a0] Continuity check failed for pid 32 expected 13 got 4
    2017.09.01 18R:23:04.686  [rtp @ 0000000000a3a9a0] Continuity check failed for pid 0 expected 14 got 6
    2017.09.01 18R:23:04.767  [NULL @ 0000000000a89ee0] ct_type:0 pic_struct:0
    2017.09.01 18R:23:05.255      Last message repeated 25 times
    2017.09.01 18R:23:05.256  frame=  286 fps= 22 q=-1.0 size=    4608kB time=00:00:12.51 bitrate=3016.0kbits/s speed=0.971x    
    2017.09.01 18R:23:05.257  [NULL @ 0000000000a89ee0] ct_type:0 pic_struct:0
    2017.09.01 18R:23:05.77      Last message repeated 26 times
    2017.09.01 18R:23:05.77  frame=  313 fps= 23 q=-1.0 size=    5120kB time=00:00:13.05 bitrate=3212.5kbits/s speed=0.974x    
    2017.09.01 18R:23:05.773  [NULL @ 0000000000a89ee0] ct_type:0 pic_struct:0
    2017.09.01 18R:23:06.287      Last message repeated 26 times
    2017.09.01 18R:23:06.288  frame=  340 fps= 24 q=-1.0 size=    5376kB time=00:00:13.59 bitrate=3239.2kbits/s speed=0.977x    
    2017.09.01 18R:23:06.29  [NULL @ 0000000000a89ee0] ct_type:0 pic_struct:0
    2017.09.01 18R:23:06.803      Last message repeated 26 times
    2017.09.01 18R:23:06.804  frame=  367 fps= 25 q=-1.0 size=    5888kB time=00:00:14.13 bitrate=3412.2kbits/s speed=0.979x    
    2017.09.01 18R:23:06.808  [NULL @ 0000000000a89ee0] ct_type:0 pic_struct:0
    2017.09.01 18R:23:07.324      Last message repeated 26 times
    2017.09.01 18R:23:07.324  frame=  394 fps= 26 q=-1.0 size=    6144kB time=00:00:14.67 bitrate=3429.5kbits/s speed=0.981x  
    ...

    Some full logs :

    Full log #1

    Full log #2

  • OpenCV FFMPEG RTSP Camera Feed Errors

    4 avril, par trn2020

    I'm getting these errors at random times when saving frames from an rtsp camera feed. The errors happen at different times, usually after 100-200 images have been saved, and the errors themselves are not always exactly the same. They cause the images that are saved at the time of the error to be distorted either to the point of being completely grey or contain distorted pixels.

    


    #Frame_142 - [hevc @ 0c3bf800] The cu_qp_delta 29 is outside the valid range [-26, 25].

    


    #Frame_406 - [hevc @ 0b6bdb80] Could not find ref with POC 41

    


    I've tried implementing the code in both python and c++ with the same result. Also tried saving as .png instead of .jpg. The rtsp feed works fine when using imshow to display the camera, the problem only appears to happen when trying to save the frames. From what I can gather the errors have to do with ffmpeg but google isn't much help for these types of errors.

    


    #include <iostream>&#xA;#include &#xA;#include <chrono>&#xA;#include <thread>&#xA;&#xA;using namespace std;&#xA;using namespace cv;&#xA;&#xA;int main() {&#xA;&#xA;    VideoCapture cap("rtsp://admin:admin@192.168.88.97/media/video1");&#xA;    if (!cap.isOpened())&#xA;        return -1;&#xA;&#xA;    for (int i = 0; i &lt; 500; i&#x2B;&#x2B;)&#xA;    {&#xA;        Mat frame;&#xA;        cap >> frame;&#xA;        imwrite("C:\\Users\\Documents\\Dev\\c&#x2B;&#x2B;\\OpenCVExample\\frames\\frame" &#x2B; std::to_string(i) &#x2B; ".png", frame);&#xA;        cout &lt;&lt; i &lt;&lt; "\n";&#xA;        std::this_thread::sleep_for(std::chrono::milliseconds(10));&#xA;&#xA;    }&#xA;&#xA;    return 0;&#xA;}&#xA;</thread></chrono></iostream>

    &#xA;