This commit is contained in:
shogo4405 2020-05-24 15:01:01 +09:00
parent c90e31cdeb
commit 8315d6eee1
4 changed files with 49 additions and 2 deletions

View File

@ -359,6 +359,10 @@
BC4C9EAF23F2E736004A14F2 /* AudioStreamBasicDescription+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC4C9EAE23F2E736004A14F2 /* AudioStreamBasicDescription+Extension.swift */; };
BC4C9EB023F2E736004A14F2 /* AudioStreamBasicDescription+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC4C9EAE23F2E736004A14F2 /* AudioStreamBasicDescription+Extension.swift */; };
BC4C9EB123F2E736004A14F2 /* AudioStreamBasicDescription+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC4C9EAE23F2E736004A14F2 /* AudioStreamBasicDescription+Extension.swift */; };
BC4DAEB12479851D005EFD57 /* FilenameUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC4DAEB02479851D005EFD57 /* FilenameUtil.swift */; };
BC4DAEB22479851D005EFD57 /* FilenameUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC4DAEB02479851D005EFD57 /* FilenameUtil.swift */; };
BC4DAEB32479851D005EFD57 /* FilenameUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC4DAEB02479851D005EFD57 /* FilenameUtil.swift */; };
BC4DAEB524798ABE005EFD57 /* FilenameUtilTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC4DAEB424798ABE005EFD57 /* FilenameUtilTests.swift */; };
BC558268240BB40E00011AC0 /* RTMPStreamInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC558267240BB40E00011AC0 /* RTMPStreamInfo.swift */; };
BC558269240BB40E00011AC0 /* RTMPStreamInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC558267240BB40E00011AC0 /* RTMPStreamInfo.swift */; };
BC55826A240BB40E00011AC0 /* RTMPStreamInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC558267240BB40E00011AC0 /* RTMPStreamInfo.swift */; };
@ -656,6 +660,8 @@
29FD1B4F22FF13190095A0BE /* VTSessionPropertyKey.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VTSessionPropertyKey.swift; sourceTree = "<group>"; };
BC44A1A823D31E92002D4297 /* AudioConverter.AudioBuffer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AudioConverter.AudioBuffer.swift; sourceTree = "<group>"; wrapsLines = 1; };
BC4C9EAE23F2E736004A14F2 /* AudioStreamBasicDescription+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AudioStreamBasicDescription+Extension.swift"; sourceTree = "<group>"; };
BC4DAEB02479851D005EFD57 /* FilenameUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FilenameUtil.swift; sourceTree = "<group>"; };
BC4DAEB424798ABE005EFD57 /* FilenameUtilTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FilenameUtilTests.swift; sourceTree = "<group>"; };
BC558267240BB40E00011AC0 /* RTMPStreamInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RTMPStreamInfo.swift; sourceTree = "<group>"; };
BC83A4722403D83B006BDE06 /* VTCompressionSession+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "VTCompressionSession+Extension.swift"; sourceTree = "<group>"; };
BC9CFA9223BDE8B700917EEF /* NetStreamRenderer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetStreamRenderer.swift; sourceTree = "<group>"; };
@ -768,6 +774,7 @@
2976A4851D4903C300B53EF2 /* DeviceUtil.swift */,
2901A4ED1D437170002BBD23 /* DisplayLinkedQueue.swift */,
29B876BA1CD70B3900FC07DA /* EventDispatcher.swift */,
BC4DAEB02479851D005EFD57 /* FilenameUtil.swift */,
2926A9EB1DE6B71D0074E3D2 /* MachUtil.swift */,
2942424C1CF4C01300D65DCB /* MD5.swift */,
2942A4F721A9418A004E1BEE /* Running.swift */,
@ -811,6 +818,7 @@
2940EF4E2380116500430456 /* CircularBufferTests.swift */,
290EA8A51DFB61E700053022 /* CRC32Tests.swift */,
290EA8A61DFB61E700053022 /* EventDispatcherTests.swift */,
BC4DAEB424798ABE005EFD57 /* FilenameUtilTests.swift */,
290EA8A71DFB61E700053022 /* MD5Tests.swift */,
29F97F232336A4FA00A4C317 /* SettingTests.swift */,
290EA8A81DFB61E700053022 /* TimerDriverTests.swift */,
@ -1656,6 +1664,7 @@
BC558268240BB40E00011AC0 /* RTMPStreamInfo.swift in Sources */,
298BCF331DD4C44A007FF86A /* AnyUtil.swift in Sources */,
29B876B01CD70B2800FC07DA /* RTMPConnection.swift in Sources */,
BC4DAEB12479851D005EFD57 /* FilenameUtil.swift in Sources */,
295891221EEB8EC500CE51E1 /* FLVAVCPacketType.swift in Sources */,
29B876B61CD70B2800FC07DA /* RTMPStream.swift in Sources */,
29EA87EA1E79A3B70043A5F8 /* CMBlockBuffer+Extension.swift in Sources */,
@ -1742,6 +1751,7 @@
290EA8931DFB617800053022 /* HTTPRequestTests.swift in Sources */,
2976077F20A89FBB00DCF24F /* RTMPMessageTests.swift in Sources */,
290EA8A11DFB61B100053022 /* RTMPChunkTests.swift in Sources */,
BC4DAEB524798ABE005EFD57 /* FilenameUtilTests.swift in Sources */,
290EA89F1DFB61B100053022 /* AMF0SerializerTests.swift in Sources */,
290EA8AA1DFB61E700053022 /* CRC32Tests.swift in Sources */,
035AFA042263868E009DD0BB /* RTMPStreamTests.swift in Sources */,
@ -1763,6 +1773,7 @@
2943ED54232FCA7C00ED6301 /* Setting.swift in Sources */,
292AC17C1CF4C871004F5730 /* MD5.swift in Sources */,
2958910B1EEB8D1800CE51E1 /* FLVReader.swift in Sources */,
BC4DAEB22479851D005EFD57 /* FilenameUtil.swift in Sources */,
295747921E3A30A400EF056E /* RTMPStreamDelegate.swift in Sources */,
29B876F41CD70D5900FC07DA /* DataConvertible.swift in Sources */,
2916196D1E7F0777009FB344 /* CMFormatDescription+Extension.swift in Sources */,
@ -1958,6 +1969,7 @@
29EB3E171ED05893001CAE8B /* NetClient.swift in Sources */,
BC4C9EB123F2E736004A14F2 /* AudioStreamBasicDescription+Extension.swift in Sources */,
2958912C1EEB8F1D00CE51E1 /* FLVSoundSize.swift in Sources */,
BC4DAEB32479851D005EFD57 /* FilenameUtil.swift in Sources */,
295891241EEB8EC500CE51E1 /* FLVAVCPacketType.swift in Sources */,
299D6A532051A9920090E10A /* MTHKView-tvOS.swift in Sources */,
2943ED55232FCA7C00ED6301 /* Setting.swift in Sources */,

View File

@ -299,7 +299,7 @@ open class RTMPStream: NetStream {
mixer.videoIO.encoder.startRunning()
sampler?.startRunning()
if howToPublish == .localRecord {
mixer.recorder.fileName = info.resourceName
mixer.recorder.fileName = FilenameUtil.fileName(resourceName: info.resourceName)
mixer.recorder.startRunning()
}
default:
@ -424,7 +424,7 @@ open class RTMPStream: NetStream {
if self.info.resourceName == name && self.readyState == .publishing {
switch type {
case .localRecord:
self.mixer.recorder.fileName = self.info.resourceName
self.mixer.recorder.fileName = FilenameUtil.fileName(resourceName: self.info.resourceName)
self.mixer.recorder.startRunning()
default:
self.mixer.recorder.stopRunning()

View File

@ -0,0 +1,19 @@
import Foundation
struct FilenameUtil {
static func fileName(resourceName: String?) -> String? {
guard var result = resourceName else {
return nil
}
if let value = result.split(separator: "?").first {
result = String(value)
}
if let value = result.split(separator: "/").last {
result = String(value)
}
if result.count < Int(FILENAME_MAX) {
return result
}
return String(result[..<result.index(result.startIndex, offsetBy: Int(FILENAME_MAX))])
}
}

View File

@ -0,0 +1,16 @@
import Foundation
import XCTest
@testable import HaishinKit
final class FilenameUtilTest: XCTestCase {
func testMain() {
print(FILENAME_MAX)
XCTAssertEqual("bar", FilenameUtil.fileName(resourceName: "/foo/bar?hogehoge"))
XCTAssertEqual("hoge", FilenameUtil.fileName(resourceName: "hoge?foobar"))
XCTAssertEqual(
"ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJ",
FilenameUtil.fileName(resourceName: "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOP")
)
}
}