Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Okayama.なんか #5 : Okayama.Process
Search
Takeshi FURUSATO
June 01, 2025
Technology
0
54
Okayama.なんか #5 : Okayama.Process
2025年6月1日に開催されたOkayama.なんか #5 : Okayama.Processで登壇した資料。
「大型イベントの大量セッション動画編集をエクシェル芸で効率化、爆速公開した話」
Takeshi FURUSATO
June 01, 2025
Tweet
Share
More Decks by Takeshi FURUSATO
See All by Takeshi FURUSATO
Okayama WordPress Meetup #12 | そのバックアップ、本当に復元できますか? リストアやってみた!
takeshifurusato
0
130
JAWS DAYS 2025 ボランティアスタッフ統括やってみた!
takeshifurusato
0
91
「DenimTech」 ITエンジニアとして岡山で働く理由 ※ふるさとの場合
takeshifurusato
0
10
JBUG岡山 #6 WordCamp男木島の チームビルディング
takeshifurusato
0
360
kintone Café 岡山 vol.7 × SORACOM UG Okayama vol.4 オープニング
takeshifurusato
0
59
kintoneでIoTデータを収集してみた
takeshifurusato
0
150
20210525 TwilioJP-UG Online TwilioSync
takeshifurusato
0
290
FAXによる二要素認証
takeshifurusato
0
440
20201205_OkayamaWordPressMeetup#6_relocate_wordpress
takeshifurusato
0
350
Other Decks in Technology
See All in Technology
原則から考える保守しやすいComposable関数設計
moriatsushi
3
480
エンジニア採用から始まる技術広報と組織づくり/202506lt
nishiuma
8
1.7k
Observability infrastructure behind the trillion-messages scale Kafka platform
lycorptech_jp
PRO
0
100
讓測試不再 BB! 從 BDD 到 CI/CD, 不靠人力也能 MVP
line_developers_tw
PRO
0
270
菸酒生在 LINE Taiwan 的後端雙刀流
line_developers_tw
PRO
0
250
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
50
30k
Agentic DevOps時代の生存戦略
kkamegawa
0
580
Definition of Done
kawaguti
PRO
5
380
Devin(Deep) Wiki/Searchの活用で変わる開発の世界観/devin-wiki-search-impact
tomoki10
0
660
Amazon Q Developer for GitHubとAmplify Hosting でサクッとデジタル名刺を作ってみた
kmiya84377
0
3.5k
マルチテナント+マルチプロダクト SaaS への AI Agent の組み込み方
kworkdev
PRO
2
370
ユーザーのプロフィールデータを活用した推薦精度向上の取り組み
yudai00
0
430
Featured
See All Featured
Documentation Writing (for coders)
carmenintech
71
4.9k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
480
Writing Fast Ruby
sferik
628
61k
The Cult of Friendly URLs
andyhume
79
6.4k
Navigating Team Friction
lara
186
15k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
43
2.4k
Testing 201, or: Great Expectations
jmmastey
42
7.5k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.5k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3k
The Straight Up "How To Draw Better" Workshop
denniskardys
233
140k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Transcript
2025-06-01 14:00〜18:00 Takeshi Furusato 【Okayama.なんか #5】Okayama.Process #okanan 大型イベントの大量セッション動画編集を エクシェル芸で効率化、爆速公開した話
株式会社DIGITALJET プログラマー AWS Samurai 2022 JAWS-UG Okayama コアメンバー JP_Stripes Okayama
コアメンバー Okayama WordPress Meetup オーガナイザー SORACOM UG Okayama コアメンバー 自称めんツナかんかんエバンジェリスト 古里 武士 Takeshi Furusato #okanan
今回の話とは関係ないけど、 、 、 自称エバンジェリスト活動をこじらせまして、 、 、 レシピブログを書籍化しました(配布済・在庫切れ) 【宣伝】レシピブログを書籍化 #okanan 「
めん ツナ かん かん レシピ」で検索
本日のゴール ここでのエクシェル芸とは、 、 、 「Excel(スプレッドシート) ✕ Shell生成芸」 ですw Excel(スプレッドシート) のセル参照を使って、Shellコマ
ンドを生成して作業の効率化をしてみましょうー。 ※ちなみに逸般的な「エクシェル芸」とはExcelファイルをShellコマンドでゴリゴリに改 変・加工する芸のことを指し、本件とは異なる場合があります。ご注意ください。 #okanan
今回ご紹介する例 コロナ禍〜現在にて、JAWS-UGのオンライン・オフライ ンイベントのセッション動画をアーカイブ →1週間〜1ヶ月以内でYouTubeで公開したい →イベント終了後、熱が冷める前にアーカイブ公開 JAWS DAYS 2021:62本 JAWS PANKRATION
2021:70本 JAWS DAYS 2022:67本 JAWS DAYS 2024:44本 JAWS PANKRATION 2024:76本 JAWS DAYS 2025:41本 #okanan
JAWS-UG YouTube https://www.youtube.com/@awsjcommunitymeetups #okanan 編集・公開しました!!
JAWS-UGとは AWS-UGとは、AWS (Amazon Web Services) が提供す るクラウドコンピューティングを利用する人々の集まり (コミュニティ)です。 #okanan
▪JAWS FESTA 2025 in Kanazawa 日時:2025/10/11(土) 10:00- ?? https://jawsfesta2025.jaws-ug.jp/ まだ非公開ですけど、
、 、 ▪JAWS-UG Okayama 2025 日時:2025/08/30(土) 13:00-17:00 場所:ここ!(倉敷物語館 2F 会議室) 【宣伝】JAWS-UG イベント #okanan
JAWS DAYS 2021、2022 コロナ禍、対面イベントができないなか、フルオンライン で開催 4トラックのオンラインセッションをリアルタイム配信 ※OBS+Amazon IVS+AWS Elemental MediaLive
※StreamYard+Amazon IVS 1つのコミュニケーションスペースによる企画 1つのハンズオントラック https://jawsdays2021.jaws-ug.jp https://jawsdays2022.jaws-ug.jp #okanan
JAWS PANKRATION 24 時間オンライングローバルイベント JAWS-UG 支 部 だ け で
な く 、 世 界 中 の AWS HERO 、 AWS Community Builder、AWS User Group Leader、その他 AWS タイトルホルダーに、AWS 内の方を招待して、各国の AWS に関 するカルチャーや AWS に関するテクニカルトークなど様々なセッ ションを開催 ※OBS+Amazon IVS+AWS Elemental MediaLive https://jawspankration2021.jaws-ug.jp https://jawspankration2024.jaws-ug.jp #okanan
録画データ AWS Elemental MediaLive のデータ →各トラックごと、200MB毎のtsファイル (110ファイル ✕ 200MB) StreamYardのデータ
→各トラックごとのmp4ファイル (20GB位) #okanan
やりたいこと 各セッション毎に動画を切り出してYouTubeに公開! AWS Elemental MediaLive のデータは、200MB単位のtsファイル なので、一旦1トラック1つのmp4ファイルにつなぎ合わせる StreamYardのデータは、各トラックごとのmp4ファイルのまま。 1つのmp4ファイルからセッション毎に切り分けたい。 #okanan
TODO: DaVinci Resolveの いい感じの画像をいれる。 とりあえず。 。 。 どうやって切り出す??? →動画編集ソフト(DaVinci Resolve)で切って書き出し
#okanan 60以上あるセッションをGUIで切って書き出しは辛い。 。 。
GUIは辛いので。 。 。 。CLIを使ってできないかな?? →ffmpeg使えばいいじゃん!! https://ffmpeg.org/ 無料・オープンソースの動画/音声処理ツール CLI(コマンドライン)で動作する強力なツール 入力 →
フィルタ処理 → 出力、の流れ 世界中の動画編集・変換・配信で使われている みんな大好きffmpeg #okanan
オプションの説明 -ss:開始時間(例:00:05:00) -t:抽出時間(例:00:10:00、もしくは秒数) -i:入力ファイル名 -c copy:再エンコードせずコピー(高速) ffmpegで切り出し ffmpeg -ss [開始時刻]
-t [抽出時間] -i [入力ファイル] -c copy [出力ファイル] #okanan
一括切り出しするようにコードを書いても良いけど。 。 。 誰でも自由にできるようにしたい。 →スプレッドシートなら誰でも操作できる。 誰でも編集ができるように #okanan
各セッションの開始時刻・終了時刻を入れたらOK 長さセル: =H4-G4 コマンドセル: ="ffmpeg -ss "&TEXT(G4,"HH:mm:ss")&" -t "& TEXT(I4,"HH:mm:ss")
&" -i "&$C$1&" -c copy "&F4 誰でも編集ができるように #okanan ffmpeg -ss 00:32:16 -t 00:19:26 -i ../tracka.mp4 -c copy A00.mp4
今回作業した一連の作業についてデモをします。 開始時刻、終了時刻を確認して入力 コマンドを実行する ※スプレッドシートの解説なども行います。 デモします #okanan
タイトル:=$E$1&A5&" "&B5 詳細:=$F$1&CHAR(10)&"登壇者:"&C5&CHAR(10)&D5 YouTubeタイトル、概要欄 #okanan
この仕組みで、以下のイベントの動画編集は乗り切れた! イベント終了後、内部のチェックも経て、1,2週間程度で公 開しました。 JAWS DAYS 2021:62本 JAWS PANKRATION 2021:70本 JAWS
DAYS 2022:67本 JAWS PANKRATION 2024:76本 JAWS DAYS 2025:41本 効率化できたー! #okanan
JAWS DAYS 2024は、東京では5年ぶりに、1つの会場に 集まって行うリアルイベント!! リアルイベントならではの構成で困った。 。 。 。 困った。 。
。 。 #okanan
a).後方カメラ 映像:登壇者を望遠で撮影 音声:カメラ付近のガヤ音 b).スクリーン映像 映像:スライド映像をライン接 続して録画 音声:マイク(登壇者)音声 JAWS DAYS 2024の録画構成
#okanan ① ②
a).後方カメラ 映像: 音声:カメラ付近のガヤ音 JAWS DAYS 2024の録画構成 #okanan b).スクリーン映像 映像: 音声:マイク(登壇者)音声
YouTube公開したい映像はこちら。 。 。どうする??? JAWS DAYS 2024の録画構成 #okanan
JAWS DAYS 2024の録画構成 #okanan 映像: 1). 背景画像を用意 2). 左下はa)後方カメラ 3).
中央はb)スクリーン映像 音声: b)スクリーン映像の音声 ※マイク(登壇者)音声
とりあえず。 。 。 #okanan TODO: DaVinci Resolveの いい感じの画像をいれる。 どうやって編集する??? →動画編集ソフト(DaVinci
Resolve)で切って合成する? 他の動画編集得意そうな実行委員にお願いしようとしたら 「44本かー、とりあえず編集完了は、夏頃っすねー」 😱😱😱😱😱😱😱😱😱😱😱😱😱😱😱😱
①a)後方カメラの映像を切り出し、音声は削除 ②b).スクリーン映像を切り出し ③背景と上記①②を合成、上記①と②はサイズを調整 ④ついでにイントロ動画をつける みんな大好きffmepg #okanan ffmpeg -ss [開始時刻] -t
[抽出時間] -i [入力ファイル] -vcodec copy -an [出力ファイル] ffmpeg -ss [開始時刻] -t [抽出時間] -i [入力ファイル] -vcodec copy -acodec copy [出力ファイル] ffmpeg -i [背景画像] -i [上記①動画ファイル] -i [上記②動画ファイル] -filter_complex " [1]scale=-1:270[ov1];[2]scale=1300:726[ov2];[0][ov1]overlay=45:632[bg1];[bg1] [ov2]overlay=574:176" -acodec copy -r 30 [出力ファイル] ffmpeg -f concat -i ./join_intro.txt -vcodec copy -acodec copy [出力ファイル]
-ss:開始位置:15分26秒から切り出しを開始 -t:長さ:1168秒(= 19分28秒)分を切り出す -i:入力ファイル:動画 C0001_A.MP4 -c copy:映像は再エンコードせずにコピー(高速・劣化なし) -an:音声を無効化(音声なしの動画にする) 出力ファイル名:./work/sp.mp4 映像を切り出し、音声は削除
ffmpeg -ss 00:15:26 -t 1168 -i ./C0001_A.MP4 -vcodec copy -an ./work/sp.mp4 #okanan
-ss:開始時刻:1分58秒 から -t:継続時間:1168秒(= 19分28秒)を切り出す -i:入力ファイル:HyperDeck_A.mp4 -vcodec copy:映像は再エンコードせずコピー(高速/無劣化) -acodec copy:音声も再エンコードせずコピー(高速/無劣化) 出力ファイル:./work/sc.mp4
に保存 スクリーン映像を切り出し ffmpeg -ss 00:01:58 -t 1168 -i ./HyperDeck_A.mp4 -vcodec copy -acodec copy ./work/sc.mp4 #okanan
背景と合成、サイズを調整 ffmpeg -i ./background-image.png -i ./work/sp.mp4 -i ./work/sc.mp4 -filter_complex "[1]scale=-1:270[ov1];
[2]scale=1300:726[ov2];[0][ov1]overlay=45:632[bg1];[bg1][ov2]overlay=574:176" -acodec copy -r 30 ./work/main.mp4 #okanan -i ./background-image.png:入力0:背景画像 -i ./work/sp.mp4:入力1:登壇者映像(後方カメラ) -i ./work/sc.mp4:入力2:スライド映像 -filter_complex:後述 -acodec copy :音声も再エンコードせずコピー -r 30:フレームレートを30fpsに設定 出力ファイル:./work/main.mp4に保存
背景と合成、サイズを調整 -filter_complex " [1]scale=-1:270[ov1]; [2]scale=1300:726[ov2]; [0][ov1]overlay=45:632[bg1]; [bg1][ov2]overlay=574:176" #okanan 入力1(sp.mp4)を 高さ270px
にスケーリング、幅はアスペクト比維持→[ov1] 入力2(sc.mp4)を 幅1300、高さ726 に強制スケーリング→[ov2] 入力0(背景画像)に、[ov1]を座標(x=45, y=632)に重ねる→[bg1] [bg1] の上に、[ov2]を 座標(x=574, y=176) に重ねる
-f concat:入力形式を「concat(連結) 」モードに設定 -i ./join.txt:入力ファイルリスト -vcodec copy:映像は再エンコードせずコピー -acodec copy:音声も再エンコードせずコピー 結合後は./output/A01.mp4に保存
イントロ動画をつける ffmpeg -f concat -i ./join.txt -vcodec copy -acodec copy ./output/A01.mp4 #okanan
デモします スプレッドシートの解説する デモ。 。 。 #okanan
JAWS DAYS 2024では、ちょっと大変だったので、 、 、 また、今年はできればリアルタイム配信したいとのことで 現地でOBSを使って合成をしたものを、 録画データとして提供いただくことにしました。 ※結局、配信はしなかったけど。 。
。 →できるだけ楽をしたい →録画の時点からの根回し重要 JAWS DAYS 2025では。 。 。 #okanan
Googleスプレッドシートのセル参照の基本 相対参照(=A1) ※コピーすると参照先変わる 絶対参照(=$A$1) ※コピーしても参照先固定 複合参照(=A$1) ※行や列だけ固定 補足 #okanan
文字列操作関数 TEXT(value, format_text) =TEXT(A1, "yyyy-mm-dd") 数値や日付を指定した形式の文字列に変換 CHAR(number) 指定したUnicode番号に対応する文字を返す、CHAR(10) は改行 MID(text,
start, length) 指定位置から文字列を切り出し LOWER(text) / UPPER(text) / PROPER(text) 小文字/大文字/単語の頭だけ大文字に変換 補足 #okanan
論理関数・条件分岐 IF(condition, true_value, false_value) 条件分岐 補足 #okanan 検索・参照関数 VLOOKUP(search_key, range,
index, [is_sorted]) 縦方向分岐
例えば。 。 。 。 メールやチャットメッセージのテンプレート生成 件名: ="【最重要】"& A2 & "の作業完了"
本文: ="本日、" & A2 & "の作業が完了しました。" & CHAR(10) & "ご確認くだ さい。" URLやリンクの一括生成(動的なパラメータ付きURLを生成) ="https://example.com/view?id=" & A2 データ整形・変換(SQL生成とか) ="INSERT INTO users (id, name) VALUES (" & A2 & ", '" & B2 & "');" 翻訳・ローカライズ(英語・日本語のペアを生成) =GOOGLETRANSLATE(A2, "ja", "en") 補足 #okanan
まとめ Excel(スプレッドシート)は立派なスクリプトエンジン? 繰り返し作業・大量処理を爆速化 ちょっとした工夫で、数時間の手作業をゼロに! 今後やりたいこと YouTubeAPIを使ったCLIでのアップロード AI文字起こしなどを活用し開始・終了時刻を自動判定 #okanan