Cloudflare Stream Beta Feedback



I do not know who to best send this info (maybe @andys or @ppham or @ryan), but while downloading a ~750MB file to Stream it takes way too much time!

Tens of minutes on a 300Mbps upload connection (full speed towards the closest POP, where also Google Drive resides with full speed as well) it’s way too much.

Attaching speedtest:


I’m reaching out to some of the Stream folks now to get more info. Stay tuned!


@matteo - that is expected for now given where the video is being stored. Should only impact the upload (not the playback) but it’s something they are working on.


Agreed! Playback seems to not be impacted. It was strange given how used I was at seeing files upload in seconds ahahah



Hello !

I’ve recently created an iOS app that uses TUSKit to send videos to Cloudflare. I’ve run into a problem that I do not understand… Some of the files I use to test work but then there’s a few that don’t and I don’t understand why.

The upload process seems to work well to the end, but when the progress hits 100% and I receive the response from the server, it’s statusCode is 413. Everytime. I’ve tried the same file with the client and that works nicely with no problems. Also trying to send the file to a localhost server or the works, so it’s not an issue with the TUSKit client? Though TUSKit doesn’t support chunkSizes yet…

The file in question is a 94mb file thats 47mins long, it has a lot of black (phone was facing the desk…) so the compression is nice. One file that works always is a 104mb file for 57 seconds long.

What could I try next?

Cheers, Pete


The issue I had was fixed with implementing chunked uploading in TUSKit (there is a PR created for TUSKit thats pending review)


Is there currently no way to protect the video content?

Anyone can grab the stream id and distribute that anywhere they want.

Other people can just copy paste the url into their unauthorized browser and watch any content.


It doesn’t look like there’s currently a way to protect content. Then again, it’s just a basic video host. It does prevent embedding on other domains if you so specify.


Hello. How to delete or edit several videos by one move?


I have issue. Player doesn’t work with such options:
Show controls Off
Preload video On
Autoplay On
Loop On
Mute Off


Yep. Looking into this. Thanks for this @square.guy.990


How do you guys plan on tackling the usage analytics problem when people do not use your built-in player and opt to use their own player?

Since the built-in player is responsible for providing usage analytics, you will have users that rack up far more actual usage than their analytics page shows.


1.) Setting “localhost” (without the quotes) for the whitelist domain does not work. Still get denied when I’m working on localhost:2000 trying to test uploaded video. The current workaround is to whitelist internal network IP such as “” and wait a few minutes for the whitelist to take effect. This is a bit annoying because historically I’ve always used localhost.
(EDIT July 23rd: Setting “localhost:2000” works. CORS is allowed by remote cloudflare video server. Just plain “localhost” still does not work because localhost != localhost:2000, despite what the developer documentation says about localhost being universal.)

2.) Video ingest server is quite slow when uploading via the Dashboard. It takes uploads of half an hour to an hour just to upload a 2 GB video file. I suggest doing what Zencoder/AWS/everyone-else does by accepting a signed URL string as input. Your ingest server can quickly consume the contents of that URL in seconds and also alleviates all the upload work from the uploader client. Also instead of transcoding on-the-fly during the ingest stage, just wait until the ingest is finished then byte-split the video into N chunks. Send N chunks to N transcoding machines for processing. This is how Zencoder achieves faster than realtime encoding/transcoding.
(EDIT July 23rd: I believe the reason why Dashboard upload is slow is because of the small chunk size. Using tus-js-client on Node.js env I can upload pretty good almost capping out the 1gbps network upload limit if I set the chunkSize to something much bigger like ~200 MBs)


Is the /zone_id/:zone_id/media endpoint going to receive support for pagination? I realize this product is still in Beta so likely all the bells and whistles arent implemented, but the official Cloudflare API documentation currently states GET /media does support pagination – but it really does not.

I tested by uploading about ~28 vids and still no pagination data in json reply despite trying:
GET /media
GET /media?page=0&per_page=2
GET /media?page=1&per_page=2
GET /media?page=1&per_page=24
GET /media?page=0&per_page=24

It’s fine if we get the entirety of our videos archive but my organization is planning for the long haul, which means protentially millions or billions of items could be returned in one API call. 0_0


A post was split to a new topic: 403 Error on Upload


Would someone be help to offer some light on the following?

How to async embed Cloudflare Stream videos in an SPA? The reason I ask is because if we load the embed script twice it will throw an error, but I haven’t see any way to manipulate its API.


Any help?



I noticed Cloudflare Stream doesn’t allow manual quality adjustments yet, but I saw that videos are streamed from this URL[video_id]/video/[video_quality]/[video_segment].m4s.

Is it against Cloudflare’s rules to manually add this feature into my video player while using Stream?



I’m also interested in this! I really want to use this service and be able to both download the encoded videos to my own (cheaper) storage solution, as well as select the specific versions of the encodings to display rather than having to use the embedded player or try to switch everything to HLS. I want my mobile users to have the best experience first and foremost, so let me select the lowest bitrate/resolution by default and allow me to change it for them to a higher bitrate only when they click a toggle option.


Is it possible to retrieve the list of encoded files/quality levels and then download them individually?