I am guessing this means you have already tried the binding that others have mentioned. I currently have the picture updating once a second via the binding and that is the limit that most cameras can do due to their processors only producing a keyframe max at once a second. Cameras require the keyframe to create the snapshot. Also many cameras do provide a MJPEG stream, but be careful and read the manual as they usually can not do full resolution and in some cases it is a 4:3 ratio stream with less than half the pixel count. Not all UI and apps will work unless the stream is in MJPEG format.
There are some openhab users that are using a script to use FFMPEG to convert the stream in realtime to mjpeg for cameras that do not have the feature. Also home assistant has this feature to use ffmpeg. Guessing this will tax the CPU doing this.
Using the Image item the binding is able to provide a full resolution in widescreen format picture, with little CPU load on openhab, but yes at a lower FPS rate.
So what to do if you want 30 FPS video motion?
Do what @rlkoshak posted and use a “video” element in your sitemap. Downside is you MUST use a camera that can use a user/pass in the URL like foscam, or use a camera that can do basic auth (not much better than raw passwords) and a number of cameras like Hikvision do support basic auth, as well as being able to do Digest auth as well.
A number of cameras require a PLUGIN to be installed in your browser before the stream can be watched, this creates another hurdle to jump over. Both my cameras do this.
@maxico gave a good example of how to use both of these types of cameras, first example is how to do basic auth cameras, the second way is how to do raw text cameras like Foscam. Notice the different format of the URL.
Some brands will not work using this method at all as they use DIGEST auth only and AFAIK you wont get these cameras working with the video element. If you can please post how.
Because the video element does NOT work with myopenhab.org you will need to do extra work to see the camera feed remotely.
So why does the binding use snapshots?
Because openhab only has an IMAGE item for holding raw images and does not have a VIDEO item equivalent. For cameras that only support DIGEST auth method, the binding handles the authentication and then has a way to pass on the image to other parts of Openhab.
There is nothing that stops you from using the binding only for the alarm and API features and use the Video element in your sitemap for local network usage, you can mix and match and get the best of both.