LoginSignup
3
2

More than 1 year has passed since last update.

NatCorderを使ってハマった罠が深いようで浅かった

Posted at

概要

つい最近NatCorderというアセットが無料化!?というニュースが一部界隈を騒がせました
(ただし最新版はサブスクリプション契約でしか使えないよ!)
NatCorderは画面収録のアセットでネイティブな実装がゴリゴリでパフォーマンスがサクサクのスーパークールなアセットです

これは早速使ってみるしかない!!ということで使った結果、見事に罠にハマったので
これから増えるであろう利用者のために備忘録として残しておきます
実装方法などはドキュメントが充実しているので解説しません

検証環境

  • iPhone6s
  • iOS 14

結論

使ってる端末がエンコードできるRecorderを利用しよう!!!

経緯

🤔NatCorderで動画(音有り)を撮るためのRecorderがある

  • MP4Recorder
  • HEVCRecorder

MP4とHEVCってなんだ?と思って調べてみたところ
なんかよくわからんけどHEVCがオススメらしい Yahoo知恵袋に書いてたから間違いない
MP4はよく聞いた事あるけどHEVCってカッコいい響きだし玄人向けなんだろう

😄HEVCRecorderを使って画面収録をした

エディタでUnityRecorderを使ったことがある諸兄はわかると思うが画面収録をしながら実行すると結構重い
それが当たり前だと思ってたら、NatCorderの画面収録はエディタでの動作に何一つ影響を及ぼさない!!!
なんてすごいんだ!!録画もできてる!!!

💀iOSビルドをして実機での動作を見てみた

実行中も快適、流石に古い端末だから少しパフォーマンスに影響は出ているが問題のない範囲だった
脳内では勝利のBGMが流れていた
部屋には勝利の美酒も用意していた

保存ボタンを押そうとしたそのとき、端末は物言わぬホーム画面を映し出した
一体なにが起こったんだ…?

💀IMediaRecorder.FinishWritingで失敗している

エラーが起きた時に原因を調べるのはエンジニアの習性の一つなのでエンジニアの端くれとして
伝家の宝刀Debug.Logを使用してエラーが起きている箇所の原因を探ってみた

すると、画面収録したデータをエンコードしている部分でクラッシュしていることがわかった
ふむふむ、なるほどなるほど、つまり画面収録したデータをエンコードしている部分でクラッシュしているんだな

……?

💀なぜ?

パーミッションの確認に必要なものは全て設定済みだしOSバージョンも新しめだ
ドキュメントを見ても動作に必要な環境は満たしているように見える

image.png

😇調べまくり人に聞きまくりの結果、原因がわかった

iPhone6sってHEVCのエンコードに対応してたっけ?

ふむ iPhone HEVC エンコード 検索……
それっぽい記事があるぞ

image.png

image.png

!!!!!!!

😄ということでiPhoneのデバイス世代で利用するRecorderを変えた

実機での動作検証をして無事に動画の保存に成功!!

終わりに

実機のログをよく見てみるとこんなエラーが出ていたけど何語かわからなかったのでスルーしていた

NatCorder Error: HEVCRecorder failed to finish writing with error Error Domain=AVFoundationErrorDomain Code=-11834 

AVFoundationErrorDomain Code=-11834で検索をかけるとこんなサイトが出てきた

image.png

EncoderNotFound

エラーコードをちゃんと読んで然るべき検索をすれば答えには辿りつけていたはずだった
エラーコードはしっかり読もう!!!!

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2