ホーム

AVFoundationで描画した動画の中に文字やイメージを挿入する

 

環境

  • Swift
  • swift
  • Swift3.0
  • swift3.0
  • Xcode8
  • XCODE
  • AVFoundation
  • AVURLAsset

実行

on.gif

説明

AVFoundationでViewに描画した動画に丸を挿入してみます。

import UIKit
import AVFoundation

class ViewController: UIViewController {

    //動画のURLを定義
    var url: URL = {
        var url = URL(string: "http://160.16.120.119/jj.m4v")
        return url!
    }()


     /*
     下記から動画画面の実装
     */
    lazy var asset: AVURLAsset = {
        var asset: AVURLAsset = AVURLAsset(url: self.url)
        asset.resourceLoader.setDelegate(self, queue: DispatchQueue.main)
        return asset
    }()


    lazy var playerItem: AVPlayerItem = {
        var playerItem: AVPlayerItem = AVPlayerItem(asset: self.asset)
        return playerItem
    }()


    lazy var player: AVPlayer = {
        var player: AVPlayer = AVPlayer(playerItem: self.playerItem)
        player.actionAtItemEnd = AVPlayerActionAtItemEnd.none
        return player
    }()


    //動画の画面
    lazy var playerLayer: AVPlayerLayer = {
        var playerLayer: AVPlayerLayer = AVPlayerLayer(player: self.player)
        playerLayer.frame = CGRect(x: 0, y: 0, width: 50, height: 580)
        //CGRect(x: 0, y: 0, width: 100, height: 100)
        //UIScreen.main.bounds
        playerLayer.backgroundColor = UIColor.clear.cgColor

        let ovalShapeLayer = CAShapeLayer()
        ovalShapeLayer.strokeColor = UIColor.blue.cgColor  // 輪郭は青
        ovalShapeLayer.fillColor = UIColor.clear.cgColor  // 塗りはクリア
        ovalShapeLayer.lineWidth = 1.0
        ovalShapeLayer.path = UIBezierPath(ovalIn: CGRect(x:30, y:30, width:50, height:50)).cgPath
        //self.view.layer.addSublayer(ovalShapeLayer)

        playerLayer.addSublayer(ovalShapeLayer)

        return playerLayer
    }()


    override func viewDidLoad() {
        super.viewDidLoad()

        view.layer.addSublayer(playerLayer)
        player.play()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}

extension ViewController : AVAssetResourceLoaderDelegate {
}
Pocket
LinkedIn にシェア

  • この記事を書いた人

藤沢瞭介(Ryosuke Hujisawa)

りょすけと申します。18歳からプログラミングをはじめ、今はフロントエンドでReactを書いたり、AIの勉強を頑張っています。off.tokyoでは、ハイテクやガジェット、それからプログラミングに関する情報まで、エンジニアに役立つ情報を日々発信しています!

1
2
no image 3
4
5
6
7
8
9
10
no image 11
12
13
14
15
16
17
18
19
20
21
22
23

-ホーム