chore: outsource functions to own utils file
This commit is contained in:
49
ios/Video/Features/RCTVideoTVUtils.swift
Normal file
49
ios/Video/Features/RCTVideoTVUtils.swift
Normal file
@@ -0,0 +1,49 @@
|
||||
import Foundation
|
||||
import AVFoundation
|
||||
import AVKit
|
||||
|
||||
/*!
|
||||
* Collection of helper functions for tvOS specific features
|
||||
*/
|
||||
|
||||
#if os(tvOS)
|
||||
enum RCTVideoTVUtils {
|
||||
static func makeNavigationMarkerGroups(_ chapters: [Chapter]) -> [AVNavigationMarkersGroup] {
|
||||
var metadataGroups = [AVTimedMetadataGroup]()
|
||||
|
||||
// Iterate over the defined chapters and build a timed metadata group object for each.
|
||||
chapters.forEach { chapter in
|
||||
metadataGroups.append(makeTimedMetadataGroup(for: chapter))
|
||||
}
|
||||
|
||||
return [AVNavigationMarkersGroup(title: nil, timedNavigationMarkers: metadataGroups)]
|
||||
}
|
||||
|
||||
static func makeTimedMetadataGroup(for chapter: Chapter) -> AVTimedMetadataGroup {
|
||||
var metadata = [AVMetadataItem]()
|
||||
|
||||
// Create a metadata item that contains the chapter title.
|
||||
let titleItem = RCTVideoUtils.createMetadataItem(for: .commonIdentifierTitle, value: chapter.title)
|
||||
metadata.append(titleItem)
|
||||
|
||||
// Create a time range for the metadata group.
|
||||
let timescale: Int32 = 600
|
||||
let startTime = CMTime(seconds: chapter.startTime, preferredTimescale: timescale)
|
||||
let endTime = CMTime(seconds: chapter.endTime, preferredTimescale: timescale)
|
||||
let timeRange = CMTimeRangeFromTimeToTime(start: startTime, end: endTime)
|
||||
|
||||
// Image
|
||||
if let imgUri = chapter.uri,
|
||||
let uri = URL(string: imgUri),
|
||||
let imgData = try? Data(contentsOf: uri),
|
||||
let image = UIImage(data: imgData),
|
||||
let pngData = image.pngData()
|
||||
{
|
||||
let imageItem = RCTVideoUtils.createMetadataItem(for: .commonIdentifierArtwork, value: pngData)
|
||||
metadata.append(imageItem)
|
||||
}
|
||||
|
||||
return AVTimedMetadataGroup(items: metadata, timeRange: timeRange)
|
||||
}
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user