I'm trying to use chunked uploads to "stream" a video file up to Dropbox as it's being recorded.
I start the upload a few seconds after the video recording starts, in order to prevent the upload from ever catching up to the end of the video file.
When I stop recording before the chunked upload starts, everything works fine.
But if I stop recording after the upload starts, everything appears to work correctly, but the resulting movie file is corrupted.
Are chunked uploads of an open (and expanding) file not supported?
Related
I am trying to upload a 200MB video file, and it seems that the upload stops after the progress reaches 6.4%, and the final file is not displayed in the chat.
use app.send_video() funtion
I am downloading a video from remote server. while download in progress what ever data downloaded in current(not full download), I want to play that data in a video player. if the file size is 10 MB, when I start download if 0.5 Mb downloaded I want to play that 0.5MB video, while downloading It has to play. I dont' want to stream, because next time I can play it from local file.
is there any video player available in iOS?.
Whatever you are asking for is called a progressive download, which is performed over HTTP protocol (RTSP is for streaming) and HTTP server is required (instead of Streaming server).
You can play the progressive download streaming from a simple java server https://github.com/mooncatventures-group/StreamX
iOS devices support HTTP progressive download for .mp4 files..
I am developing music iOS app in which I am fetching audio file from server in bytes format and save in device in mp3 format. So when I am going to play audio file it is working fine. In some cases Audio file is DRM secured on server. I have one password but don't know how to use it.
My question is how to save and play DRM secured file?
Problem:
I need to download mp4 video from media server and simultaneously feed the localhost httpserver (GCDWebServer) to enable video streaming.
What have i tried so far:
I am able to download a video file from media server and then provide the localhost url for streaming the video.
But this takes a lot of time in downloading. So i wanted to know if there is a way i can segment the video on the fly and keep updating the m3u8 file as and when my next segment is ready.
Ok, Why downloading? Basically i need to deal with a custom encrypted video file. So i need to download, then decrypt the stream and then feed to my local httpserver.
I hope i'm clear in the requirements.
We've got an app we're working on that needs to provide playback of video files via AVPlayer. The files need to be stored on the user's device, but also must playback while downloading.
At the moment we've built a download module that uses the ASIHTTPRequest library to get the video files via PHP (we don't want the media to be linkable via public URLs) and write them to disk asynchronously.
We've then setup an AVPlayer as per the AV Foundation Programming Guide, getting the file with AVURLAsset, making an AVPlayerItem with the asset, building the AVPlayer with the item, then setting the player to an AVPlayerLayer. The player runs fine with a fully downloaded video file and will also run a progressively downloaded file perfectly well in the simulator.
Unfortunately on an actual device, the behavior of the player changes, where instead it seemingly loads the video once and doesn't attempt to grab new packets from disk. The result is that the player will play video and audio up to the point in the video that marks where the download progress was at the time the asset was loaded (e.g. if 2MB of data are buffered then the player is created, the player will only play up to the 2MB worth of data). Because it has the video's header, the player will happily continue thinking it's playing for the full duration of the video, but no other video is rendered to screen.
The last wrinkle is that if the video is inserted into an AVComposition and the AVPlayer is created with that, the progressive video will play fine. This would be a fine solution (and is necessary for our app anyway on occasion) except that the client for our app requires that the video be playable on an Apple TV via AirPlay, which AVCompositions are incapable of.
Does anyone know if there is a way to play progressively downloading video files using an AVPlayer built from AVURLAssets? Is there a way to force the player/playerItem to read from disk with an AVURLAsset the way it seems to do with an AVComposition instead of seemingly caching the video in memory?
Thanks!
I haven't a solution to just make it work wit AVURLAssets but I use a slightly different approach. We bundle our App with CocoaHTTPServer and play video files which aren't fully downloaded trough a HTTP request against the local server.
The server knows the total length of the file and can then decide by looking at the HTTP-Headers which part of the file is request and either loads it from disk or from remote source.
While developing this there where always 3 initial requests, one for the first two bytes of the file, one of a larger chunk from the beginning of the file and one chunk directly of the end of the file. That's why it was always needed to load at least the last part directly from the remote server since the player would need it right from the start. I would guess the same happens for local files so the player loads the last bytes from the file (which aren't the right last bytes) and won't play over that length.
You would have to subclass HTTPConnection and make your own HTTPResponse class by looking at the provided "HTTPAsyncFileResponse".
I hope this gives you an idea how to accomplish this with a different approach.