Striking schoolteachers demanding better wages have clashed with riot police in Rio de Janeiro.

Hundreds of teachers protesting against a new payroll and benefit package proposed by mayor Eduardo Paes gathered in front of City Hall, in the central business district.

While councillors discussed the bill inside city Hall, the protest erupted into violence provoked by anti-establishment "black bloc" anarchists, police said.

Riot police fired rubber bullets and set off percussion grenades.

Dozens of people took shelter in the Odeon cinema, which was hosting red carpet events for the Rio Film Festival.

Police said that 20 people - all black blocs - were arrested on rioting, looting and resisting arrest charges.

Teachers have been on strike for 46 days and some had been camping outside City Hall for weeks.

Despite the protest, councillors approved the plan by 36 votes to three. Nine opposition councillors walked out as chaos erupted outside.

A wave of mass protests for social change has struck Brazil in recent months.

In June more than one million demonstrators took to the streets to protest against rising prices and corruption and calling for a boycott of the 2014 World Cup, on which they say the government has spent billions of dollars while neglecting social and public services.