
Recherche avancée
Autres articles (46)
-
Publier sur MédiaSpip
13 juin 2013Puis-je poster des contenus à partir d’une tablette Ipad ?
Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir -
Encoding and processing into web-friendly formats
13 avril 2011, parMediaSPIP automatically converts uploaded files to internet-compatible formats.
Video files are encoded in MP4, Ogv and WebM (supported by HTML5) and MP4 (supported by Flash).
Audio files are encoded in MP3 and Ogg (supported by HTML5) and MP3 (supported by Flash).
Where possible, text is analyzed in order to retrieve the data needed for search engine detection, and then exported as a series of image files.
All uploaded files are stored online in their original format, so you can (...) -
Librairies et binaires spécifiques au traitement vidéo et sonore
31 janvier 2010, parLes logiciels et librairies suivantes sont utilisées par SPIPmotion d’une manière ou d’une autre.
Binaires obligatoires FFMpeg : encodeur principal, permet de transcoder presque tous les types de fichiers vidéo et sonores dans les formats lisibles sur Internet. CF ce tutoriel pour son installation ; Oggz-tools : outils d’inspection de fichiers ogg ; Mediainfo : récupération d’informations depuis la plupart des formats vidéos et sonores ;
Binaires complémentaires et facultatifs flvtool2 : (...)
Sur d’autres sites (9107)
-
Improve ffmpeg scene detection in particular scenario
17 septembre 2021, par Nobody-Knows-I-am-a-DogI have 50 hours of video where a speaker is in the lower right corner of the video and the by far larger part of the video consists of slides in the center. The speaker moves a bit, the slides transition into the video. I need to detect the time codes of the slide transitions. +- 1 second precision is fine. I am playing around with select filters in ffmpeg such as
ffmpeg -i lecture.mp4 -filter:v "select='gt(scene,0.1)',showinfo" -f null -
but I have remaining problems where some help or hint would be highly appreciated.

Problem 1 : Speaker movement occasionally triggers false positives. If there is some possibility to restrict frame comparison to a certain (spatial, cropped) area of the scene then I could focus on the slide area and this would greatly help.


Problem 2 : Speed of slide transition is slow so I occasionally miss a transition since the change from frame(n) to frame(n+1) is too small. It would be great if I could compare, for example, frame(n) to frame(n+10) for threshold detection. ffmpeg scene detection : check only every nth frame ? does not help here, because it only checks every n-th frame but still compares a frame with its immediate neighbor.


Of course, both problems can be solved by producing a cropped version with reduced framerate. However, I am looking for a solution where I can do this in a single pass with some complex filter expression ... and this is exactly the place where my own experience with ffmpeg fails me and where I would appreciate some help.


Problem 3 : Occasionally a single slide transition triggers several times in a row throughout the transition. I have no idea how to solve this in ffmpeg.


-
MAINTAINERS : Add Haihao Xiang for vaapi
14 décembre 2021, par U. Artie EoffMAINTAINERS : Add Haihao Xiang for vaapi
Current listed maintainers for vaapi plugin are
not reponsive and/or currently active in the
ffmpeg community. Thus, vaapi plugin patches
(and qsv plugin) have generally gone ignored or
lost in the ether for too long.Remove Gwenole Beauchesne from vaapi maintainer
who has not been active since 2016.Current alternative maintainer for vaapi is Mark
Thompson whom has not been active since
March/April 2021.Therefore, add Haihao Xiang to vaapi maintainer
who's primary role is FFmpeg development with a
focus on the vaapi and qsv plugins. Haihao has
over a decade of media experience and many years
of FFmpeg development experience, amongst other
media frameworks.The additional patch for adding Haihao as qsv
plugin maintainer has been submitted previously :https://patchwork.ffmpeg.org/project/ffmpeg/patch/20210608141134.27448-1-zhongli_dev@126.com/
This will help FFmpeg to continue to be the leading
multimedia framework by allowing these plugins to be
actively improved, enhanced, and maintained for existing
and future HW platforms.Signed-off-by : U. Artie Eoff <ullysses.a.eoff@intel.com>
-
Problem decoding h264 over RTP TCP stream
4 mai 2022, par Kamil.SI'm trying to receive RTP stream encoding h264 over TCP from my intercom Hikvision DS-KH8350-WTE1. By reverse engineering I was able to replicate how Hikvision original software Hik-Connect on iPhone and iVMS-4200 on MacOS connects and negotaties streaming. Now I'm getting the very same stream as original apps - verified through Wireshark. Now I need to "make sense" of the stream. I know it's RTP because I inspected how iVMS-4200 uses it using
/usr/bin/sample
on MacOS. Which yields :

! : 2 CStreamConvert::InputData(void*, int) (in libOpenNetStream.dylib) + 52 [0x11ff7c7a6]
+ ! : 2 SYSTRANS_InputData (in libSystemTransform.dylib) + 153 [0x114f917f2]
+ ! : 1 CRTPDemux::ProcessH264(unsigned char*, unsigned int, unsigned int, unsigned int) (in libSystemTransform.dylib) + 302 [0x114fa2c04]
+ ! : | 1 CRTPDemux::AddAVCStartCode() (in libSystemTransform.dylib) + 47 [0x114fa40f1]
+ ! : 1 CRTPDemux::ProcessH264(unsigned char*, unsigned int, unsigned int, unsigned int) (in libSystemTransform.dylib) + 476 [0x114fa2cb2]
+ ! : 1 CRTPDemux::ProcessVideoFrame(unsigned char*, unsigned int, unsigned int) (in libSystemTransform.dylib) + 1339 [0x114fa29b3]
+ ! : 1 CMPEG2PSPack::InputData(unsigned char*, unsigned int, FRAME_INFO*) (in libSystemTransform.dylib) + 228 [0x114f961d6]
+ ! : 1 CMPEG2PSPack::PackH264Frame(unsigned char*, unsigned int, FRAME_INFO*) (in libSystemTransform.dylib) + 238 [0x114f972fe]
+ ! : 1 CMPEG2PSPack::FindAVCStartCode(unsigned char*, unsigned int) (in libSystemTransform.dylib) + 23 [0x114f97561]`



I can catch that with lldb and see the arriving packet data making sense as the format I'm describing.


The packet signatures look following :




0x24 0x02 0x05 0x85 0x80 0x60 0x01 0x57 0x00 0x00 0x00 0x02 0x00 0x00 0x27 0xde
0x0d 0x80 0x60 0x37 0x94 0x71 0xe3 0x97 0x10 0x77 0x20 0x2c 0x51 | 0x7c
0x85 0xb8 0x00 00 00 00 01 65 0xb8 0x0 0x0 0xa 0x35 ...


0x24 0x02 0x05 0x85 0x80 0x60 0x01 0x58 0x00 0x00 0x00 0x02 0x00 0x00 0x27 0xde
0xd 0x80 0x60 0x37 0x95 0x71 0xe3 0x97 0x10 0x77 0x20 0x2c 0x51 | 0x7c 0x05 0x15 0xac ...


0x24 0x02 0x5 0x85 0x80 0x60 0x01 0x59 0x00 0x0 0x00 0x02 0x00 00x0 0x27 0xde
0xd 0x80 0x60 0x37 0x96 0x71 0xe3 0x97 0x10 0x77 0x20 0x2c 0x51 | 0x7c 0x05 0x5d 0x00 ...




By the means of reverse engineering the original software I was able to figure out that
0x7c85
indicates a key frame.0x7c85
bytes in the genuine software processing do get replaced by h26400 00 00 01 65
Key frame NALU . That's h264 appendix-B format.
The0x7c05
packets always follow and are the remaining payload of the key frame. No NALU are added during their handling (the0x7c05
is stripped away and rest of the bytes is copied). None of the bytes preceding 0x7cXX make it to a mp4 recording (that makes sense as it's the RTP protocol , albeit I'm not sure if it's entirely RTP standard or there's something custom from Hikvision).

If you pay close attention in the Header there are 2 separate bytes indicating order which always match, so I'm sure no packet loss is occurring.


I also observed nonkey frames arriving as
0x7c81
and converted to00 00 00 01 61
NALU but I want to focus solely on the single key frame for now. Mostly because if I record a movie with the original software it will always begin with00 00 00 01 65
Key frame (that obviously makes sense).

To get a working mp4 I decided to copy paste a mp4 header of a genuine iVMS-4200 recording (in this sense that's every byte preceding 1st frame NALU
00 00 00 01 65
in the mp4 file). I know that the resolution will match the actual camera footage. With the strategy of waiting for a keyframe , replacing0x7c85
with00 00 00 01 65
NALU and appending the remaining bytes, or only appending bytes in the0x7c05
case I do seem to get something that eventually could work.
When I attempt toffplay
the custom craftedmp4
result I do get something (with a little stretch of imagination that's actually the camera fisheye image forming), but clearly there is a problem.



It seems around 3-4th
0x7c05
packet (as the failing packet differs on every run), when I copy bytes eventually the h264 stream is incorrect. Just by eye-inspecting the bytes I don't see anything unusual.

This is the failing packet around offset 750 decimal, (I know it's around this place because I keep stripping bytes away to see if there's still same amount frame arriving before it breaks).


More over I did dump those bytes from original software using lldb taking out my own python implementation out of equation. And I run into very same problem with the original packets.


The mp4 header I use should work (since it does for original recordings even if I manipulate number of frames and leave just the first keyframe).
Correct me if I'm wrong but the phase of converting this to MPEG2-PS (which iVMS-4200 does and I don't) should be entirely optional and should not be related to my problem.


Update :
I went the path of setting up recording and only then dumping the original iVMS-4200 packets. I edited the recorded movie to only contain keyframe of interest and it works. I found differences but I cannot explain where they are there yet :


Somehow
00 00 01 E0 13 FA 88 00 02 FF FF
is inserted in the genuine recording (that's 4th packet), but I have no idea how this byte string was generated and what is its purpose.
When I fixed the first difference the next one is :

The pattern is striking. But what
00 00 01 E0 13 FA 88 00 02 FF FF
actually is ? And why is it inserted after18 03 25 10
&2F F4 80 FC

The00 00 01 E0
signature would suggest those are Packetized Elementary Stream (PES) headers