One of easiest way is to record people with a cam, and populate scene with sprite particles.
This is easy to do, but quite limited - works best for static and massive crowds, like stadium spectators etc.
Another, (more involved) route that I know of is to control agents with particles, export data to files (possibly per-frame files) and use renderman to instantiate prebaked animation cycles for each particle. There's a great article on this on renderman.org (siggraph papers, ILM crowd on starwars). Some knowledge of renderman and python scripting can give nice results.