如何使用VideoToolbox将音频和视频编码为h264格式?

时间:2016-09-30 05:29:14

标签: objective-c swift video-streaming h.264 video-toolbox

我可以使用视频工具箱框架将从相机设备捕获的视频压缩为h264格式,但是当我尝试在VLC播放器中播放该h264文件时,我无法听到视频的音频。我认为音频压缩也应该在代码中完成。

但是我怎么没找到任何资源?

2 个答案:

答案 0 :(得分:0)

回答我自己的赏金。请参考这个很棒的问题答案和评论:

Compute PTS and DTS correctly to sync audio and video ffmpeg C++

尽管那里的解决方案是用C ++实现的,但逻辑可以移植到IOS,因为我已经在我自己的iOS项目中实现了。

答案 1 :(得分:0)

您可以通过以下方式解码录制的视频:-

func encodeReocrdedVideoToH264(url:URL) {
        let anAsset =  AVAsset.init(url: url)// Your source AVAsset movie in HEVC format //
        let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first
        let outputURL = documentsURL?.appendingPathComponent("recording.mp4")

        // These settings will encode using H.264.
        let preset = AVAssetExportPresetHighestQuality
        let outFileType = AVFileType.mov
        AVAssetExportSession.determineCompatibility(ofExportPreset: preset, with: anAsset, outputFileType: outFileType) { (isCompatible) in
            if !isCompatible {
                print("AVAssetExportSession Not Compatible")
                return
            }
        }

        guard let export = AVAssetExportSession(asset: anAsset, presetName: preset) else {
            return
        }
        export.outputFileType = outFileType
        export.outputURL = outputURL
        export.exportAsynchronously { () -> Void in
            // Handle export results.
            print("exportAsynchronously Succesuffully")
        }
    }

您可以在outputURL上看到编码的视频。

有关更多信息,请检查Apple's doc