タブレット(orスマホ)でmts形式のビデオファイルを結合することができたので、その方法を紹介します
**注意**
今回紹介する方法でmtsファイルの結合をすると、以後、ビデオカメラがそのmicroSDを認識しなくなってしまうので、結合は専用のmicroSDでやってください。

(認識しなくなったmicroSDはフォーマットすることで、再度、ビデオカメラで使用できます)

  1. 結論
  2. 「方法だけ解れば自分でやるよ」って人向けに結論から。
    "Termux" で 'cat hoge.mts fuga.mts > piyo.mts' で出来たよ。
    でも"Termux"でそれをやると、ビデオカメラがそのmicroSDを認識しなくなっちゃうから、専用のmicroSDでやってね。
    …という話を、以下くどくどと書きます。

  3. 経緯
  4. 知人よりビデオファイル(mtsファイル)の結合が簡単にできないか相談されました。

    やりたい事は、「スポーツ観戦で前半の試合を録画した後に一旦ビデオを停止し、そのあと後半の試合を録画しているが、それらを結合して1試合が1ファイルになるようにしたい」ということでした。
    なんでも、youtubeにアップするのに1ファイルの方が都合が良いとか。

    最初は自分で検索して、「DOSコマンドで"COPY a.mts b.mts > c.mts"とすると結合できるらしいんだけど、それをバッチファイルにして欲しい」というのでバッチファイルを書いてあげて、それを実行していました。

    そしたら「早くyoutubeにアップしたいので、試合会場、もしくは帰宅する車内で結合したい」ということで、ノートPCを車内に持ち込むようになりました。

    そのうち、「ノートPCを持ち歩くの面倒。なんとかして」という経緯。

    俺もそんな事にいちいち関わるのも面倒なので、しばらくスルーしていたのですが、ふと「スマホ(android)ってlinuxじゃん」と気がつきまして。
    ちょっと面白そうなので(←コレ重要)、androidでビデオファイルの結合ができるかやってみることにしました。

    まず、面倒な事はやりたくないので、rootを取らずにlinuxのシェルを実行できるアプリがあるのか探してみると"Termux"というアプリを発見。
    色々やってみたら、見事、ファイルを結合することができたので、そのやり方の報告です。

  5. 使用端末
  6. 今回使用したのは、ASUS MEMO Pad7(K013 ME176C)で、Android5.0。
    タブレットだと、裏カバーを開けなくてもmicroSDを挿せるから便利。
    microSDをUSBポートに接続できるアダプタや変換ケーブルでもOK。
    (その場合、ディレクトリがexternal-2になる(後述))

  7. "Termux"の環境作り
  8. 凡例
    ""で囲まれた文字列は固有名詞
    ''で囲まれた文字列はキーボードからの入力
    [Enter]:Enterボタン

    *入力は大文字と小文字を区別するので表記通り入力してください。

    "Termux"アプリをインストールして実行します。
    https://play.google.com/store/apps/details?id=com.termux
    次に、'Termux-setup-storage'[Enter]と入力、実行します。
    'ls'[Enter]で、"storage"ディレクトリが作られた事を確認します。
    ('ls'コマンドは、MS-DOSで言うところの'dir'です)

    "~/storage/external-1/"が、今回使用するディレクトリになります。
    上記はandroidの、"/Removable/MicroSD/Android/data/com.terumux/files/"にリンクしています。

    毎回結合コマンドを手打ちするのも面倒なのでスクリプトを作成します。
    viが使えるので、以下のスクリプトを作成し、適当な名前(例:mtsmts)で、"~/"(ホームディレクトリ)下に保存します。
    (下記の 00000.mts、00001.mts、01.mts はサンプル名ですので適宜変更してください)

    cd ~/storage/external-1
    cat 00000.mts 00001.mts > 01.mts
    ls -l *.mts
    cd ~/
    

    chmodで実行権限を与えます。(例:chmod 755 mtsmts)

    上記のスクリプトの内容は、「00000.mtsと00001.mtsを結合して、01.mtsという名前で保存」という内容です。
    2ファイル以上のファイルの結合は、cat 文の > の前に列挙してください。

    コマンドの最後にファイル一覧を表示するので、結合に成功していれば、結合後のファイルが表示されるはずです。

  9. MTSビデオファイルを結合する
    1. ビデオのメモリカード(microSD等)をタブレット(orスマホ)に挿入します。
    2. 結合したいmtsファイルを"Termux"で読み書きできるディクトリにコピーします。
      ファイルマネージャを起動します。
      "/Removable/MicroSD/PRIVATE/AVCHD/BDMV/STREAM/"にある、*.mtsファイルをコピーし、
      "/Removable/MicroSD/Android/data/com.terumux/files/"以下に貼り付けます。
      多分、コピーに時間がかかると思うので、放置しておきます。
    3. コピーしたら、ファイル名を「3.」で指定したファイル名に変更します。
      "Termux"を起動します。
      先程作成したファイル結合スクリプトを実行します。
      (例:'./mtsmts')
      結合もそれなりに時間がかかると思うので、またまた放置。
    以上。

  10. 注意
  11. 今回紹介する方法でmtsファイルの結合をすると、以後、ビデオカメラがそのmicroSDを認識しなくなってしまうので、結合は専用のmicroSDでやってください。
    (認識しなくなったmicroSDはフォーマットすることで、再度、ビデオカメラで使用できます)

    知人は毎回フォーマットしているそうですが、マスターファイルを保存しておきたい場合は、内部ストレージにコピーして結合するとか、USBに外部ストレージを付けてそこにコピーして結合するなりしてください。
    その場合は、スクリプト内のディレクトリの場所の記述が変わりますので、ユーザーの環境に合わせて変更してください。

  12. 変換ケーブルについて
  13. 最初は試験的に変換ケーブルで試しました。
    SODIAL(TM) 2x Micro USB OTG Host Cable

    使ったケーブルはメモリ専用ではなく、USB_C-A変換ケーブルに、USB-microSD変換アダプタを繋いだもの。
    ケーブルだかアダプタだかが遅くて、ファイルコピーにえらく時間がかかったので、結局microSDをスロットに直接挿して使う事にしました。
    アクセスが早いアダプタを使えば快適になるかは不明。

    また、上記ケーブルでAndroid7.0のスマホで試したところ外部ストレージ(external-2)として認識しませんでした。
    これも問題がケーブルにあるのか、"Termux"にあるのかは検証してません。

  14. スクリプトファイル
  15. スクリプトファイルを作る際にエディタ作業が必要になりますが、viエディタの使い方を知らない場合は、エディタアプリをインストールするのが一番ラクかもしれません。

    アプリをインストールしたくないのであれば、一言一句間違えない自信があなら、'echo pwd >> mtsmts'[Enter]、'echo cd ~/storage/external-1 >> mtsmts'[Enter]、と一行一行打ち込んでいくこともできます。

    また、PCでスクリプトファイルを作成したものをスマホ(orタブレット)でD/Lして、"Termux"のディレクトリに移動することで使用できます。(実行権限を与えるのを忘れずに)
    「スクリプトファイルをD/Lする」とは、例えばどこかのクラウドにU/Lするとか、自分宛に添付メールするとか、自分のブログにU/Lするとかです。

    色々やり方は考えられますが、vi覚えるのが最短かと。

  1. 目的
  2. 素数をグラフ化するとどうなるのか疑問に思ったので、自由研究課題として素数のレーダーグラフを作成した。
    使用ソフト:LibreOffice

  3. 方法
  4. まず素数を用意するために、下記のマクロプログラムを作成した。
    Sub Main
    dim	sheet as object
    dim	cell as object
    sheet = thiscomponent.sheets(1)
    for x = 2 to 10000
    	for i = 2 to sqr(x)
    		if( (x mod i )=0 ) then 
    			i=0
    			exit for
    		endif
    	next
    	if( i<>0) then
    		cell = sheet.getCellByPosition(0,y)
    		cell.value = x
    		y=y+1
    	endif
    next
    End Sub
    上記のプログラムにより、2以上、10000以下の素数を作成した。
    (2,3,5 ... 9949,9967,9973 : データ数1229個)

  5. 結果
  6. 結果を下記に示す。
    比較のため、対数、平方数についても同様のグラフを作成した。
    (こちらはデータ数を100個とした)



  7. 考察
  8. これらの各グラフを比較すると、素数グラフが最も美しい螺旋形グラフとなった。
    螺旋の形状としては、黄金比を用いた黄金螺旋にも似ている。

    今回はデータを10000以下としたが、時間をかければもっと大きな素数まで作成することができる。もっと多くの素数においても、極端に形状が変形することなく螺旋が続くのか興味深い。

  • タイトル
    UFOキャプチャー(電子工作マガジン2018年SUMMER号掲載)

  • 開発環境
    IchigojamBASIC1.2.1

  • 内容
    UFOを操作してキャラクタをキャプチャ(捕獲)するゲームです。
  • UFOcapture
  • 遊び方
    UFOの横方向と縦方法の移動位置を入力するとUFOがキャラクタを捕獲します。
    キャラクタは1度に7個まで捕獲することができます。
    捕獲したキャラクタは画面右の捕獲エリアに並べて保管されます。
    この時、同じキャラクタを3つ以上並べると並んだキャラクタが消え、得点が得られます。
    多数消し、連鎖消しにより高得点が得られます。

  • 操作方法
    「ヨコ:」と表示されたら、UFOの横方向の移動位置(画面上部の数字)を入力しEnterを押します。
    「タテ:」と表示されたら、UFOの縦方法の移動位置(画面左右の数字)を入力しEnterを押します。
    するとUFOが移動してキャラクタを捕獲します。

  • プログラムのしくみ
    変数表
    [0]~[48]キャラクタの配置
    [50]~[56]捕獲したキャラクタ
    I,Jループ用一時変数
    XUFO移動横位置
    YUFO移動縦位置
    C捕獲配列のキャラクタコード
    D捕獲配列の次のキャラクタコード
    R捕獲配列の同一キャラクタ連続数
    Z捕獲している数
    L連鎖フラグ
    A表示キャラクタの増分
    Sスコア

    各行の処理
    1行初期画面表示
    2行UFO移動位置の入力
    3行UFO左移動、捕獲アニメーション、捕獲配列へキャラを転送
    4行捕獲ビーム消去、UFO右移動、捕獲配列のキャラ連続チェック
    5行最上段のキャラチェック、キャラせり上げ、最下段補充
    6行ループ
    7行1段補充&描画
    8行連続キャラ消し、加点
    9行捕獲エリア描画

  • プログラムの具体的な入力方法
    プログラムリスト中の「□」はスペース1個です。(例:「□□□」はスペース3個)
    カードの枠線および、UFOは「左ALT+(SHIFT)+キー」で入力します。
    左ALT+SHIFT+H
    左ALT+SHIFT+I
    左ALT+SHIFT+Q
    左ALT+SHIFT+R
    左ALT+0(ゼロ)
    左ALT+8
    左ALT+1

  • プログラムの改造
    現時点で空きメモリが0バイトなので改造は難しいと思いますが、1行目の枠線表示をしないようにすれば、メモリに空きができるので改造がしやすくなります。
    7行のRND文で表示キャラクタを決めています。キャラクタの種類を増減したい場合は、RND文の"6"を増減してください。別のキャラクタを表示するようにするには"235"を変更してください。
    UFOの移動アニメーション速度を変更したい場合は、WAIT文(5ヶ所)の数値を変更してください。

  • プログラム
    1 cls:clv:fori=0to6:j=i*2:LC0,j+6:?i;"│":lc17,j+6:?"│";i,"□□│□□□│":?"□│":lc17,j+7:?"│□□□□□│□□□│":lcj+3,0:?i:gsb7:next:lc0,19:?"□└---------------┘□□□□□└---┘"
    2 lc20,0:?"SCORE:";s:lc0,20:?chr$(12):input"ヨコ:",x:input"タテ:",y:x=abs(x%7):y=abs(y%7)
    3 fori=10toxstep-1:lci*2+4,2:?"□□□":lci*2+2,2:?"←○→":wait9:next:lcx*2+3,4:?"^":fori=0toy:lcx*2+3,i*2+6:?"^":wait9:next:fori=yto0step-1:c=[i*7+x]:ifc[56-z]=c:[i*7+x]=0:z=z+1
    4 lcx*2+3,i*2+6:?chr$(0):wait9:next:lcx*2+3,4:?chr$(0):fori=xto11:lci*2,2:?"□□□":lci*2+2,2:?"←○→":wait9:next:gsb9:c=[50]:r=0:l=0:fori=1to7:d=[50+i]:ifd=cr=r+(c!=0)elsec=d:gosub8:r=0
    5 next:fori=0to6:i=i+[i]:next:ifi<7fori=0to6:forj=0to6:[i*7+j]=[i*7+j+7]:lcj*2+3,i*2+6:?chr$([i*7+j]):next:next:gsb7
    6 goto2
    7 forj=0to6:[i*7+j]=rnd(6+a)+235:lcj*2+3,i*2+6:?chr$([i*7+j]):next:rtn
    8 ifr<2rtnelse:forj=i-1to0step-1:[50+j]=[49+j-r]*(j-r>0):next:i=0:z=z-r-1:s=s+r*r*5/20*10+l*20:l=1:a=s/100
    9 forj=0to6:lc25,j*2+6:?chr$([50+j]):wait5:next:if![49]rtnelselc25,4:?chr$([49]):lc0,21:?chr$(12);"GAME OVER"
    

    MixJuiceでのダウンロードURLは下記になります。
    UFOcapture http://tagiyasoft.blog.jp/UFOcapture.bin

    以下のように入力してD/Lしてください。
    NEW
    ? MJ GET http://tagiyasoft.blog.jp/UFOcapture.bin
    

    ブラウザでD/LしてIchigoJamに転送する場合は、通信ソフトでバイナリ送信をしてください。
    (例:TeraTermの場合は、メニューの[ファイル]-[ファイル送信]で当該ファイルを送信します)

↑このページのトップヘ