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
34
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
110
JAWS DAYS 2025 ボランティアスタッフ統括やってみた!
takeshifurusato
0
76
「DenimTech」 ITエンジニアとして岡山で働く理由 ※ふるさとの場合
takeshifurusato
0
9
JBUG岡山 #6 WordCamp男木島の チームビルディング
takeshifurusato
0
360
kintone Café 岡山 vol.7 × SORACOM UG Okayama vol.4 オープニング
takeshifurusato
0
55
kintoneでIoTデータを収集してみた
takeshifurusato
0
150
20210525 TwilioJP-UG Online TwilioSync
takeshifurusato
0
290
FAXによる二要素認証
takeshifurusato
0
430
20201205_OkayamaWordPressMeetup#6_relocate_wordpress
takeshifurusato
0
350
Other Decks in Technology
See All in Technology
VueUseから学ぶ実践TypeScript #TSKaigi #TSKaigi2025
bengo4com
3
5.3k
FastMCPでSQLをチェックしてくれるMCPサーバーを自作してCursorから動かしてみた
nayuts
1
160
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
740
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.2k
ゴリラ.vim #36 ~ Vim x SNS ~ スポンサーセッション
yasunori0418
1
260
コードの考古学 〜労務システムから発掘した成長の糧〜
kenta_smarthr
0
250
Introduction to Bill One Development Engineer
sansan33
PRO
0
230
toittaにOpenTelemetryを導入した話 / Mackerel APM リリースパーティ
cohalz
1
440
ソフトウェアは捨てやすく作ろう/Let's make software easy to discard
sanogemaru
10
5.4k
君だけのオリジナル async / await を作ろう / TSKaigi 2025
susisu
17
13k
AIエージェントデザインパターンの選び方
almondo_event
0
120
人とAIとの共創を夢見た2か月 #共創AIミートアップ / Co-Creation with Keito-chan
kondoyuko
1
640
Featured
See All Featured
The MySQL Ecosystem @ GitHub 2015
samlambert
251
12k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
830
Product Roadmaps are Hard
iamctodd
PRO
53
11k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.3k
Typedesign – Prime Four
hannesfritz
41
2.6k
Reflections from 52 weeks, 52 projects
jeffersonlam
349
20k
Documentation Writing (for coders)
carmenintech
71
4.8k
Git: the NoSQL Database
bkeepers
PRO
430
65k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.5k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
47
2.8k
VelocityConf: Rendering Performance Case Studies
addyosmani
329
24k
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