-
Author fragmented MPEG-4 content with AVAssetWriter
Transform your audio and video content into fragmented MPEG-4 files for a faster and smoother HLS streaming experience. Learn how to work with the fragmented MPEG-4 format, generate fragmented content from a movie, and set up AVAssetWriter to create fragments for HLS output.
Recursos
-
Buscar este video…
-
-
5:36 - Instantiate AVAssetWriter and input
// Instantiate asset writer let assetWriter = AVAssetWriter(contentType: UTType(AVFileType.mp4.rawValue)!) // Add inputs let videoInput = AVAssetWriterInput(mediaType: .video, outputSettings: compressionSettings) assetWriter.add(videoInput) -
6:28 - Configure AVAssetWriter
assetWriter.outputFileTypeProfile = .mpeg4AppleHLS assetWriter.preferredOutputSegmentInterval = CMTime(seconds: 6.0, preferredTimescale: 1) assetWriter.initialSegmentStartTime = myInitialSegmentStartTime assetWriter.delegate = myDelegateObject -
8:00 - Delegate methods
optional func assetWriter(_ writer: AVAssetWriter, didOutputSegmentData segmentData: Data, segmentType: AVAssetSegmentType) optional func assetWriter(_ writer: AVAssetWriter, didOutputSegmentData segmentData: Data, segmentType: AVAssetSegmentType, segmentReport: AVAssetSegmentReport?) -
8:37 - AVAssetSegmentType
public enum AVAssetSegmentType : Int { case initialization = 1 case separable = 2 } -
13:45 - Custom segmentation
// Set properties assetWriter.outputFileTypeProfile = .mpeg4AppleHLS assetWriter.preferredOutputSegmentInterval = .indefinite assetWriter.delegate = myDelegateObject // Passthrough let videoInput = AVAssetWriterInput(mediaType: .video, outputSettings: nil) -
15:17 - Audio has dependencies
extension AVAssetTrack { /* indicates whether this audio track has dependencies (e.g. kAudioFormatMPEGD_USAC) */ open var hasAudioSampleDependencies: Bool { get } }
-