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
61
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
150
JAWS DAYS 2025 ボランティアスタッフ統括やってみた!
takeshifurusato
0
110
「DenimTech」 ITエンジニアとして岡山で働く理由 ※ふるさとの場合
takeshifurusato
0
10
JBUG岡山 #6 WordCamp男木島の チームビルディング
takeshifurusato
0
370
kintone Café 岡山 vol.7 × SORACOM UG Okayama vol.4 オープニング
takeshifurusato
0
62
kintoneでIoTデータを収集してみた
takeshifurusato
0
160
20210525 TwilioJP-UG Online TwilioSync
takeshifurusato
0
300
FAXによる二要素認証
takeshifurusato
0
450
20201205_OkayamaWordPressMeetup#6_relocate_wordpress
takeshifurusato
0
360
Other Decks in Technology
See All in Technology
AIエージェントを支える設計
tkikuchi1002
11
2.4k
[MIRU25] NaiLIA: Multimodal Retrieval of Nail Designs Based on Dense Intent Descriptions
keio_smilab
PRO
1
130
怖くない!GritQLでBiomeプラグインを作ろうよ
pal4de
1
140
M365アカウント侵害時の初動対応
lhazy
7
5.1k
AI によるドキュメント処理を加速するためのOCR 結果の永続化と再利用戦略
tomoaki25
0
110
「AI駆動開発」のボトルネック『言語化』を効率化するには
taniiicom
1
220
[MIRU2025]Preference Optimization for Multimodal Large Language Models for Image Captioning Tasks
keio_smilab
PRO
0
120
経理出身PdMがAIプロダクト開発を_ハンズオンで学んだ話.pdf
shunsukenarita
1
240
Power Automate のパフォーマンス改善レシピ / Power Automate Performance Improvement Recipes
karamem0
0
270
地域コミュニティへの「感謝」と「恩返し」 / 20250726jawsug-tochigi
kasacchiful
0
100
With Devin -AIの自律とメンバーの自立
kotanin0
2
830
ML Pipelineの開発と運用を OpenTelemetryで繋ぐ @ OpenTelemetry Meetup 2025-07
getty708
0
320
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
53
7.7k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.8k
Agile that works and the tools we love
rasmusluckow
329
21k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
181
54k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
It's Worth the Effort
3n
185
28k
Music & Morning Musume
bryan
46
6.7k
Six Lessons from altMBA
skipperchong
28
3.9k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.7k
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