iosswiftxcodechunksavasset

How to split large video as chunks by each size of 5 MB, Swift


I'm working on Video upload process, need to upload large video as multiple chunks. Each chunks should be the size of 5 MB.

Please share the code for converting large video to multiple chunks under size of 5 MB each in swift. Any help is much appreciated


Solution

  • Try this,

        let selectedSize = selectedVideoSizeInMB
        let seconds = durationInSeconds
        print("Size", selectedSize)
        print("Seconds", seconds)
        
        let splitDuration: Int = Int(seconds / (selectedSize/5))
        print("Split Duration", splitDuration)
        
        do {
            let data = try Data(contentsOf: videoUrl)
            let dataLen = data.count
            print("Data Size", data.count)
            let chunkSize = ((1024 * 1000) * 5) // MB
            print("Chunk Size", chunkSize)
            let fullChunks = Int(dataLen / chunkSize)
            let totalChunks = fullChunks + (dataLen % 1024 != 0 ? 1 : 0)
            print("Chunk count", totalChunks)
            
            var chunks:[Data] = [Data]()
            for chunkCounter in 0..<totalChunks {
                var chunk:Data
                let chunkBase = chunkCounter * chunkSize
                var diff = chunkSize
                if(chunkCounter == totalChunks - 1) {
                    diff = dataLen - chunkBase
                }
                
                let range:Range<Data.Index> = chunkBase..<(chunkBase + diff)
                chunk = data.subdata(in: range)
                chunks.append(chunk)
                print("The size is \(chunk.count)")
            }
            self.chunksDataArray = chunks
            print("Total Chunk", chunks.count)
        }catch{
            return
        }