Saving videos to S3 from RTMP streams

Skip to first unread message

Adam Medziński

unread,
Jul 7, 2021, 10:50:07 AM7/7/21
to Ant Media Server
Is it possible to cyclically save to S3 videos from the RTMP stream from an IP camera? I would like to periodically save video from surveillance cameras for viewing later - but I would not like to interrupt broadcasting.

Enes Kuluk

unread,
Jul 7, 2021, 2:25:51 PM7/7/21
to Ant Media Server
Did you set S3 settings in Ant Media Server? If you are using 2.3.3, you can set S3 credentials on the dashboard. If not take a look on this guide : https://antmedia.io/how-to-record-streams-to-s3-compatible-systems/ 
This script makes start and stop according to given interval. 

Enes.

Adam Medziński

unread,
Jul 8, 2021, 2:49:40 AM7/8/21
to Ant Media Server
Thanks for the link to the script code it will be useful! Still, I struggle with S3 configuration as we host Ant Media Server on GCP, and we get some cryptic errors when we try to use S3 interoperability endpoint. Do you have any confirmed use cases for S3 integration on GCP?

Enes Kuluk

unread,
Jul 8, 2021, 3:08:13 PM7/8/21
to Ant Media Server
As far as i know S3 integration is platform independent. If you have done the configuration correctly, there should be no issues whatsoever. Also could check the required ports are opened on your end please: https://github.com/ant-media/Ant-Media-Server/wiki/Getting-Started#server-ports

Best Regards,
Enes.

Enes Kuluk

unread,
Jul 12, 2021, 9:09:02 AM7/12/21
to Ant Media Server
Were you able to resolve your issues with S3 saving?
Enes.

Adam Medziński

unread,
Jul 14, 2021, 7:23:57 AM7/14/21
to Ant Media Server
It still fails with following error:

2021-07-14 11:22:05,223 [java-sdk-progress-listener-callback-thread] ERROR i.a.storage.AmazonS3StorageClient - S3 - Error: Upload failed for gbiZzC4FLsL71626261671502-2021-07-14_11-21-51.029.mp4 with key streams/gbiZzC4FLsL71626261671502-2021-07-14_11-21-51.029.mp4
2021-07-14 11:22:05,225 [vert.x-eventloop-thread-0] ERROR i.a.storage.AmazonS3StorageClient - com.amazonaws.services.s3.model.AmazonS3Exception: Invalid argument. (Service: Amazon S3; Status Code: 400; Error Code: InvalidArgument; Request ID: null; S3 Extended Request ID: null; Proxy: null), S3 Extended Request ID: null
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1811)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleServiceErrorResponse(AmazonHttpClient.java:1395)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1371)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1145)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:802)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:770)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:744)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:704)
at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:686)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:550)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:530)
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:5062)
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:5008)
at com.amazonaws.services.s3.AmazonS3Client.access$300(AmazonS3Client.java:394)
at com.amazonaws.services.s3.AmazonS3Client$PutObjectStrategy.invokeServiceCall(AmazonS3Client.java:5950)
at com.amazonaws.services.s3.AmazonS3Client.uploadObject(AmazonS3Client.java:1812)
at com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1772)
at com.amazonaws.services.s3.transfer.internal.UploadCallable.uploadInOneChunk(UploadCallable.java:168)
at com.amazonaws.services.s3.transfer.internal.UploadCallable.call(UploadCallable.java:148)
at com.amazonaws.services.s3.transfer.internal.UploadMonitor.call(UploadMonitor.java:115)
at com.amazonaws.services.s3.transfer.internal.UploadMonitor.call(UploadMonitor.java:45)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)

Enes Kuluk

unread,
Jul 15, 2021, 12:19:33 PM7/15/21
to Ant Media Server
Could you confirm that your credentials and S3 account is setup okey?
Because it is giving status code 400 which might have many meanings.
Best Regards,
Enes.

Reply all
Reply to author
Forward
0 new messages