Skip to content

William-Weng/WWStreamPlayer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Swift-5.7 iOS-16.0 TAG Swift Package Manager-SUCCESS LICENSE

Example.mp4
dependencies: [
    .package(url: "https://github.com/William-Weng/WWStreamPlayer.git", .upToNextMajor(from: "0.6.2"))
]

可用函式 (Function)

函式 功能
ffmpegVersion() 使用的FFMpeg編譯版本
duration(at:) 取得本地端影片長度
frame(at:second:) 取得本地端影音該時段的畫面
thumbnails(at:count:) 產生本地端影音縮圖 (平均時間)
playVideo(at:frame:failure:completion:) 播放RTSP串流 (使用frame圖片)
playVideo(at:displayLayer:elapseTime:failure:completion:) 播放RTSP串流 (使用AVSampleBufferDisplayLayer)
playVideo(at:pixelBuffer:failure:completion:) 播放RTSP串流 (使用CVPixelBuffer for MetalKit)
stopVideo(for:) 停止播放
playAudio(at:bufferSize:result:) 播放聲音串流
stopAudio() 停止播放聲音串流

Example

final class ViewController: UIViewController {
    
    @IBOutlet weak var ffmpegVersionLabel: UILabel!
    @IBOutlet weak var videoTimeLabel: UILabel!
    @IBOutlet weak var videoImageView: UIImageView!
    
    private let rtsp = "rtsp://192.168.4.141:8554/mystream"    
    private let streamPlayer: WWStreamPlayer = .init()

    private var pcmData: Data = .init()
    
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        ffmepgVersion()
    }
    
    @IBAction func playVideo(_ sender: UIBarButtonItem) {
        playRtspSteam(at: rtsp)
    }
}

private extension ViewController {
        
    func ffmepgVersion() {
        let version = streamPlayer.ffmpegVersion()
        ffmpegVersionLabel.text = "FFMpeg: \(version)"
    }
    
    func playRtspSteam(at urlString: String) {
        
        guard let url = URL(string: urlString) else { return }
        
        streamPlayer.stopVideo(for: .image)
        
        streamPlayer.playVideo(at: url, frame: { [unowned self] image, elapseTime in
            videoTimeLabel.text = "\(CMTimeGetSeconds(elapseTime))"
            videoImageView.image = image
        })
        
        streamPlayer.playAudio(at: url)
    }
}
mediamtx
ffmpeg -re -stream_loop -1 -i BigBuckBunny.mp4 -c:v libx264 -preset veryfast -tune zerolatency -pix_fmt yuv420p -c:a aac -ac 2 -ar 44100 -b:a 128k -flags:a +global_header -f rtsp rtsp://localhost:8554/mystream
# mediamtx.yml
paths:
  all:
    # 任何 client 都可以當 publisher(ffmpeg、OBS 等)
    source: publisher

About

Use FFMpeg to play RSTP streaming videos.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors