Selling Videos on A WordPress Site

Hi,
I have a client that runs a non profit and wants to sell videos from some recent events that were recorded. They want this on a wordpress site. They want the following options:

User purchases the video and can either download a copy or stream the video.

A 1-2 minute video preview would be available on the site

They do not want the video hosted on youtube. They want to use a video hositng service such is Vimeo or possibly host on the server.

System would integrate with paypal as the payment processor

What plugin(s) would be necessary to accomplish this?