One thing to keep in mind, users should be able to upload (to the specific signed URL), they should not be able to download from that location. Don't make the files users can upload publicly downloadable, otherwise you can be used to host malware. After the video/image is uploaded, you need to download and process it[1], then upload it to an S3 bucket that allows download (e.g, via CDN).
[1] Use caution when processing user content. It is best to process media in a sandbox that can protect you against exploits in the media processing libraries.
https://devcenter.heroku.com/articles/s3#file-uploads
One thing to keep in mind, users should be able to upload (to the specific signed URL), they should not be able to download from that location. Don't make the files users can upload publicly downloadable, otherwise you can be used to host malware. After the video/image is uploaded, you need to download and process it[1], then upload it to an S3 bucket that allows download (e.g, via CDN).
[1] Use caution when processing user content. It is best to process media in a sandbox that can protect you against exploits in the media processing libraries.