<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>カメラ | エンピツ舎のWebサイト</title>
	<atom:link href="https://enpitusya.jp/tag/%e3%82%ab%e3%83%a1%e3%83%a9/feed/" rel="self" type="application/rss+xml" />
	<link>https://enpitusya.jp</link>
	<description>THIS IS THE WEBSITE OF ENPITUSYA.</description>
	<lastBuildDate>Fri, 06 Mar 2026 00:15:17 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://enpitusya.jp/wp-content/uploads/2022/05/cropped-favicon-32x32.png</url>
	<title>カメラ | エンピツ舎のWebサイト</title>
	<link>https://enpitusya.jp</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>GoPro MAX2とGoPro HERO13はGPSの夢を見るか 『動画にGPS情報を表示！』</title>
		<link>https://enpitusya.jp/659/</link>
					<comments>https://enpitusya.jp/659/#respond</comments>
		
		<dc:creator><![CDATA[あめかよ]]></dc:creator>
		<pubDate>Fri, 06 Mar 2026 00:15:16 +0000</pubDate>
				<category><![CDATA[tech]]></category>
		<category><![CDATA[WORKS]]></category>
		<category><![CDATA[ffmpeg]]></category>
		<category><![CDATA[GoPro]]></category>
		<category><![CDATA[GPS]]></category>
		<category><![CDATA[HERO13]]></category>
		<category><![CDATA[MAX2]]></category>
		<category><![CDATA[Overlay]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[Telemetry]]></category>
		<category><![CDATA[Telemetry Overlay]]></category>
		<category><![CDATA[オーバーレイ]]></category>
		<category><![CDATA[カメラ]]></category>
		<category><![CDATA[ドライブレコーダ]]></category>
		<guid isPermaLink="false">https://enpitusya.jp/?p=659</guid>

					<description><![CDATA[旅行先でのドライブ動画、後で見返すと「ここ、どこ走ってたっけ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex">
<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1022" height="1024" src="https://enpitusya.jp/wp-content/uploads/2026/02/20260221_1838241242-1022x1024.jpg" alt="" class="wp-image-738" srcset="https://enpitusya.jp/wp-content/uploads/2026/02/20260221_1838241242-1022x1024.jpg 1022w, https://enpitusya.jp/wp-content/uploads/2026/02/20260221_1838241242-300x300.jpg 300w, https://enpitusya.jp/wp-content/uploads/2026/02/20260221_1838241242-150x150.jpg 150w, https://enpitusya.jp/wp-content/uploads/2026/02/20260221_1838241242-768x769.jpg 768w, https://enpitusya.jp/wp-content/uploads/2026/02/20260221_1838241242-1533x1536.jpg 1533w, https://enpitusya.jp/wp-content/uploads/2026/02/20260221_1838241242.jpg 1691w" sizes="(max-width: 1022px) 100vw, 1022px" /></figure>



<p>旅行先でのドライブ動画、後で見返すと「ここ、どこ走ってたっけ？」となること、よくありますよね 。 ようやくGoPro MAX2、HERO13に待望のGPS機能が復活し、GoPro MAX 2などで走行データが残せるようになりました 。<br>しかし、いざ動画に速度計やマップを載せようとすると、大きな壁にぶつかります。</p>
</div>



<p>・<strong>スマホアプリ(<a href="https://gopro.com/ja/jp/shop/quik-app-video-photo-editor">GoPro Quik</a>)</strong><br>転送に時間がかかるし、書き出しは遅い。スマホも熱くなって電池がゴリゴリ削れる 。<br><strong>・専用ソフト (<a href="https://goprotelemetryextractor.com/telemetry-overlay-gps-video-sensors">Telemetry Overlay</a> など)<br></strong>使いやすいけど、買い切りで約3万円（$199）と、なかなかの高級品 。</p>



<p id="p-rc_0af43f32d78c8836-22">「もっと楽に、PCでサクッと無料でやりたい！」 そんな願いを叶えてくれるのが、<br>GitHubで見つけた<strong>Pythonコードを使った方法</strong>です 。<br>これならWindowsでもMacでも、思い通りのオーバーレイが作成できました。</p>



<figure class="wp-block-image aligncenter size-large is-resized"><img decoding="async" width="1024" height="575" src="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-112732-1024x575.png" alt="" class="wp-image-680" style="width:665px;height:auto" srcset="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-112732-1024x575.png 1024w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-112732-300x168.png 300w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-112732-768x431.png 768w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-112732-120x68.png 120w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-112732-160x90.png 160w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-112732-320x180.png 320w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-112732.png 1456w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>ここから順番にするだけで簡単にできます！<br>でも、一番手っ取り早くするには、最後の<a href="https://enpitusya.jp/659/#toc24">おまけ</a>をご覧ください。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">Windows</a><ol><li><a href="#toc2" tabindex="0">環境構築</a><ol><li><a href="#toc3" tabindex="0">Python のインストール (オススメは3.13ぐらい)</a></li><li><a href="#toc4" tabindex="0">ffmpegの導入</a></li><li><a href="#toc5" tabindex="0">仮想環境（venv）の作成</a></li><li><a href="#toc6" tabindex="0">ライブラリのインストール</a></li></ol></li><li><a href="#toc7" tabindex="0">MP4の結合</a><ol><li><a href="#toc8" tabindex="0">ファイルリスト作成</a></li><li><a href="#toc9" tabindex="0">ffmpegで合体</a></li></ol></li><li><a href="#toc10" tabindex="0">2K(1080p)画質にエンコード</a></li><li><a href="#toc11" tabindex="0">オーバーレイ処理 (動画にGPS情報を合成)</a></li></ol></li><li><a href="#toc12" tabindex="0">Mac</a><ol><li><a href="#toc13" tabindex="0">環境構築</a><ol><li><a href="#toc14" tabindex="0">Python のインストール (オススメは3.13ぐらい)</a></li><li><a href="#toc15" tabindex="0">ffmpegの導入</a></li><li><a href="#toc16" tabindex="0">仮想環境（venv）の作成</a></li><li><a href="#toc17" tabindex="0">ライブラリのインストール</a></li></ol></li><li><a href="#toc18" tabindex="0">MP4の結合</a></li><li><a href="#toc19" tabindex="0">2K(1080p)画質にエンコード</a></li><li><a href="#toc20" tabindex="0">オーバーレイ処理 (動画にGPS情報を合成)</a></li></ol></li><li><a href="#toc21" tabindex="0">タイムラプス</a><ol><li><a href="#toc22" tabindex="0">Windows</a></li><li><a href="#toc23" tabindex="0">Mac</a></li></ol></li><li><a href="#toc24" tabindex="0">おまけ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Windows</span></h2>



<h3 class="wp-block-heading"><span id="toc2">環境構築</span></h3>



<h4 class="wp-block-heading"><span id="toc3">Python のインストール (オススメは3.13ぐらい)</span></h4>



<p id="p-rc_0af43f32d78c8836-23">こちらのリンクなどから、お使いのパソコンにあったものをダウンロードしてください。<br><a href="https://www.python.org/ftp/python/3.13.10/python-3.13.10-amd64.exe">Python 3.13.10 (.exe 64bit)</a>　・　<a href="https://www.python.org/ftp/python/3.13.10/python-3.13.10.exe">Python 3.13.10 (.exe 32bit)</a><br><a href="https://www.python.org/ftp/python/3.13.10/python-3.13.10-arm64.exe">Python 3.13.10 (.exe ARM64)</a><br>インストール時には「<strong>Add Python to PATH</strong>」に必ずチェックを入れてください 。</p>



<figure class="wp-block-image aligncenter size-full is-resized"><img decoding="async" width="820" height="519" src="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-31-204307.png" alt="" class="wp-image-664" style="aspect-ratio:1.5800030859435272;width:602px;height:auto" srcset="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-31-204307.png 820w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-31-204307-300x190.png 300w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-31-204307-768x486.png 768w" sizes="(max-width: 820px) 100vw, 820px" /></figure>



<h4 class="wp-block-heading"><span id="toc4">ffmpegの導入</span></h4>



<p id="p-rc_0af43f32d78c8836-24">コマンドプロンプトで <strong><code>winget install ffmpeg</code></strong> と入力します。<br>ソフトウェア使用許諾契約の同意には <strong>Y </strong>と入力してエンターを押してください。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="598" src="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-31-205026-2-1024x598.png" alt="" class="wp-image-674" srcset="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-31-205026-2-1024x598.png 1024w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-31-205026-2-300x175.png 300w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-31-205026-2-768x448.png 768w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-31-205026-2.png 1266w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h4 class="wp-block-heading"><span id="toc5">仮想環境（venv）の作成</span></h4>



<p>venvによる仮想環境を作ります。仮想環境の利点としては、失敗してもフォルダを消すだけで元通り！不要になればそのまま削除できます。<br>Dドライブなどの作業用フォルダに <code><strong>cd/d D:\</strong></code> などで移動し、 <code><strong>python -m venv venv311</strong></code> で作成します。<strong>venv311</strong> がフォルダ名になります。ちょっと時間がかかった後、完了します。<br><code><strong>.\venv311\Scripts\activate</strong></code> で仮想環境を起動します 。<br>成功すると、プロンプトの頭に<strong>(venv311)</strong>が付きます。</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="673" height="457" data-id="669" src="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-28-170319-1.png" alt="" class="wp-image-669" srcset="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-28-170319-1.png 673w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-28-170319-1-300x204.png 300w" sizes="(max-width: 673px) 100vw, 673px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="673" height="457" data-id="671" src="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-28-170407-1.png" alt="" class="wp-image-671" srcset="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-28-170407-1.png 673w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-28-170407-1-300x204.png 300w" sizes="(max-width: 673px) 100vw, 673px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="673" height="457" data-id="672" src="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-28-170412.png" alt="" class="wp-image-672" srcset="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-28-170412.png 673w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-28-170412-300x204.png 300w" sizes="(max-width: 673px) 100vw, 673px" /></figure>
</figure>



<h4 class="wp-block-heading"><span id="toc6">ライブラリのインストール</span></h4>



<p>とりあえずpipのアップデート</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers cbp-highlight-hover" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#F8F8F2;--cbp-line-number-width:calc(1 * 0.6 * 1rem);--cbp-line-highlight-color:rgba(253, 253, 237, 0.2);line-height:1rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#efefe1">CMD</span><span role="button" tabindex="0" style="color:#F8F8F2;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>python.exe -m pip install --upgrade pip</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F8F8F2">python.exe </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">m pip install </span><span style="color: #FF79C6">--</span><span style="color: #F8F8F2">upgrade pip</span></span></code></pre></div>



<p>そのあと、本命ツールgopro-dashboard-overlayのインストール</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers cbp-highlight-hover" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#F8F8F2;--cbp-line-number-width:calc(1 * 0.6 * 1rem);--cbp-line-highlight-color:rgba(253, 253, 237, 0.2);line-height:1rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#efefe1">CMD</span><span role="button" tabindex="0" style="color:#F8F8F2;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>pip install gopro-overlay</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F8F8F2">pip install gopro</span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">overlay</span></span></code></pre></div>



<p>エラーなくインストールが終われば準備完了です。</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="507" data-id="676" src="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-31-231116-1024x507.png" alt="" class="wp-image-676" srcset="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-31-231116-1024x507.png 1024w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-31-231116-300x148.png 300w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-31-231116-768x380.png 768w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-31-231116.png 1494w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="671" height="375" data-id="677" src="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-28-170620.png" alt="" class="wp-image-677" srcset="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-28-170620.png 671w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-28-170620-300x168.png 300w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-28-170620-120x68.png 120w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-28-170620-160x90.png 160w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-28-170620-320x180.png 320w" sizes="(max-width: 671px) 100vw, 671px" /></figure>
</figure>



<h3 class="wp-block-heading"><span id="toc7">MP4の結合</span></h3>



<p>GoProで長時間録画すると、ファイルがいくつかに分割されて保存されます 。<br>まずはこれを、GPSデータを保持したまま一本の動画に合体させましょう。</p>



<h4 class="wp-block-heading"><span id="toc8">ファイルリスト作成</span></h4>



<p>テキストファイル（<code><strong>files.txt</strong></code>）を作成。<br>結合したいファイル名を古い順に記入して保存します 。<br>私はフルパスの方が安心なのでフルパスで書いてます。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="433" height="354" src="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-28-171003.png" alt="" class="wp-image-699" srcset="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-28-171003.png 433w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-28-171003-300x245.png 300w" sizes="(max-width: 433px) 100vw, 433px" /></figure>



<h4 class="wp-block-heading"><span id="toc9">ffmpegで合体</span></h4>



<p>ffmpegでひとまとめに結合して、marge.mp4に出力します。</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers cbp-highlight-hover" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.75rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#F8F8F2;--cbp-line-number-width:calc(1 * 0.6 * .75rem);--cbp-line-highlight-color:rgba(253, 253, 237, 0.2);line-height:1rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#efefe1">CMD</span><span role="button" tabindex="0" style="color:#F8F8F2;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>ffmpeg -f concat -safe 0 -i D:/files.txt -map 0:0 -map 0:1 -map 0:3 -c copy D:/meffmpeg -y -i merge.mp4</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F8F8F2">ffmpeg </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">f concat </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">safe </span><span style="color: #BD93F9">0</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">i D:</span><span style="color: #FF79C6">/</span><span style="color: #F8F8F2">files.txt </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">map </span><span style="color: #BD93F9">0</span><span style="color: #F8F8F2">:</span><span style="color: #BD93F9">0</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">map </span><span style="color: #BD93F9">0</span><span style="color: #F8F8F2">:</span><span style="color: #BD93F9">1</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">map </span><span style="color: #BD93F9">0</span><span style="color: #F8F8F2">:</span><span style="color: #BD93F9">3</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">c copy D:</span><span style="color: #FF79C6">/</span><span style="color: #F8F8F2">meffmpeg </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">y </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">i merge.mp4</span></span></code></pre></div>



<p>ここで <code>-map 0:3</code> を指定するのがポイント。映像と音声だけでなく、GPSデータ（GPMF）もしっかりコピーされます 。 作業場所にもよりますが、まぁまぁ時間かかります。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="662" src="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-28-171226-1024x662.png" alt="" class="wp-image-700" srcset="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-28-171226-1024x662.png 1024w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-28-171226-300x194.png 300w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-28-171226-768x497.png 768w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-28-171226.png 1177w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading"><span id="toc10">2K(1080p)画質にエンコード</span></h3>



<p>元の動画が4Kで重いと、後のオーバーレイ処理に時間がかかります。<br>4Kが必要なければ、扱いやすい1080p（フルHD）に変換しましょう。<br>お使いの環境に応じて、4行目のエンコーダのコマンドを選んでください。<br>下になるほど速いです。</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers cbp-highlight-hover" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:1.125rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#F8F8F2;--cbp-line-number-width:calc(1 * 0.6 * 1.125rem);--cbp-line-highlight-color:rgba(253, 253, 237, 0.2);line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" style="color:#F8F8F2;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>#ソフトウェアエンコード
-c:v libx264 -preset veryfast -crf 22 ^

#ハードウェアエンコード (intel)
-c:v h264_qsv -global_quality 22 -preset veryfast ^

#ハードウェアエンコード (nVIDIA)
-c:v h264_nvenc -preset p5 -cq 22 ^</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #6272A4">#ソフトウェアエンコード</span></span>
<span class="line"><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">c:v libx264 </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">preset veryfast </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">crf </span><span style="color: #BD93F9">22</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6">^</span></span>
<span class="line"></span>
<span class="line"><span style="color: #6272A4">#ハードウェアエンコード (intel)</span></span>
<span class="line"><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">c:v h264_qsv </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">global_quality </span><span style="color: #BD93F9">22</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">preset veryfast </span><span style="color: #FF79C6">^</span></span>
<span class="line"></span>
<span class="line"><span style="color: #6272A4">#ハードウェアエンコード (nVIDIA)</span></span>
<span class="line"><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">c:v h264_nvenc </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">preset p5 </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">cq </span><span style="color: #BD93F9">22</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6">^</span></span></code></pre></div>



<div class="wp-block-kadence-column kadence-column659_cabc7b-63"><div class="kt-inside-inner-col">
<p>長いのでコマンドを<strong> ^ </strong>で複数行に分けました。1行で書いてもかまいません。<br>コピペして編集してコピペしてください。</p>
</div></div>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers cbp-highlight-hover" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:1.125rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#F8F8F2;--cbp-line-number-width:calc(1 * 0.6 * 1.125rem);--cbp-line-highlight-color:rgba(253, 253, 237, 0.2);line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#efefe1">CMD</span><span role="button" tabindex="0" style="color:#F8F8F2;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>ffmpeg -y -i D:/merge.mp4 ^
  -map 0:v -map 0:a? -map 0:3 ^
  -vf "format=yuv420p,scale=1920:-2" ^
  -c:v h264_qsv -global_quality 22 -preset veryfast ^
  -c:a copy ^
  -c:d copy ^
  D:/1080p.mp4</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F8F8F2">ffmpeg </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">y </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">i D:</span><span style="color: #FF79C6">/</span><span style="color: #F8F8F2">merge.mp4 </span><span style="color: #FF79C6">^</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">map </span><span style="color: #BD93F9">0</span><span style="color: #F8F8F2">:v </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">map </span><span style="color: #BD93F9">0</span><span style="color: #F8F8F2">:a</span><span style="color: #FF79C6">?</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">map </span><span style="color: #BD93F9">0</span><span style="color: #FF79C6">:</span><span style="color: #BD93F9">3</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6">^</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">vf </span><span style="color: #E9F284">&quot;</span><span style="color: #F1FA8C">format=yuv420p,scale=1920:-2</span><span style="color: #E9F284">&quot;</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6">^</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">c:v h264_qsv </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">global_quality </span><span style="color: #BD93F9">22</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">preset veryfast </span><span style="color: #FF79C6">^</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">c:a copy </span><span style="color: #FF79C6">^</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">c:d copy </span><span style="color: #FF79C6">^</span></span>
<span class="line"><span style="color: #F8F8F2">  D:</span><span style="color: #FF79C6">/</span><span style="color: #FF5555; font-style: italic; text-decoration: underline">1080p.mp4</span></span></code></pre></div>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="695" data-id="722" src="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-215223-7-1024x695.png" alt="" class="wp-image-722" srcset="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-215223-7-1024x695.png 1024w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-215223-7-300x204.png 300w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-215223-7-768x522.png 768w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-215223-7.png 1122w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="540" data-id="723" src="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-220325-3-1024x540.png" alt="" class="wp-image-723" srcset="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-220325-3-1024x540.png 1024w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-220325-3-300x158.png 300w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-220325-3-768x405.png 768w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-220325-3.png 1446w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</figure>



<h3 class="wp-block-heading"><span id="toc11">オーバーレイ処理 (動画にGPS情報を合成)</span></h3>



<p>いよいよ動画にGPS情報やマップを合成します。<br>仮想環境（venv）を起動し忘れていたら、<code><strong>.\venv311\Scripts\activate</strong></code> で起動してください。<br>３行目は表示する項目を設定しています。<br>GPS日時 / GPS座標 / GPSロック状態 / 速度 / 高度 / 地図(現在地) / 地図(全体図)<br>4行目はkm/h指定、5行目は速度表示制限で例では200km以上の速度はエラー扱いになります。<br>6行目は文字フォントの指定をしています。<br>詳細なオプションについては、<a href="https://github.com/time4tea/gopro-dashboard-overlay/blob/main/docs/bin/README.md">作者のGitHub</a>を確認してください。</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#F8F8F2;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#efefe1">CMD</span><span role="button" tabindex="0" style="color:#F8F8F2;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>python E:\venv\Scripts\gopro-dashboard.py^
  --debug-metadata ^
  --include date_and_time gps_info gps-lock big_mph altitude moving_map journey_map ^
  --units-speed kph ^
  --gps-speed-max 200 --gps-speed-max-units kph ^
  --font "C:/Windows/Fonts/arial.ttf" ^
  D:\1080p.mp4 D:\output.mp4</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F8F8F2">python E:\</span><span style="color: #FF5555; font-style: italic; text-decoration: underline">venv\Scripts\gopro-dashboard.py^</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF5555; font-style: italic; text-decoration: underline">--</span><span style="color: #F8F8F2">debug</span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">metadata </span><span style="color: #FF79C6">^</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF5555; font-style: italic; text-decoration: underline">--</span><span style="color: #F8F8F2">include date_and_time gps_info gps</span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">lock big_mph altitude moving_map journey_map </span><span style="color: #FF79C6">^</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF5555; font-style: italic; text-decoration: underline">--</span><span style="color: #F8F8F2">units</span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">speed kph </span><span style="color: #FF79C6">^</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF5555; font-style: italic; text-decoration: underline">--</span><span style="color: #F8F8F2">gps</span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">speed</span><span style="color: #FF79C6">-</span><span style="color: #8BE9FD">max</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">200</span><span style="color: #F8F8F2"> </span><span style="color: #FF5555; font-style: italic; text-decoration: underline">--</span><span style="color: #F8F8F2">gps</span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">speed</span><span style="color: #FF79C6">-</span><span style="color: #8BE9FD">max</span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">units kph </span><span style="color: #FF79C6">^</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF5555; font-style: italic; text-decoration: underline">--</span><span style="color: #F8F8F2">font </span><span style="color: #E9F284">&quot;</span><span style="color: #F1FA8C">C:/Windows/Fonts/arial.ttf</span><span style="color: #E9F284">&quot;</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6">^</span></span>
<span class="line"><span style="color: #F8F8F2">  D:\</span><span style="color: #FF5555; font-style: italic; text-decoration: underline">1080p.mp4 D:\output.mp4</span></span></code></pre></div>



<p>しばらく待ったら、オーバーレイ処理が完了します。<br><br>　　完成！！</p>



<p></p>



<p></p>



<h2 class="wp-block-heading"><span id="toc12">Mac</span></h2>



<h3 class="wp-block-heading"><span id="toc13">環境構築</span></h3>



<h4 class="wp-block-heading"><span id="toc14">Python のインストール (オススメは3.13ぐらい)</span></h4>



<p id="p-rc_0af43f32d78c8836-23">こちらのリンクなどから、お使いのパソコンにあったものをダウンロードしてください。<br><a href="https://www.python.org/ftp/python/3.13.10/python-3.13.10-macos11.pkg">Python 3.13.10 (.pkg)</a></p>



<figure class="wp-block-image aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="870" height="628" src="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-11.39.29.jpg" alt="" class="wp-image-685" style="aspect-ratio:1.3853938360797684;width:512px;height:auto" srcset="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-11.39.29.jpg 870w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-11.39.29-300x217.jpg 300w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-11.39.29-768x554.jpg 768w" sizes="(max-width: 870px) 100vw, 870px" /><figcaption class="wp-element-caption">Screenshot</figcaption></figure>



<h4 class="wp-block-heading"><span id="toc15">ffmpegの導入</span></h4>



<p id="p-rc_0af43f32d78c8836-24">ffmpegはHomebrewを使ってインストールすると、設定いらずで楽にできます。<br>ターミナルを開き、下記をコマンドを実行してください。<br><code><strong>/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"</strong></code><br></p>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="838" src="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-28-21.26.57-1024x838.png" alt="" class="wp-image-687" style="width:630px;height:auto" srcset="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-28-21.26.57-1024x838.png 1024w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-28-21.26.57-300x245.png 300w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-28-21.26.57-768x628.png 768w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-28-21.26.57-1536x1257.png 1536w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-28-21.26.57.png 1594w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p id="p-rc_0af43f32d78c8836-24"><br>次に <strong><code>brew install ffmpeg</code></strong> と入力して実行するだけで完了です。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="740" height="405" src="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-28-21.28.15.png" alt="" class="wp-image-688" srcset="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-28-21.28.15.png 740w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-28-21.28.15-300x164.png 300w" sizes="(max-width: 740px) 100vw, 740px" /></figure>



<h4 class="wp-block-heading"><span id="toc16">仮想環境（venv）の作成</span></h4>



<p>Windowsと同じく、venvによる仮想環境を作ります。<br>デスクトップなどの作業用フォルダに <code><strong>cd Desktop</strong></code> で移動し、 <code><strong>python3.13 -m venv venv313</strong></code> で作成します。<strong>venv313</strong> がフォルダ名になります。ちょっと時間がかかった後、完了します。<br><code><strong>source venv313/bin/activate</strong></code> で仮想環境を起動します 。<br>成功すると、プロンプトの頭に<strong>(venv313)</strong>が付きます。</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:50%">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="806" src="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-13.21.08-1-1024x806.png" alt="" class="wp-image-693" srcset="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-13.21.08-1-1024x806.png 1024w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-13.21.08-1-300x236.png 300w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-13.21.08-1-768x605.png 768w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-13.21.08-1.png 1384w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:50%">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="806" src="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-13.21.28-1-1024x806.png" alt="" class="wp-image-694" srcset="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-13.21.28-1-1024x806.png 1024w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-13.21.28-1-300x236.png 300w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-13.21.28-1-768x605.png 768w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-13.21.28-1.png 1384w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>
</div>



<h4 class="wp-block-heading"><span id="toc17">ライブラリのインストール</span></h4>



<p>とりあえずpipのアップデート<br><code><strong>pip install -U pip</strong></code><br>そのあと、本命ツール <a href="https://github.com/time4tea/gopro-dashboard-overlay">gopro-dashboard-overlay</a> と、必要なライブラリ<code><strong>setuptools</strong></code>のインストール。<code><strong>setuptools</strong></code> はバージョン81以下でないと今回必要な <strong><code>pkg_resources</code></strong> が含まれなくなり動作しません。<br><code><strong>pip install gopro-overlay "setuptools&lt;81"</strong></code><br>エラーなくインストールが終われば準備完了です。</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%">
<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:50%">
<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="745" src="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-13.33.59-1024x745.png" alt="" class="wp-image-695" srcset="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-13.33.59-1024x745.png 1024w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-13.33.59-300x218.png 300w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-13.33.59-768x559.png 768w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-13.33.59.png 1454w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>
</div>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:50%">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="745" src="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-13.35.48-1024x745.png" alt="" class="wp-image-696" srcset="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-13.35.48-1024x745.png 1024w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-13.35.48-300x218.png 300w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-13.35.48-768x559.png 768w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-20-13.35.48.png 1454w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>
</div>
</div>
</div>



<h3 class="wp-block-heading"><span id="toc18">MP4の結合</span></h3>



<p>分割されたファイルを一本の動画に合体します。<br>Windowsと違ってテキストファイルを作らなくてもターミナルだけでできます。<br>ターミナルを起動し、下記を参考に結合したいファイル名を古い順に入力します。<br>私はフルパスの方が安心なのでフルパスで書いてます。</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#F8F8F2;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#efefe1">zsh</span><span role="button" tabindex="0" style="color:#F8F8F2;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>ffmpeg -f concat -safe 0 -i &lt;(printf "file '%s'\n" \
  /Volumes/SanDisk/GX010216.MP4 \
  /Volumes/SanDisk/GX020216.MP4 \
  /Volumes/SanDisk/GX030216.MP4 \
  /Volumes/SanDisk/GX010217.MP4 \
  /Volumes/SanDisk/GX020217.MP4 \
) \
-map 0:0 -map 0:1 -map 0:3 \
-c copy /Volumes/SanDisk/marge.mp4</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F8F8F2">ffmpeg </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">f concat </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">safe </span><span style="color: #BD93F9">0</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">i </span><span style="color: #FF79C6">&lt;</span><span style="color: #F8F8F2">(printf </span><span style="color: #E9F284">&quot;</span><span style="color: #F1FA8C">file &#39;</span><span style="color: #BD93F9">%s</span><span style="color: #F1FA8C">&#39;</span><span style="color: #FF79C6">\n</span><span style="color: #E9F284">&quot;</span><span style="color: #F8F8F2"> \</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">/</span><span style="color: #F8F8F2">Volumes</span><span style="color: #FF79C6">/</span><span style="color: #F8F8F2">SanDisk</span><span style="color: #FF79C6">/</span><span style="color: #BD93F9">GX010216</span><span style="color: #F8F8F2">.</span><span style="color: #BD93F9">MP4</span><span style="color: #F8F8F2"> \</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">/</span><span style="color: #F8F8F2">Volumes</span><span style="color: #FF79C6">/</span><span style="color: #F8F8F2">SanDisk</span><span style="color: #FF79C6">/</span><span style="color: #BD93F9">GX020216</span><span style="color: #F8F8F2">.</span><span style="color: #BD93F9">MP4</span><span style="color: #F8F8F2"> \</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">/</span><span style="color: #F8F8F2">Volumes</span><span style="color: #FF79C6">/</span><span style="color: #F8F8F2">SanDisk</span><span style="color: #FF79C6">/</span><span style="color: #BD93F9">GX030216</span><span style="color: #F8F8F2">.</span><span style="color: #BD93F9">MP4</span><span style="color: #F8F8F2"> \</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">/</span><span style="color: #F8F8F2">Volumes</span><span style="color: #FF79C6">/</span><span style="color: #F8F8F2">SanDisk</span><span style="color: #FF79C6">/</span><span style="color: #BD93F9">GX010217</span><span style="color: #F8F8F2">.</span><span style="color: #BD93F9">MP4</span><span style="color: #F8F8F2"> \</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">/</span><span style="color: #F8F8F2">Volumes</span><span style="color: #FF79C6">/</span><span style="color: #F8F8F2">SanDisk</span><span style="color: #FF79C6">/</span><span style="color: #BD93F9">GX020217</span><span style="color: #F8F8F2">.</span><span style="color: #BD93F9">MP4</span><span style="color: #F8F8F2"> \</span></span>
<span class="line"><span style="color: #F8F8F2">) \</span></span>
<span class="line"><span style="color: #FF79C6">-</span><span style="color: #8BE9FD">map</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">0</span><span style="color: #F8F8F2">:</span><span style="color: #BD93F9">0</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6">-</span><span style="color: #8BE9FD">map</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">0</span><span style="color: #F8F8F2">:</span><span style="color: #BD93F9">1</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6">-</span><span style="color: #8BE9FD">map</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">0</span><span style="color: #F8F8F2">:</span><span style="color: #BD93F9">3</span><span style="color: #F8F8F2"> \</span></span>
<span class="line"><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">c copy </span><span style="color: #FF79C6">/</span><span style="color: #F8F8F2">Volumes</span><span style="color: #FF79C6">/</span><span style="color: #F8F8F2">SanDisk</span><span style="color: #FF79C6">/</span><span style="color: #F8F8F2">marge.mp4</span></span></code></pre></div>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="590" src="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-28-21.34.54-1024x590.png" alt="" class="wp-image-730" style="width:636px;height:auto" srcset="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-28-21.34.54-1024x590.png 1024w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-28-21.34.54-300x173.png 300w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-28-21.34.54-768x442.png 768w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-28-21.34.54-120x68.png 120w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-01-28-21.34.54.png 1245w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading"><span id="toc19">2K(1080p)画質にエンコード</span></h3>



<p>元の動画が4Kで重いと、後のオーバーレイ処理に時間がかかります。<br>4Kが必要なければ、扱いやすい1080p（フルHD）に変換しましょう。<br>お好みに応じて、4行目のエンコーダのコマンドを選んでください。<br>ハードウェアのほうが速いです。</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers cbp-highlight-hover" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:1.125rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#F8F8F2;--cbp-line-number-width:calc(1 * 0.6 * 1.125rem);--cbp-line-highlight-color:rgba(253, 253, 237, 0.2);line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" style="color:#F8F8F2;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>#ソフトウェアエンコード
  -c:v libx264 -preset veryfast -crf 22 \

#ハードウェアエンコード
  -c:v h264_videotoolbox -b:v 12M \</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #6272A4">#ソフトウェアエンコード</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">c:v libx264 </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">preset veryfast </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">crf </span><span style="color: #BD93F9">22</span><span style="color: #F8F8F2"> \</span></span>
<span class="line"></span>
<span class="line"><span style="color: #6272A4">#ハードウェアエンコード</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">c:v h264_videotoolbox </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">b:v </span><span style="color: #FF5555; font-style: italic; text-decoration: underline">12M</span><span style="color: #F8F8F2"> \</span></span></code></pre></div>



<div class="wp-block-kadence-column kadence-column659_d0ab73-64"><div class="kt-inside-inner-col">
<p>長いのでコマンドを<strong> \ </strong>で複数行に分けました。1行で書いてもかまいません。<br>コピペして編集してコピペしてください。</p>
</div></div>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers cbp-highlight-hover" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:1.125rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#F8F8F2;--cbp-line-number-width:calc(1 * 0.6 * 1.125rem);--cbp-line-highlight-color:rgba(253, 253, 237, 0.2);line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#efefe1">CMD</span><span role="button" tabindex="0" style="color:#F8F8F2;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>ffmpeg -y -i /Volumes/SanDisk/merge.mp4 \
  -map 0:v -map 0:a -map 0:3 \
  -vf "scale=1920:-2" \
  -c:v h264_videotoolbox -b:v 12M \
  -c:a copy \
  -c:d copy \
  /Volumes/SanDisk/1080p.mp4</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F8F8F2">ffmpeg </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">y </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">i </span><span style="color: #FF79C6">/</span><span style="color: #F8F8F2">Volumes</span><span style="color: #FF79C6">/</span><span style="color: #F8F8F2">SanDisk</span><span style="color: #FF79C6">/</span><span style="color: #F8F8F2">merge.mp4 </span><span style="color: #FF79C6">\</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">map </span><span style="color: #BD93F9">0</span><span style="color: #F8F8F2">:v </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">map </span><span style="color: #BD93F9">0</span><span style="color: #F8F8F2">:a </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">map </span><span style="color: #BD93F9">0</span><span style="color: #F8F8F2">:</span><span style="color: #BD93F9">3</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6">\</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">vf </span><span style="color: #E9F284">&quot;</span><span style="color: #F1FA8C">scale=1920:-2</span><span style="color: #E9F284">&quot;</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6">\</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">c:v h264_videotoolbox </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">b:v </span><span style="color: #FF5555; font-style: italic; text-decoration: underline">12M</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6">\</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">c:a copy </span><span style="color: #FF79C6">\</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">c:d copy </span><span style="color: #FF79C6">\</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">/</span><span style="color: #F8F8F2">Volumes</span><span style="color: #FF79C6">/</span><span style="color: #F8F8F2">SanDisk</span><span style="color: #FF79C6">/</span><span style="color: #FF5555; font-style: italic; text-decoration: underline">1080p.mp4</span></span></code></pre></div>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="507" height="391" src="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-21-18.23.59.png" alt="" class="wp-image-735" srcset="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-21-18.23.59.png 507w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-21-18.23.59-300x231.png 300w" sizes="(max-width: 507px) 100vw, 507px" /></figure>



<h3 class="wp-block-heading"><span id="toc20">オーバーレイ処理 (動画にGPS情報を合成)</span></h3>



<p>動画にGPS情報やマップを合成します。<br>仮想環境（venv）を起動し忘れていたら、<code><strong>source ~/venv313/bin/activate</strong></code> で起動してください。<br>コマンドはWindowsとほぼ同じです。<br>詳細なオプションについては、<a href="https://github.com/time4tea/gopro-dashboard-overlay/blob/main/docs/bin/README.md">作者のGitHub</a>を確認してください。</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#F8F8F2;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#efefe1">CMD</span><span role="button" tabindex="0" style="color:#F8F8F2;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>gopro-dashboard.py \
 --debug-metadata \
 --include date_and_time gps_info gps-lock big_mph altitude moving_map journey_map \
 --units-speed kph \
 --gps-speed-max 200 --gps-speed-max-units kph \
 --font "/System/Library/Fonts/Helvetica.ttc" \
 /Volumes/SanDisk/1080.mp4 /Volumes/SanDisk/output.mp4</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F8F8F2">gopro</span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">dashboard.py \</span></span>
<span class="line"><span style="color: #F8F8F2"> </span><span style="color: #FF5555; font-style: italic; text-decoration: underline">--</span><span style="color: #F8F8F2">debug</span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">metadata \</span></span>
<span class="line"><span style="color: #F8F8F2"> </span><span style="color: #FF5555; font-style: italic; text-decoration: underline">--</span><span style="color: #F8F8F2">include date_and_time gps_info gps</span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">lock big_mph altitude moving_map journey_map \</span></span>
<span class="line"><span style="color: #F8F8F2"> </span><span style="color: #FF5555; font-style: italic; text-decoration: underline">--</span><span style="color: #F8F8F2">units</span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">speed kph \</span></span>
<span class="line"><span style="color: #F8F8F2"> </span><span style="color: #FF5555; font-style: italic; text-decoration: underline">--</span><span style="color: #F8F8F2">gps</span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">speed</span><span style="color: #FF79C6">-</span><span style="color: #8BE9FD">max</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">200</span><span style="color: #F8F8F2"> </span><span style="color: #FF5555; font-style: italic; text-decoration: underline">--</span><span style="color: #F8F8F2">gps</span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">speed</span><span style="color: #FF79C6">-</span><span style="color: #8BE9FD">max</span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">units kph \</span></span>
<span class="line"><span style="color: #F8F8F2"> </span><span style="color: #FF5555; font-style: italic; text-decoration: underline">--</span><span style="color: #F8F8F2">font </span><span style="color: #E9F284">&quot;</span><span style="color: #F1FA8C">/System/Library/Fonts/Helvetica.ttc</span><span style="color: #E9F284">&quot;</span><span style="color: #F8F8F2"> \</span></span>
<span class="line"><span style="color: #F8F8F2"> </span><span style="color: #FF79C6">/</span><span style="color: #F8F8F2">Volumes</span><span style="color: #FF79C6">/</span><span style="color: #F8F8F2">SanDisk</span><span style="color: #FF79C6">/</span><span style="color: #BD93F9">1080.</span><span style="color: #F8F8F2">mp4 </span><span style="color: #FF79C6">/</span><span style="color: #F8F8F2">Volumes</span><span style="color: #FF79C6">/</span><span style="color: #F8F8F2">SanDisk</span><span style="color: #FF79C6">/</span><span style="color: #F8F8F2">output.mp4</span></span></code></pre></div>



<p>しばらく待ったら、オーバーレイ処理が完了します。<br><br>　　完成！！</p>



<h2 class="wp-block-heading"><span id="toc21">タイムラプス</span></h2>



<p>GoProで撮影した数時間の走行映像。そのままでは長すぎて見返すのが大変ですよね。<br>映像を8倍速のタイムラプスに変換しつつ、音声も（超早口ですが）しっかり残す技も紹介します。<br><br><code><strong>[0:v]setpts=0.125*PTS</strong></code> で、映像の表示時間を短縮しています。<br><strong><code>[0:a]atempo=2.0,atempo=2.0,atempo=2.0</code></strong> で、音声を短縮しています。<br>FFmpegの <code>atempo</code> フィルターには2.0倍までという制限があります。<br>そのため、8倍速にするには2倍フィルターを3回連結させる必要があります。</p>



<h3 class="wp-block-heading"><span id="toc22">Windows</span></h3>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.75rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#F8F8F2;--cbp-line-number-width:calc(1 * 0.6 * .75rem);line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#efefe1">CMD</span><span role="button" tabindex="0" style="color:#F8F8F2;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>ffmpeg -y -i output.mp4 ^
  -filter_complex "&#91;0:v&#93;setpts=0.125*PTS&#91;v&#93;;&#91;0:a&#93;atempo=2.0,atempo=2.0,atempo=2.0&#91;a&#93;" ^
  -map "&#91;v&#93;" -map "&#91;a&#93;" ^
  -c:v h264_qsv -global_quality 22 -preset veryfast ^
  -c:a aac -b:a 160k ^
  output_timelapse_x8.mp4</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F8F8F2">ffmpeg </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">y </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">i output.mp4 </span><span style="color: #FF79C6">^</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">filter_complex </span><span style="color: #E9F284">&quot;</span><span style="color: #F1FA8C">&#91;0:v&#93;setpts=0.125*PTS&#91;v&#93;;&#91;0:a&#93;atempo=2.0,atempo=2.0,atempo=2.0&#91;a&#93;</span><span style="color: #E9F284">&quot;</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6">^</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">-</span><span style="color: #8BE9FD">map</span><span style="color: #F8F8F2"> </span><span style="color: #E9F284">&quot;</span><span style="color: #F1FA8C">&#91;v&#93;</span><span style="color: #E9F284">&quot;</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6">-</span><span style="color: #8BE9FD">map</span><span style="color: #F8F8F2"> </span><span style="color: #E9F284">&quot;</span><span style="color: #F1FA8C">&#91;a&#93;</span><span style="color: #E9F284">&quot;</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6">^</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">c:v h264_qsv </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">global_quality </span><span style="color: #BD93F9">22</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">preset veryfast </span><span style="color: #FF79C6">^</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">c:a aac </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">b:a </span><span style="color: #FF5555; font-style: italic; text-decoration: underline">160k</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6">^</span></span>
<span class="line"><span style="color: #F8F8F2">  output_timelapse_x8.mp4</span></span></code></pre></div>



<p>　<br></p>



<h3 class="wp-block-heading"><span id="toc23">Mac</span></h3>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.75rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#F8F8F2;--cbp-line-number-width:calc(1 * 0.6 * .75rem);line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#efefe1">CMD</span><span role="button" tabindex="0" style="color:#F8F8F2;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>ffmpeg -y -i output.mp4 \
  -filter_complex "&#91;0:v&#93;setpts=0.125*PTS&#91;v&#93;;&#91;0:a&#93;atempo=2.0,atempo=2.0,atempo=2.0&#91;a&#93;" \
  -map "&#91;v&#93;" -map "&#91;a&#93;" \
  -c:v h264_videotoolbox -b:v 12M \
  -c:a aac -b:a 160k \
  output_timelapse_x8.mp4</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F8F8F2">ffmpeg </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">y </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">i output.mp4 \</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">filter_complex </span><span style="color: #E9F284">&quot;</span><span style="color: #F1FA8C">&#91;0:v&#93;setpts=0.125*PTS&#91;v&#93;;&#91;0:a&#93;atempo=2.0,atempo=2.0,atempo=2.0&#91;a&#93;</span><span style="color: #E9F284">&quot;</span><span style="color: #F8F8F2"> \</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">-</span><span style="color: #8BE9FD">map</span><span style="color: #F8F8F2"> </span><span style="color: #E9F284">&quot;</span><span style="color: #F1FA8C">&#91;v&#93;</span><span style="color: #E9F284">&quot;</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6">-</span><span style="color: #8BE9FD">map</span><span style="color: #F8F8F2"> </span><span style="color: #E9F284">&quot;</span><span style="color: #F1FA8C">&#91;a&#93;</span><span style="color: #E9F284">&quot;</span><span style="color: #F8F8F2"> \</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">c:v h264_videotoolbox </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">b:v </span><span style="color: #FF5555; font-style: italic; text-decoration: underline">12M</span><span style="color: #F8F8F2"> \</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">c:a aac </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">b:a </span><span style="color: #FF5555; font-style: italic; text-decoration: underline">160k</span><span style="color: #F8F8F2"> \</span></span>
<span class="line"><span style="color: #F8F8F2">  output_timelapse_x8.mp4</span></span></code></pre></div>



<p></p>



<h2 class="wp-block-heading"><span id="toc24">おまけ</span></h2>



<p>コマンドがめんどくさいので、GUIのソフトを作りました。<br><strong><a href="https://github.com/hide4849/GoPro-Overlay-GUI">GoPro-Overlay-GUI</a></strong></p>



<figure class="wp-block-image aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="622" src="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-22-210457-1-1024x622.png" alt="" class="wp-image-748" srcset="https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-22-210457-1-1024x622.png 1024w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-22-210457-1-300x182.png 300w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-22-210457-1-768x466.png 768w, https://enpitusya.jp/wp-content/uploads/2026/02/スクリーンショット-2026-02-22-210457-1.png 1128w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>git cloneでダウンロードして記載の通りにビルドしてください。<br><a href="https://github.com/hide4849/GoPro-Overlay-GUI/releases">リリースページ</a> から実行ファイルEXEもダウンロードできます。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://enpitusya.jp/659/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>M5StickC Plusで SONYデジカメ用リモコンを作る</title>
		<link>https://enpitusya.jp/348/</link>
		
		<dc:creator><![CDATA[あめかよ]]></dc:creator>
		<pubDate>Tue, 06 Sep 2022 13:57:34 +0000</pubDate>
				<category><![CDATA[tech]]></category>
		<category><![CDATA[M5Stick]]></category>
		<category><![CDATA[sony]]></category>
		<category><![CDATA[カメラ]]></category>
		<category><![CDATA[リモコン]]></category>
		<guid isPermaLink="false">http://enpitusya.jp/?p=348</guid>

					<description><![CDATA[花火撮影は、シャッターを押している間、シャッターが開くバルブ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>花火撮影は、シャッターを押している間、シャッターが開くバルブモードにして撮影すると、いい感じに撮影できる。でも、どうしても手ブレが発生してしまう……。<br><br>この悩みは、どうやら “カメラ用リモコン”が解決してくれる！らしい。<br>リモコンにはいくつか種類があって、コストや使い勝手などで選ぶことを<a href="https://enpitusya.jp/337/" target="_blank">前回ご紹介</a>しました。</p>



<ul class="wp-block-list"><li>有線タイプ</li><li>Bluetoothタイプ</li><li>赤外線タイプ</li></ul>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" src="https://enpitusya.jp/wp-content/uploads/2022/09/20220830_144622-1024x768.jpg" alt="" class="wp-image-387" width="688" height="516" srcset="https://enpitusya.jp/wp-content/uploads/2022/09/20220830_144622-1024x768.jpg 1024w, https://enpitusya.jp/wp-content/uploads/2022/09/20220830_144622-300x225.jpg 300w, https://enpitusya.jp/wp-content/uploads/2022/09/20220830_144622-768x576.jpg 768w, https://enpitusya.jp/wp-content/uploads/2022/09/20220830_144622-1536x1152.jpg 1536w, https://enpitusya.jp/wp-content/uploads/2022/09/20220830_144622-2048x1536.jpg 2048w" sizes="(max-width: 688px) 100vw, 688px" /></figure>



<p>それぞれのメリットデメリットをさらっと調べ、“赤外線タイプ” が一番自分に合ってそう！と考えポチろうとしたところでふと、思いました。<br></p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">「これ、M5で作れるのでは ?」</a><ol><li><a href="#toc2" tabindex="0">工程</a></li><li><a href="#toc3" tabindex="0">リモコンの赤外線通信の仕様を調べる</a></li><li><a href="#toc4" tabindex="0">必要なのは送信データ</a></li><li><a href="#toc5" tabindex="0">コーディング</a></li><li><a href="#toc6" tabindex="0">省電力化</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">「これ、M5で作れるのでは ?」</span></h2>



<p>そう、どこの家庭にも一つや二つ転がっているM5シリーズ。（転がってない）。<br>M5Stickには、赤外線LEDが内蔵されている。まさにうってつけ！</p>



<p>ということで「M5Stick C Plus」をつかって “シャッターリモコン”を自作してみることに。</p>



<h3 class="wp-block-heading"><span id="toc2">工程</span></h3>



<ul class="wp-block-list"><li>リモコンの赤外線通信の仕様を調べる</li><li>送信データを調べる</li><li>コーディングする（オンオフ切り替えて赤外線LEDを光らせる）</li><li>省電力化</li></ul>



<h3 class="wp-block-heading"><span id="toc3">リモコンの赤外線通信の仕様を調べる</span></h3>



<p>ソニーの赤外線の仕様は下記の通り<br>・搬送波：40kHz Duty30%のPWM (38kHzという説も)<br>・1T ：600us<br>・0：OFF 1T、ON 1T<br>・1：OFF 1T、ON 2T<br>・Leader：4T<br>・フレーム間隔：45ms</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><img loading="lazy" decoding="async" width="800" height="420" class="wp-image-367" style="width: 800px;" src="https://enpitusya.jp/wp-content/uploads/2022/09/ir_sony.png" alt="" srcset="https://enpitusya.jp/wp-content/uploads/2022/09/ir_sony.png 648w, https://enpitusya.jp/wp-content/uploads/2022/09/ir_sony-300x157.png 300w" sizes="(max-width: 800px) 100vw, 800px" /></p><cite>引用： <a rel="noopener" href="http://elm-chan.org/docs/ir_format.html" target="_blank">赤外線リモコンのフォーマット</a>　ChaNさん</cite></blockquote>



<p></p>



<h3 class="wp-block-heading"><span id="toc4">必要なのは送信データ</span></h3>



<p>アドレス：0x1E3A (0b1111000111010)<br>シャッター：0x2D (0b101101)</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><img loading="lazy" decoding="async" width="400" height="377" class="wp-image-369" style="width: 400px;" src="https://enpitusya.jp/wp-content/uploads/2022/09/IRremote_SONYNEX_01.jpg" alt="" srcset="https://enpitusya.jp/wp-content/uploads/2022/09/IRremote_SONYNEX_01.jpg 543w, https://enpitusya.jp/wp-content/uploads/2022/09/IRremote_SONYNEX_01-300x283.jpg 300w" sizes="(max-width: 400px) 100vw, 400px" /></p><cite>引用： <a href="http://vabenecosi.blog.fc2.com/blog-entry-14.html">IRリモコン3種製作（その１：SONY NEX用リモコン）</a>　vabenecosiさん</cite></blockquote>



<p></p>



<p>これだけ分かれば</p>



<h3 class="wp-block-heading"><span id="toc5">コーディング</span></h3>



<p>M5シリーズに使われているESP32にはPMW機能がついてるので、それをオンオフ切り替えて赤外線LEDを光らせるだけ！</p>



<div class="wp-block-codemirror-blocks-code-block code-block"><pre class="CodeMirror" data-setting="{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;clike&quot;,&quot;mime&quot;:&quot;text/x-csrc&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;extraBottomMargin&quot;:&quot;&quot;,&quot;language&quot;:&quot;C&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;c&quot;}">#include &lt;M5StickCPlus.h&gt;

#define	LED				10	// 内蔵赤色LED(動作確認用)
#define	IR_OUTPUT		9	// 内蔵赤外線LED
#define	DEBUG_OUTPUT	26	// 波形確認用ピンヘッダ出力

void setup(){
	pinMode(DEBUG_OUTPUT, OUTPUT);
	pinMode(IR_OUTPUT, OUTPUT);
	ledcSetup(0, 40000, 8);		// PWM設定：CH0 40kHz, 8bit(256段階)
	ledcWrite(0, 180);			// PWM設定：CH0 Duty30%(180=256*0.7)
}

// Leader ON:2.4ms
void sendLeader(){
	// PWM出力
	ledcAttachPin(DEBUG_OUTPUT, 0);ledcAttachPin(IR_OUTPUT, 0);
	delayMicroseconds(2400);
	// PWM停止
	ledcDetachPin(DEBUG_OUTPUT);ledcDetachPin(IR_OUTPUT);
	digitalWrite(IR_OUTPUT, HIGH);digitalWrite(DEBUG_OUTPUT, HIGH);
}

// 0(OFF:600us ON:600us)  1(OFF:600us ON:1200us)
void sendBit(bool f){
	// OFF:600us
	delayMicroseconds(600);
	
	// PWM出力 ON:600us
	ledcAttachPin(DEBUG_OUTPUT, 0);ledcAttachPin(IR_OUTPUT, 0);
	delayMicroseconds(600);
	// もし1であれば追加のON:600us
	if (f)
		delayMicroseconds(600);
	
	// PWM停止
	ledcDetachPin(DEBUG_OUTPUT);ledcDetachPin(IR_OUTPUT);
	digitalWrite(IR_OUTPUT, HIGH);digitalWrite(DEBUG_OUTPUT, HIGH);
}

void sendCommand(uint8_t data, uint16_t addr){
	uint16_t c;
	
	c = data;
	// データを下位ビットから順番に送る
	for (int i = 0; i &lt; 7; i++) {
		sendBit(c &amp; 1);
		c &gt;&gt;= 1;
	}
	
	c = addr;
	// アドレスを下位ビットから順番に送る
	for (int i = 0; i &lt; 13; i++) {
		sendBit(c &amp; 1);
		c &gt;&gt;= 1;
	}
}

void loop(){
	pinMode(LED, OUTPUT);	// 動作確認用LED 点灯
	
	// 5回リピート
	for (int i=0;i&lt;5;i++){
		sendLeader();
		sendCommand(0x2d, 0x1e3a);
		delay(11);	// 1フレーム45msになるよう間隔調整
	}
	
	digitalWrite(LED, LOW);	// 動作確認用LED 消灯
	
	delay(1000);
}</pre></div>



<p>まずは、動作確認用で1秒おきに信号を送るコード。<br>うまく出来たら1秒ごとに、1フレーム45msが5回繰り返す、こんな波形がでます。👇👇</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1024" height="768" src="https://enpitusya.jp/wp-content/uploads/2022/09/camera_ir_1cycle.png" alt="" class="wp-image-373" srcset="https://enpitusya.jp/wp-content/uploads/2022/09/camera_ir_1cycle.png 1024w, https://enpitusya.jp/wp-content/uploads/2022/09/camera_ir_1cycle-300x225.png 300w, https://enpitusya.jp/wp-content/uploads/2022/09/camera_ir_1cycle-768x576.png 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>1フレームだけを拡大するとこんな感じ。<br><br>赤外線LEDの波形<br>上がってる時▶︎ 消えている ■<br>下がってる時▶︎ が光ってる 💡<br><br>間隔と逆なのは、M5Stickの回路のせい。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" src="https://enpitusya.jp/wp-content/uploads/2022/09/camera_ir_frame2-1024x768.png" alt="" class="wp-image-376" srcset="https://enpitusya.jp/wp-content/uploads/2022/09/camera_ir_frame2-1024x768.png 1024w, https://enpitusya.jp/wp-content/uploads/2022/09/camera_ir_frame2-300x225.png 300w, https://enpitusya.jp/wp-content/uploads/2022/09/camera_ir_frame2-768x576.png 768w, https://enpitusya.jp/wp-content/uploads/2022/09/camera_ir_frame2-1536x1152.png 1536w, https://enpitusya.jp/wp-content/uploads/2022/09/camera_ir_frame2-2048x1536.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>最初にリーダーが2.4ms、次にデータ・アドレスが続く構造。<br>シャッターを切るコマンドは 0x2Dで00101101 なのに 10110100 と逆になってるのは、<br>右から順番に送信するリトルエンディアンという(LSB)方式だから。アドレスも同じ。<br><br>波形的には良さそうなので、カメラに向けてみた。<br>でもなぜか2秒以上の間隔でシャッターが切れる。。。なんで？<br><br>あ、自動プレビューか！オフにしたら1秒間隔で撮影できた。</p>



<p>次はM5ボタンを押すとシャッターが切れるように変更、これは簡単。この3つ追加するだけ。</p>



<ul class="wp-block-list"><li>M5.begin()</li><li>M5.update()</li><li>M5.BtnA.wasPressed()</li></ul>



<div class="wp-block-codemirror-blocks-code-block code-block"><pre class="CodeMirror" data-setting="{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;clike&quot;,&quot;mime&quot;:&quot;text/x-csrc&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;extraBottomMargin&quot;:&quot;&quot;,&quot;language&quot;:&quot;C&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;c&quot;}">#include &lt;M5StickCPlus.h&gt;

#define	LED				10	// 内蔵赤色LED(動作確認用)
#define	IR_OUTPUT		9	// 内蔵赤外線LED
#define	DEBUG_OUTPUT	26	// 波形確認用ピンヘッダ出力

void setup(){
  	M5.begin();
	pinMode(DEBUG_OUTPUT, OUTPUT);
	pinMode(IR_OUTPUT, OUTPUT);
	ledcSetup(0, 40000, 8);		// PWM設定：CH0 40kHz, 8bit(256段階)
	ledcWrite(0, 180);			// PWM設定：CH0 Duty30%(実測値)
}

// Leader ON:2.4ms
void sendLeader(){
	// PWM出力
	ledcAttachPin(DEBUG_OUTPUT, 0);ledcAttachPin(IR_OUTPUT, 0);
	delayMicroseconds(2400);
	// PWM停止
	ledcDetachPin(DEBUG_OUTPUT);ledcDetachPin(IR_OUTPUT);
	digitalWrite(IR_OUTPUT, HIGH);digitalWrite(DEBUG_OUTPUT, HIGH);
}

// 0(OFF:600us ON:600us)  1(OFF:600us ON:1200us)
void sendBit(bool f){
	// OFF:600us
	delayMicroseconds(600);
	
	// PWM出力 ON:600us
	ledcAttachPin(DEBUG_OUTPUT, 0);ledcAttachPin(IR_OUTPUT, 0);
	delayMicroseconds(600);
	// もし1であれば追加のON:600us
	if (f)
		delayMicroseconds(600);
	
	// PWM停止
	ledcDetachPin(DEBUG_OUTPUT);ledcDetachPin(IR_OUTPUT);
	digitalWrite(IR_OUTPUT, HIGH);digitalWrite(DEBUG_OUTPUT, HIGH);
}

void sendCommand(uint8_t data, uint16_t addr){
	uint16_t c;
	
	c = data;
	// データを下位ビットから順番に送る
	for (int i = 0; i &lt; 7; i++) {
		sendBit(c &amp; 1);
		c &gt;&gt;= 1;
	}
	
	c = addr;
	// アドレスを下位ビットから順番に送る
	for (int i = 0; i &lt; 13; i++) {
		sendBit(c &amp; 1);
		c &gt;&gt;= 1;
	}
}

void loop(){
	M5.update();
	
	// M5ボタン押したら送信
	if( M5.BtnA.wasPressed() ){
		pinMode(LED, OUTPUT);	// 動作確認用LED 点灯
        // 5回リピート
        for (int i=0;i&lt;5;i++){
            sendLeader();
            sendCommand(0x2d, 0x1e3a);
            delay(11);			// 1フレーム45msになるよう間隔調整
        }
      	digitalWrite(LED, LOW);	// 動作確認用LED 消灯
    }
	delay(1);
}</pre></div>



<p></p>



<h3 class="wp-block-heading"><span id="toc6">省電力化</span></h3>



<p>初期状態で70mAぐらいの消費なので、内蔵バッテリー120mAhだと1時間ちょっとしか使えない……。</p>



<p>クロック周波数を下げてもいまいちだったので、<br>普段はディープスリープさせておき、M5ボタンを押したときだけ起きて、<br>赤外線送信後にまたディープスリープするように変更。</p>



<div class="wp-block-codemirror-blocks-code-block code-block"><pre class="CodeMirror" data-setting="{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;clike&quot;,&quot;mime&quot;:&quot;text/x-csrc&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;extraBottomMargin&quot;:&quot;&quot;,&quot;language&quot;:&quot;C&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;c&quot;}">#include &lt;M5StickCPlus.h&gt;

#define	LED				10	// 内蔵赤色LED(動作確認用)
#define	IR_OUTPUT		9	// 内蔵赤外線LED
#define	DEBUG_OUTPUT	26	// 波形確認用ピンヘッダ出力

void setup(){
  	M5.begin();
	pinMode(DEBUG_OUTPUT, OUTPUT);
	pinMode(IR_OUTPUT, OUTPUT);
	ledcSetup(0, 40000, 8);		// PWM設定：CH0 40kHz, 8bit(256段階)
	ledcWrite(0, 180);			// PWM設定：CH0 Duty30%(実測値)
}

// Leader ON:2.4ms
void sendLeader(){
	// PWM出力
	ledcAttachPin(DEBUG_OUTPUT, 0);ledcAttachPin(IR_OUTPUT, 0);
	delayMicroseconds(2400);
	// PWM停止
	ledcDetachPin(DEBUG_OUTPUT);ledcDetachPin(IR_OUTPUT);
	digitalWrite(IR_OUTPUT, HIGH);digitalWrite(DEBUG_OUTPUT, HIGH);
}

// 0(OFF:600us ON:600us)  1(OFF:600us ON:1200us)
void sendBit(bool f){
	// OFF:600us
	delayMicroseconds(600);
	
	// PWM出力 ON:600us
	ledcAttachPin(DEBUG_OUTPUT, 0);ledcAttachPin(IR_OUTPUT, 0);
	delayMicroseconds(600);
	// もし1であれば追加のON:600us
	if (f)
		delayMicroseconds(600);
	
	// PWM停止
	ledcDetachPin(DEBUG_OUTPUT);ledcDetachPin(IR_OUTPUT);
	digitalWrite(IR_OUTPUT, HIGH);digitalWrite(DEBUG_OUTPUT, HIGH);
}

void sendCommand(uint8_t data, uint16_t addr){
	uint16_t c;
	
	c = data;
	// データを下位ビットから順番に送る
	for (int i = 0; i &lt; 7; i++) {
		sendBit(c &amp; 1);
		c &gt;&gt;= 1;
	}
	
	c = addr;
	// アドレスを下位ビットから順番に送る
	for (int i = 0; i &lt; 13; i++) {
		sendBit(c &amp; 1);
		c &gt;&gt;= 1;
	}
}

void loop(){
	//M5.update();

		// M5ボタン押したら送信
	if( M5.BtnA.wasPressed() ){
        // 5回リピート
        for (int i=0;i&lt;5;i++){
            sendLeader();
            sendCommand(0x2d, 0x1e3a);
			// 5回目にはdelay入れないため
          	if(i!=4)
				delay(11);			// 1フレーム45msになるよう間隔調整
        }
		pinMode(LED, OUTPUT);	// 動作確認用LED 点灯
      	digitalWrite(LED, LOW);	// 動作確認用LED 消灯
    }
	
	// GPIO37(M5StickCのM5ボタン)がLOWになったら起動
	pinMode(GPIO_NUM_37, INPUT_PULLUP);
	esp_sleep_enable_ext0_wakeup(GPIO_NUM_37, LOW);
	// ディープスリープ
	M5.Axp.ScreenBreath(0);    // 画面の輝度OFF
	esp_deep_sleep_start();
}
</pre></div>



<p>最終版の波形がこちら。緑がバッテリー端子、黄色が赤外線の波形</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1024" height="768" src="https://enpitusya.jp/wp-content/uploads/2022/09/camera_ir_lowpower.png" alt="" class="wp-image-381" srcset="https://enpitusya.jp/wp-content/uploads/2022/09/camera_ir_lowpower.png 1024w, https://enpitusya.jp/wp-content/uploads/2022/09/camera_ir_lowpower-300x225.png 300w, https://enpitusya.jp/wp-content/uploads/2022/09/camera_ir_lowpower-768x576.png 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>バッテリーの電圧降下的に、M5ボタンが押されて起動してから信号送信まで130msもかかってる。<br>起動処理かな？起動時間の37%も無駄にしてるのは電池がもったいないけど仕方が無い。。。</p>



<p>ディープスリープがまぁまぁ優秀なようで、画面消してるから消費電流表示させる手段がないけど、満充電してポチポチ適当に押して2日以上電池持ってる。<br>これでさすがに1イベント中は電池もちそうなので、実用できそう！<br>どうしても気になる人は、バッテリー外してピンヘッダーから電源供給して電流計ってみてくださいー</p>



<figure class="wp-block-video"><video height="720" style="aspect-ratio: 1280 / 720;" width="1280" controls src="https://enpitusya.jp/wp-content/uploads/2022/09/20220830.mp4"></video></figure>
]]></content:encoded>
					
		
		<enclosure url="http://enpitusya.jp/wp-content/uploads/2022/09/20220830.mp4" length="1748601" type="video/mp4" />

			</item>
		<item>
		<title>シャッターリモコンをつかって花火を撮影してみたらけっこういけたよ！</title>
		<link>https://enpitusya.jp/337/</link>
					<comments>https://enpitusya.jp/337/#respond</comments>
		
		<dc:creator><![CDATA[あめかよ]]></dc:creator>
		<pubDate>Thu, 01 Sep 2022 06:01:29 +0000</pubDate>
				<category><![CDATA[tech]]></category>
		<category><![CDATA[M5Stick]]></category>
		<category><![CDATA[sony]]></category>
		<category><![CDATA[カメラ]]></category>
		<category><![CDATA[リモコン]]></category>
		<guid isPermaLink="false">http://enpitusya.jp/?p=337</guid>

					<description><![CDATA[セミをしのぐコウロギの鳴き声で、秋への期待が高まる9月。この [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>セミをしのぐコウロギの鳴き声で、秋への期待が高まる9月。<br>この夏は、「３年ぶりの」と冠のつくイベントもたくさんありました。<br>やっぱり夏は、こうでなきゃ。これまで感じたことのなかった「ありがたみ」と共に、夏祭り、盆踊り、地蔵盆や花火でたくさん写真を撮りました。</p>



<p>汗だくになりながら、大きいカメラを構え、マスクのせいで曇ったメガネでボヤッとしながらやっとのことで撮った花火。<br>はてな？黒くない。明るくない。ボケボケだ。<br><br>花火の写真の難しさってなんなん？<br>この「点」なんなん？ボケボケなんですけど〜<br>教えてソニーさん！<br>ということで、「花火の撮り方講座」に参加。そこで目から鱗の数々と出会うことに。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="563" height="422" src="https://enpitusya.jp/wp-content/uploads/2022/08/20220827_202711.jpg" alt="" class="wp-image-338" srcset="https://enpitusya.jp/wp-content/uploads/2022/08/20220827_202711.jpg 563w, https://enpitusya.jp/wp-content/uploads/2022/08/20220827_202711-300x225.jpg 300w" sizes="(max-width: 563px) 100vw, 563px" /></figure>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-6" checked><label class="toc-title" for="toc-checkbox-6">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">花火の撮影にはバルブモードを使ってみよう！</a></li><li><a href="#toc2" tabindex="0">そこで活躍するのがカメラ用リモコン</a></li><li><a href="#toc3" tabindex="0">αシリーズで使えるリモコンの接続方法は3種類</a></li><li><a href="#toc4" tabindex="0">カメラリモコン、どれを選ぶ？</a></li><li><a href="#toc5" tabindex="0">「それ、M5でつくれるよ」</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">花火の撮影にはバルブモードを使ってみよう！</span></h2>



<p>バルブモードはシャッターボタンを押してる間、シャッターを開けるモード。<br>花火が上がってるときから開ききるまでシャッターを開けていると、思い描いていた花火を撮ることができる！だいたいできる。だいたいできた。</p>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://enpitusya.jp/wp-content/uploads/2022/08/DSC00106-ARW-edited.jpg" alt="" class="wp-image-342" width="466" srcset="https://enpitusya.jp/wp-content/uploads/2022/08/DSC00106-ARW-edited.jpg 1751w, https://enpitusya.jp/wp-content/uploads/2022/08/DSC00106-ARW-edited-300x300.jpg 300w, https://enpitusya.jp/wp-content/uploads/2022/08/DSC00106-ARW-edited-1022x1024.jpg 1022w, https://enpitusya.jp/wp-content/uploads/2022/08/DSC00106-ARW-edited-150x150.jpg 150w, https://enpitusya.jp/wp-content/uploads/2022/08/DSC00106-ARW-edited-768x769.jpg 768w, https://enpitusya.jp/wp-content/uploads/2022/08/DSC00106-ARW-edited-1533x1536.jpg 1533w, https://enpitusya.jp/wp-content/uploads/2022/08/DSC00106-ARW-edited-100x100.jpg 100w" sizes="(max-width: 1751px) 100vw, 1751px" /></figure>



<p>だからといって、ずっとシャッターボタンを押していると、三脚を使っても手ブレでひどい有様に。。。</p>



<h2 class="wp-block-heading"><span id="toc2">そこで活躍するのがカメラ用リモコン</span></h2>



<p>「なくてもいいよ、でもあったら楽ちんだよー」<br>その手があったのか。</p>



<h2 class="wp-block-heading"><span id="toc3">αシリーズで使えるリモコンの接続方法は3種類</span></h2>



<p></p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="806" height="442" src="https://enpitusya.jp/wp-content/uploads/2022/08/RM-VPR1.png" alt="" class="wp-image-343" srcset="https://enpitusya.jp/wp-content/uploads/2022/08/RM-VPR1.png 806w, https://enpitusya.jp/wp-content/uploads/2022/08/RM-VPR1-300x165.png 300w, https://enpitusya.jp/wp-content/uploads/2022/08/RM-VPR1-768x421.png 768w" sizes="(max-width: 806px) 100vw, 806px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<p>有線タイプ (定価7,590円前後)<br>USBの端子に接続して使用するリモコン。バルブ撮影では、スライドスイッチを操作して撮影する。線が繋がっているので、ぐいと引っ張ったりしてカメラを動かさないよう注意が必要！</p>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="796" height="480" src="https://enpitusya.jp/wp-content/uploads/2022/08/RMT-P1BT.png" alt="" class="wp-image-344" srcset="https://enpitusya.jp/wp-content/uploads/2022/08/RMT-P1BT.png 796w, https://enpitusya.jp/wp-content/uploads/2022/08/RMT-P1BT-300x181.png 300w, https://enpitusya.jp/wp-content/uploads/2022/08/RMT-P1BT-768x463.png 768w" sizes="(max-width: 796px) 100vw, 796px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<p>Bluetoothタイプ (定価7,700円前後)<br>見た目がスタイリッシュ。（めちゃ個人の感想）Bluetooth接続なので、カメラにリモコンを向けなくても操作できて一番便利！<br>でも、Bluetoothリモコンの使用中はスマホ接続での位置情報記録が出来ないのが大きな痛手。バルブ撮影では、1回押すと撮影開始で、もう一度押すとシャッターが閉じる動作。</p>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="795" height="430" src="https://enpitusya.jp/wp-content/uploads/2022/08/RMT-DSLR2.png" alt="" class="wp-image-345" srcset="https://enpitusya.jp/wp-content/uploads/2022/08/RMT-DSLR2.png 795w, https://enpitusya.jp/wp-content/uploads/2022/08/RMT-DSLR2-300x162.png 300w, https://enpitusya.jp/wp-content/uploads/2022/08/RMT-DSLR2-768x415.png 768w" sizes="(max-width: 795px) 100vw, 795px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<p>赤外線タイプ (定価3,520円前後)<br>一番安いリモコン。でもボタンの数は一番多くて高性能。赤外線の受光部がカメラの前にしかないのが難点。バルブ撮影では、1回押すと撮影開始で、もう一度押すとシャッターが閉じる動作。</p>
</div>
</div>



<h2 class="wp-block-heading"><span id="toc4">カメラリモコン、どれを選ぶ？</span></h2>



<p>有線はかさばるし、Bluetoothは写真に位置情報の記録ができない。<br>だからといってどれも致命的なデメリットというほどではないのだけれど……。</p>



<p><br>ということで消去法で、<strong>赤外線リモコン</strong>を選択。</p>



<p>うんうん。まずまずなんじゃないかな。（自己満足）</p>



<p></p>



<h2 class="wp-block-heading"><span id="toc5">「それ、M5でつくれるよ」</span></h2>



<p><strong>夢の中で誰かが語りかけてきました。</strong><br>え？え？なんて？？作れるってどゆこと？</p>



<figure class="wp-block-image alignleft size-full is-resized"><img loading="lazy" decoding="async" src="https://enpitusya.jp/wp-content/uploads/2022/08/m5stickc_cushion.png" alt="" class="wp-image-346" width="321" height="321" srcset="https://enpitusya.jp/wp-content/uploads/2022/08/m5stickc_cushion.png 876w, https://enpitusya.jp/wp-content/uploads/2022/08/m5stickc_cushion-300x300.png 300w, https://enpitusya.jp/wp-content/uploads/2022/08/m5stickc_cushion-150x150.png 150w, https://enpitusya.jp/wp-content/uploads/2022/08/m5stickc_cushion-768x768.png 768w, https://enpitusya.jp/wp-content/uploads/2022/08/m5stickc_cushion-100x100.png 100w" sizes="(max-width: 321px) 100vw, 321px" /></figure>



<p>次回、リモコン製作 編</p>
]]></content:encoded>
					
					<wfw:commentRss>https://enpitusya.jp/337/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin


Served from: enpitusya.jp @ 2026-04-17 20:42:57 by W3 Total Cache
-->