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
66
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
160
JAWS DAYS 2025 ボランティアスタッフ統括やってみた!
takeshifurusato
0
110
「DenimTech」 ITエンジニアとして岡山で働く理由 ※ふるさとの場合
takeshifurusato
0
10
JBUG岡山 #6 WordCamp男木島の チームビルディング
takeshifurusato
0
380
kintone Café 岡山 vol.7 × SORACOM UG Okayama vol.4 オープニング
takeshifurusato
0
64
kintoneでIoTデータを収集してみた
takeshifurusato
0
160
20210525 TwilioJP-UG Online TwilioSync
takeshifurusato
0
300
FAXによる二要素認証
takeshifurusato
0
460
20201205_OkayamaWordPressMeetup#6_relocate_wordpress
takeshifurusato
0
360
Other Decks in Technology
See All in Technology
風が吹けばWHOISが使えなくなる~なぜWHOIS・RDAPはサーバー証明書のメール認証に使えなくなったのか~
orangemorishita
15
5.8k
Amazon Q と『音楽』-ゲーム音楽もAmazonQで作成してみた感想-
senseofunity129
0
150
React Server ComponentsでAPI不要の開発体験
polidog
PRO
0
290
Claude Codeから我々が学ぶべきこと
oikon48
10
2.8k
Lambda management with ecspresso and Terraform
ijin
2
170
いかにして命令の入れ替わりについて心配するのをやめ、メモリモデルを愛するようになったか(改)
nullpo_head
7
2.6k
Kiroでインフラ要件定義~テスト を実施してみた
nagisa53
3
370
薬屋のひとりごとにみるトラブルシューティング
tomokusaba
0
360
AI時代の経営、Bet AI Vision #BetAIDay
layerx
PRO
1
2.1k
Rubyの国のPerlMonger
anatofuz
3
740
S3 Glacier のデータを Athena からクエリしようとしたらどうなるのか/try-to-query-s3-glacier-from-athena
emiki
0
230
形式手法特論:位相空間としての並行プログラミング #kernelvm / Kernel VM Study Tokyo 18th
ytaka23
3
1.4k
Featured
See All Featured
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3k
A designer walks into a library…
pauljervisheath
207
24k
Agile that works and the tools we love
rasmusluckow
329
21k
Rebuilding a faster, lazier Slack
samanthasiow
83
9.1k
Six Lessons from altMBA
skipperchong
28
3.9k
Site-Speed That Sticks
csswizardry
10
770
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Building an army of robots
kneath
306
45k
A better future with KSS
kneath
239
17k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
183
54k
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