Panicking passengers of a double-decker bus begged the driver to stop seconds before the vehicle collided with a train in Canada, killing six people, witnesses have said.

The rush-hour smash occurred in the Ottawa suburb of Fallowfield after the bus burst through a closed railway crossing barrier.

"People started screaming 'Stop, stop!' because they could see the train coming down the track," said Tanner Trepaniere, who was sitting on the upper deck of the bus.

The front of the vehicle was ripped off in the collision.

Via Rail, the train operator, said that there were no reports of major injuries to its passengers or crew. The locomotive and one car of the four-car train were derailed.

Passengers said that the bus driver had failed to notice the crossing barrier was lowered and that flashing lights were warning of an approaching train

"The bus hit the train dead on," passenger Gregory Mech told Canadian Broadcasting Corp. "I could see that there were bodies on the train tracks."

"I don't know if the bus driver blacked out. He didn't slow down, and it just impacted with the train," said Rebbecca Guilbeault. "I've seen a few people dead, someone ripped in half."

Guilbeault was on the bus with her one-year-old son. She said she had put him in a stroller just before the crash and people were thrown on top of him by the impact.

Witness Mark Cogan said. "I noticed the double-decker bus ... I saw him, and he just kept going.

"I just thought maybe there's a side way around or something, but instantly, he just smoked the train. He went through the guard rail and just hammered the train, and then it was mayhem."

Canadian prime minister Stephen Harper tweeted: