gpt4 book ai didi

iOS Swift - 将视频剪切成多个部分

转载 作者:搜寻专家 更新时间:2023-11-01 07:27:44 24 4
gpt4 key购买 nike

我正在开发一个将录制的视频上传到服务器的应用程序,但它必须分多个部分发送并编码为 base64。

如何使用 swift 将视频拆分/剪切成多个部分?

最佳答案

首先转换为NSData,然后将该数据分成不同的不同 block ,然后使用base64将该 block 编码发送到服务器端。

现在,下面是相同的示例代码。

import UIKit
import MobileCoreServices
import Foundation

extension String {
var ns: NSString {
return self as NSString
}
var pathExtension: String? {
return ns.pathExtension
}
var lastPathComponent: String? {
return ns.lastPathComponent
}
}

// MARK: - Mixed string utils and helpers
extension String {


/**
Encode a String to Base64

:returns:
*/
func toBase64()->String{

let data = self.dataUsingEncoding(NSUTF8StringEncoding)

return data!.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))

}
}

class ViewController: UIViewController,UINavigationControllerDelegate, UIImagePickerControllerDelegate {

@IBOutlet var img:UIImageView!=nil

override func viewDidLoad() {
super.viewDidLoad()
}

override func didReceiveMemoryWarning()
{
super.didReceiveMemoryWarning()
}

@IBAction func buttonTapped()
{
if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.PhotoLibrary)
{
// print("Camera Available")
let imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary;
imagePicker.allowsEditing = false
imagePicker.mediaTypes = [kUTTypeMovie as String]
self.presentViewController(imagePicker, animated: true, completion: nil)
}
}


func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]){
dismissViewControllerAnimated(true, completion: nil)

let videoUrl = info[UIImagePickerControllerMediaURL] as! NSURL!
let pathString = videoUrl.relativePath
print(pathString)

let videoDataURL = info[UIImagePickerControllerMediaURL] as! NSURL!
let videoFileURLs = videoDataURL.filePathURL

let chunkSize : Int = 2*1024*1024 // 2 MB
do {
let videoData = try NSData(contentsOfURL: videoFileURLs!, options: .DataReadingMappedIfSafe)
var newFileName = pathString!.pathExtension
let totalSizeOfBase64 : Int = Int(videoData.length)
for var chunksWritten :Int = 0; chunksWritten * chunkSize < totalSizeOfBase64; chunksWritten++
{
let modifiedURLString = NSString(format:" %03lu.MOV", chunksWritten) as String
newFileName = newFileName!+modifiedURLString

let rangeValue = NSMakeRange(chunksWritten * chunkSize, min(chunkSize, totalSizeOfBase64 - chunksWritten * chunkSize))
let finalString = videoData.subdataWithRange(rangeValue)

//Encoding Base64
let base64String = finalString.base64EncodedStringWithOptions(.Encoding64CharacterLineLength)

print("\(base64String)")
// print("\(newFileName)")
newFileName = pathString!.pathExtension
}
} catch let error as NSError {
print(error.localizedDescription)
}
}
}

希望这对您有帮助。

关于iOS Swift - 将视频剪切成多个部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34849947/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com