On Tue, 16 Sep 2003 20:36:49 GMT, Jason Murry <me@isp.com> wrote:
[color=blue]
>Hello, thanks for the response.
>[color=green]
>> Ouch... over a terabyte a day worst case? (I hope I've put a load of zeroes in
>>the wrong place somewhere!)[/color]
>
>Here is my math, per camera.
>
>About 9Gb/day per camera, I was thinking 1fps would be about what i
>would be recording at.
>
>Per Picture Size 109,000
>
>Seconds in a day 86,400
>Seconds in an hour 3,600
>
>Images / day @ 1fps 86,400
>Images / day @ 10fps 864,000
>
>Size (MB) / day @ 1fps 8,981.32
>Size (MB) / day @ 10fps 89,813.23[/color]
OK - not sure where the 2,160,000 images came from in the first example - but
you also said 5 cameras; so 45 - 450 Gb a day? Still on the big side - largest
MySQL database I can find mentioned is 1Tb.
[color=blue][color=green]
>> With the data volumes above? You'd need a pretty serious database. Storing
>>images in the database gives you transactional control over changes, and lets
>>you back up the database in one go, rather than worrying about matching backups
>>of the filesystem to the index in the database.
>>
>> But it does add overhead to inserting and retreiving the data, which could be
>>reduced by caching the images in the filesystem, at least for repeated reads.
>>You mention you're using MySQL - forget storing in the database then, for this
>>sort of volume.[/color]
>
>With mySQL since you do not have transaction support, there is no
>logging and thus no transaction overhead.[/color]
MySQL does have transaction support nowadays, can have logging turned on, and
even with those turned off there's still an overhead getting large data in and
out, compared with a filesystem.
[color=blue]
>Storing the DB on a raw petition would remove the file system overhead.[/color]
Didn't know MySQL had support for that.
[color=blue][color=green]
>> Depends entirely on the filesystem. Tens of thousands is probably where you
>>start thinking seriously about splitting it up.
>>[/color]
>I was thinking about the same, some where around 50k I was expecting
>to have problems, if I split off by directories I can avoid this
>limit, but I would also add an additional process of coping the
>images, which would double th bandwith used by the ftp process[/color]
Isn't that just a matter of moving the files, rather than copying?
[color=blue][color=green]
>> Send it as video; you mentioned motion jpeg earlier, that would seem to make
>>sense.[/color]
>
>I would love to know how to do this, I don't know. I was thinking
>about using PHP which I have used alot in the past, but I have never
>worked with dynamic video formats and such. I did find a java class
>in the JMF that takes JPG and makes it quicktime, but i never got it
>working correctly. And I am not sure if dynamic video encoding would
>be fast enough with java.[/color]
If you're doing any processing on this much data, forget Java or PHP, you'll
be needing something a bit quicker, e.g. C or C++.
[color=blue][color=green]
>> This could have large advantages in terms of space; since you save a lot on
>>the compression as it'll be storing differences between frames. Again, motion
>>jpeg has advantages here, as it can store the video with lossless compression
>>(lossless compared to the original jpeg frames, anyway). Or you can run it with
>>lossy compression to save even more space; in which case you could consider
>>other video compression schemes. If you can stream it in as motion jpeg in the
>>first place, that could cut down on the processing power you'd need (a lot).[/color]
>
>The camera has a Motion JPG Stream, but I can't find any way to use
>this directly. I tried righting a vb program to open a connection and
>try to read the stream but I was left with string of jpgs.[/color]
Don't know anything off-the-shelf; you mention VB, so you could be using
DirectShow or the older Video for Windows with a MJPEG codec.
Or it could be as simple as working out whatever protocol it's using to send
the stream (HTTP?) and just saving it straight to disc without worrying too
much about processing it at the time.
[color=blue][color=green]
>> To play from time X to time Y, it'd just be a matter of finding the video
>>file(s) spanning that period, and extracting the frames. It'll probably have to
>>seek back a bit to the previous keyframe, to get to the frame at time X if it
>>doesn't lie exactly on a keyframe.[/color]
>
>In motion JPG as I found out, all frames are key frames.
>
>The problem with video, is how much work will it be to do real time
>encoding of the jpgs into the video files. If the files coming in
>around the clock, and have to move the files into directory structure
>and encode a video, this is alot of work. I think it would need to be
>C to be fast enough.[/color]
Most likely - and then you might be pushing it unless you've got quite a bit
of hardware to throw at it. If the stream's coming in as MJPEG, then the best
way has got to be to just save that stream as it comes in (since you won't have
enough time to process it much), and then possibly decode to frames on demand,
or just stream back the video.
I don't think splitting and storing as individual frames is going to be
practical.
What are these cameras likely to be recording? Lots of movement? If there can
be 'quiet' periods or areas in the picture you're pouring away disk space with
individual frames.
--
Andy Hassall (andy@andyh.co.uk) icq(5747695) (
http://www.andyh.co.uk)
Space: disk usage analysis tool (
http://www.andyhsoftware.co.uk/space)