The engines of a luxury cruise ship that became stranded in a storm failed because of low levels of lubricating oil, it has emerged.

The Viking Sky, which had 1,300 people on board, narrowly avoided disaster after it sent out a mayday signal on Saturday.

Passengers shared videos of onboard furniture sliding across the vessel's interior as it lurched from side to side.

Now the Norwegian Maritime Authority has concluded the engines' failure "was directly caused by low oil pressure".

All four of the ship's engines failed but the crew managed to restart one of them just in time, reports Reuters.

Some passengers were evacuated by helicopter but hundreds were left aboard as the vessel was towed back to port on Sunday.

The 47,800-tonne ship was travelling from Tromsø to Stavanger, carrying 915 guests and 458 crew, when the incident happened.

Twenty passengers were hospitalised, while others suffered minor injuries, said the ship's owner, Viking Cruises. The Norwegian Red Cross said many suffered from trauma and will need care back on land.

READ:'Frightening' and 'surreal': passengers describe 'terrifying' experience

Police chief Hans Vik, who heads the Joint Rescue Coordination Centre for southern Norway, told local media that the ship avoided a "major disaster".

"The ship drifted to within 100 metres of running aground before they were able to restart one of the engines," said Vik.

"If they had run aground we would have faced a major disaster."

Passengers are helped out of a rescue helicopter after being rescued from cruise ship Viking Sky Svein Ove Ekornesvag/NTB Scanpix/via REUTERS

The founder and chairman of Viking Cruises, Norwegian billionaire Torstein Hagen, met some of the passengers who had been airlifted.

"They've had a bit of a shocking experience," Hagen told Norwegian TV2.

"Most of our passengers are senior citizens ... imagine what it's like to hang there on that wire. It must be a terrible experience but they seem to have handled it very well," Hagen said.

Stormy weather conditions had improved in the early hours of Sunday, with winds blowing at 14 meters per second, down from 24 meters per second previously, according to the Norwegian Meteorological Institute. The wind speeds are expected to fall further during Sunday, a day after the vessel clashed with waves six to eight metres high.

The stretch of water known as Hustadvika is known for its bad weather and shallow waters with reefs. The Norwegian government is considering building a giant ocean tunnel through a nearby mountain to improve safety.