カテゴリー: IDE・ツール・ライブラリ関連

VLCのプレイリスト(XSPF)に間隔(ギャップ)を挿入する方法

Adding pause between audio tracks in VLC
Inserting a PAUSE in a VLC Playlist

以上(・∀・)
 
 
 
 
 
 
 
 
  
 
 
 
 


というのは余りにも手抜き過ぎるので、もうちょっと書く。

※説明の為に適当に編集したので、下のパスやら値は適当。ここで大事なのは、このプレイリストには2つのmp4ファイルが存在し、その間に間隔(ギャップ)を挿入するということ。

  1. 変更前。
    <?xml version="1.0" encoding="UTF-8"?>
    <playlist xmlns="http://xspf.org/ns/0/" xmlns:vlc="http://www.videolan.org/vlc/playlist/ns/0/" version="1">
    	<title>プレイリスト</title>
    	<trackList>
    		<track>
    			<location>file:///C:/aaa.mp4</location>
    			<duration>193770</duration>
    			<extension application="http://www.videolan.org/vlc/playlist/0">
    				<vlc:id>0</vlc:id>
    			</extension>
    		</track>
    		<track>
    			<location>file:///C:/bbb.mp4</location>
    			<duration>190264</duration>
    			<extension application="http://www.videolan.org/vlc/playlist/0">
    				<vlc:id>1</vlc:id>
    			</extension>
    		</track>
    	</trackList>
    	<extension application="http://www.videolan.org/vlc/playlist/0">
    		<vlc:item tid="0"/>
    		<vlc:item tid="1"/>
    	</extension>
    </playlist>
    
  2. 変更後。
    <?xml version="1.0" encoding="UTF-8"?>
    <playlist xmlns="http://xspf.org/ns/0/" xmlns:vlc="http://www.videolan.org/vlc/playlist/ns/0/" version="1">
    	<title>プレイリスト</title>
    	<trackList>
    		<track>
    			<location>file:///C:/aaa.mp4</location>
    			<duration>193770</duration>
    			<extension application="http://www.videolan.org/vlc/playlist/0">
    				<vlc:id>0</vlc:id>
    			</extension>
    		</track>
    		<track> // ← ギャップ用のtrackを追加する。
    			<location>vlc://pause:45</location> // ← 値を"vlc://pause:nn"にする。(nnは秒数)
    			<duration>30000</duration>      //  ← 余り気にしなくて良い模様。
    			<extension application="http://www.videolan.org/vlc/playlist/0">
    				<vlc:id>1</vlc:id>      // ← idはギャップを挿入する場所の数値にする。
    			</extension>
    		</track>
    		<track>
    			<location>file:///C:/bbb.mp4</location>
    			<duration>190264</duration>
    			<extension application="http://www.videolan.org/vlc/playlist/0">
    				<vlc:id>2</vlc:id>  // ← id をずらす。
    			</extension>
    		</track>
    	</trackList>
    	<extension application="http://www.videolan.org/vlc/playlist/0">
    		<vlc:item tid="0"/>
    		<vlc:item tid="1"/>
    		<vlc:item tid="2"/> // ← id を追加する。
    	</extension>
    </playlist>
    

詰まるところ、

  1. ギャップ挿入したいところにギャップ用のtrackを追加する。
  2. すべてのtrackのidが連番になるように変更する。
  3. vlc:itemタグを増加した分だけ増やし、tidが連番になるように変更する。

ということらしい。
durationは正しくなくても問題ない模様。


こんなん何に使うんじゃ、ワレェ(・∀・)

と思うかもしれないが、例えば、
体操、ストレッチ、ダンス、語学レッスン等で同じ内容を何セットか反復して流すけども、汗拭きやら水分補給の時間、「リピートアフタミー」って言われた後、自分で発音する時間が必要な時に意外と有用(・∀・)

うにのトゲは刺さると痛い(´・ω・`)-35

Androidアプリの64ビット化強制のメールからごっぐるから届いて、その辺の絡みでseekhackしたというお話。64ビット化強制のメール自体は5月かそこらで既に届いていたのをよく見てなかったw


Unity 64bit

多分、ぐぐればQiita辺りのエントリがすぐにヒットするはず……だが何故か俺氏のテンポラリブックマークにはstackoverflowとかのurlしか残ってなかった……(´・ω・`)エイゴヨメナイノニ

何はともあれ、最終的に

  1. メニューバーから[ビルド設定]->[プレイヤー設定]の順に開く。
  2. [その他の設定]-[設定]の「スクリプティングバックエンド」を"IL2CPP"にする。
  3. 「ターゲットアーキテクチャ」で"ARM64"にチェックを入れる。
  4. "android-ndk-r16b-windows-x86_64.zip"をダウンロードして解凍する。
  5. メニューから[編集]-[環境設定]の順に選択する。
  6. [外部ツール]のNDKに先に解凍したフォルダを指定する。

みたいな感じで行けたんだったかな?
ちなみにUnityのバージョンは"2018 4.4f1"。
2019でも問題ないんだろうけれども、色々と試行錯誤した結果、最新版はやめておこうという気になった(ノ∀`)

参考:
Unity Export Android 64-bit
Googleplay 64bit console warning


Unity+sqlite+64bit

上記の方法でようやく64bitでコンパイル出来るようになったのだが、実機上でゲームをしようとすると上手く動かない。正確に言うとカードがディールされない(´・ω・`)

色々と悩んだ結果、そう言えば、前にdb絡みで同じような現象になったなということを思い出し、SQLiteUnityKitでぐぐる。

どんぴしゃりなエントリが(・∀・)
UnityでSQLiteをAndroid(64bit対応)向けに導入する

  1. 拾って来たsqlite-android-3290000.aarを"Assets/Plugins"の下に入れた。("Assets"以下なら何処でもいいのかな?)
  2. SqliteDatabase.csのDllImportの部分を全部変更した。14箇所だったかな?
    [DllImport("sqlite3", EntryPoint = "sqlite3_step")]
    //        ↓
    [DllImport("libsqliteX", EntryPoint = "sqlite3_step")]
    

ちなみにこの方法で実機上でゲームがまともに動くようになったが、editor上では当然の如く、エラーになった(ノ∀`)

"sqlite3.dll"と"sqlite3.def"をそれぞれ"libsqliteX.dll"と"libsqliteX.def"にしたら、動いた(・∀・)

これが正しい解決策かはわからないがw


取り敢えず、これで一応64ビット化は出来ているようなんだけれども、まあしばらくはアップロードしなくてもいいか。どうせ誰もダウンロードしないし( ゜σ・゚)ホジホジ

うにのトゲは刺さると痛い(´・ω・`)-34

今も解決していない…(ヽ'ω`)
しばらくFirebaseはほうっておくべきか…


Firebaseを使おうと思ったが

Firebase Consoleでアプリ作成等までは出来たので、ページのガイドに習ってFirebaseAnalyticsプラグインを入れてみると以下のエラー(´・ω・`)

Failed to rename asset Assets/Plugins/x86_64/Firebase/libFirebaseCppAnalytics.so to Assets\Plugins\x86_64\Firebase\libFirebaseCppAnalytics.so (The source asset could not be found)

Failed to rename asset Assets/Plugins/x86_64/Firebase/libFirebaseCppApp-5.4.0.so to Assets\Plugins\x86_64\Firebase\libFirebaseCppApp-5.4.0.so (The source asset could not be found)

下の方は4日前にissueに上げられているみたいだけれども、とすると、上の方はまた別件なのか?
Version Handler Linux library renaming fails in some cases

そもそもx86_64なんてフォルダ作られてないな…
なんだろう、これは。


最初はAdmobとぶつかってるのかなと思って、Admobを最新版にしてみたが、エラーは取れず。

Resolverとかいうのを使用してみたが解決せず。
仕方がないのでimportしたFirebaseアセットをアンインストールしようと思ったが、

Unityって標準機能でアセットのアンインストールをサポートしてないのかよ…( ;・´ω・`)ゴクリッ ←※今はパッケージマネージャで出来る…筈(´・ω・`)タメシテハイナイガ

というわけで、ぐぐって、【Unity】AssetStoreからインポートしたアセットをプロジェクトからアンインストールする「 Package Uninstaller」で紹介されていたアセットを入れて、FirebaseAnalyticsをアンインストール。

更にfirebaseの名がついたファイルが残っていたので、手動で削除した。
で、まあ、「Firebaseは取り敢えず放っておくか(´・ω・`)」と思ったら、今度はadmobがおかしくなる…_| ̄|○

なんか古いのと新しいのでなんかぶつかっていたみたい。
それもなんとか試行錯誤してadmobが表示されるようになったが、今度はゲームがEditor上でしか動かないという状態に…__○_

色々試したが結局、前のコミットに戻すしかなくなった…(ヽ'ω`)ナントイウテイスキル


で、まあ、その後クイックスタートサンプルを落として来て同じようにやったら、上記の2つのエラーが出ている状態であると…(´・ω・`)

そう言えば、それ以外にも

The type or namespace name `Tasks' does not exist in the namespace `System.Threading'. Are you missing an assembly reference?

とかいうエラーも出てた。

これはPlayerSettingsのConfigurationで.NETのバージョンが4系にしてないから文句を言われていたみたい。或いは3系のアセットを読み込めばいいのかな。


なんだか色々と気力が低下状態でエラーとかにハマると原因究明すら厳しい…(ヽ'ω`)

うにのトゲは刺さると痛い(´・ω・`)-33

結局、力尽きた…_| ̄|○

TowerDefenceTutorialのTowerフォルダ以下のコードまでは目を通したが、力尽きたというか、

飽きた(・∀・)
ということで挫折(ノ∀`)

読み進める為に参考にしたエントリは以下の通り。理解したと思ってもすぐ忘れてしまうので、またいつか読む時の為に。

参考:
デリゲートとは【C#】
【Unity】UnityEventの用法と用量
数学系の処理を扱うMathfの全変数と全関数【Unity】
[Unity][Unity3d] Unity の C# で限りなく小さい float 値を使いたい時には float.Epsilon を使ってはダメ
Time.fixedDeltaTimeとTime.deltaTimeについて
【Unity】ISerializationCallbackReceiverを使ってみたんだ
数学系の処理を扱うMathfの全変数と全関数【Unity】
インデクサー
Java プログラマのための C# 入門 (#4 クラス定義の応用的なことと演算子のオーバーロード)


何故かMole's Match-upはリファクタリングを開始している。
中学生漢字データを作成しないといけないのに(ノ∀`)

何はともあれ、遊んでないで早く仕事を探さないといけない…(ヽ'ω`)