短视频系统源码开发,短视频内容压缩的实现

在短视频系统源码的流媒体传输过程中,为了提升音视频数据的传输效率,肯定是要进行编码压缩的,今天我们就一起来看一下短视频压缩时如何实现的吧。

一、视频压缩

视频压缩实际上是一种视频格式的转换、苹果原生录制的视频通过此方法可以压缩为原来的1/8 ~ 1/9左右。
创建AVURLAsset

 // 视频来源
    let videoInputUrl = NSURL.fileURLWithPath(NSBundle.mainBundle().pathForResource("Daid", ofType: "mp4")!)
    // 视频采集
    let videoAsset = AVURLAsset(URL: videoInputUrl, options: nil)

创建输出路径

 // 最终合成输出路径
        let name = currentTimeStamp() + ".mp4"
        let temporaryFile = (NSTemporaryDirectory() as NSString).stringByAppendingPathComponent(name)

        print(temporaryFile)
        let outputFileUrl = NSURL(fileURLWithPath: temporaryFile)

其中,currentTimeStamp()为时间戳字符串,防止重复。

//时间戳
func currentTimeStamp()->String {
    let now = NSDate()
    let dformatter = NSDateFormatter()
    dformatter.dateFormat = "yyyy年MM月dd日 HH:mm:ss"
    print("当前日期时间:\(dformatter.stringFromDate(now))")
    //当前时间的时间戳
    let timeInterval:NSTimeInterval = now.timeIntervalSince1970
    let timeStamp = Int(timeInterval)

    return String(timeStamp)

}

这时创建AVAssetExportSession

 // 创建一个输出
    let assetExport = AVAssetExportSession(asset: videoAsset, presetName: AVAssetExportPresetMediumQuality)
    // 输出类型
    assetExport!.outputFileType = AVFileTypeQuickTimeMovie
    // 输出地址
    assetExport!.outputURL = outputFileUrl
    // 优化
    assetExport!.shouldOptimizeForNetworkUse = true
    // 合成完毕
    assetExport!.exportAsynchronouslyWithCompletionHandler({() -> Void in
        // 回到主线程
        dispatch_async(dispatch_get_main_queue(), {() -> Void in
            // 调用播放方法
            self.playWithUrl(outputFileUrl)
            let fileSize = try! NSFileManager.defaultManager().attributesOfItemAtPath(temporaryFile)[NSFileSize] as? NSNumber
            let recordSize = (fileSize?.integerValue)!/1024
            print(recordSize)
        })
    })

短视频系统源码开发,短视频内容压缩的实现到此完毕。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值