Footage shot from a helicopter shows the bus stopped across two lanes on the bridge connection Rio with the city of Niterói.
Military police officers, ambulances and a special operations team are at the scene.
At least five passengers have been freed. More than a dozen are still believed to be on board.
Brazilian media say it is not clear if the armed man has made any demands. He reportedly boarded the bus at 05:30 (0830 GMT) and threatened passengers.
One news site has released a WhatsApp message reportedly written by one of the passengers, saying that the gunman has tied the passengers’ hands and has a petrol can as well as a gun.
Traffic on the bridge has been blocked completely.
Police say they are speaking to the hijacker.