表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
44/61

2. 動画再生処理があっけなく動いたんで、変換処理をシェルスクリプトで書き始めたら…

さて、既存の映像再生処理とMP3再生をどうやって合体させようか。と苦戦を覚悟しながら映像再生処理を眺めていて気が付いた。


あれ?映像再生の時間待ち(フレーム時間調整)のところにMP3再生処理を入れればいいだけじゃね?


映像再生処理がどういう構造かというと

1. ファイルからJPEGデータを読み込む

2. マルチコアで実行してるJPEG変換完了待ち(前回のJPEG変換完了待ち 大抵はファイル読み込み中に完了してる)

3. マルチコアでのJPEG変換処理起動

4. フレーム時間待ち

という感じで、結構待ち時間がある。


もともとMP3再生処理も、PCM再生バッファの空ができるまで待つ処理があるから、こんな感じでやってみた。


1. ファイルからJPEGデータを読み込む

2. PCMバッファに空きがあれば、MP3ファイルバッファのデータをMP3デコードする

3. MP3ファイルバッファが空なら、MP3ファイル(の続き)を読み込む

4. JPEG変換完了待ち

5. JPEG変換処理起動

6. フレーム時間待ち


なんの問題もなく動いてしまった。あれ?

まぁ 12fps だとファイル読み込み時間が長くフレーム時間に間に合わなくて音がズレ始めるが、そこはファイルの画質調整で何とかできるだろうし、画像をスキップする手もある。



動き始めたならいろんな動画を作って再生できる範囲を試そうと、ffmpeg を使った変換処理をシェルスクリプト(bash)で書き始めた。

何度か試して画質が破綻しない程度で12fpsで再生できる画質設定を見つけたんで、一括で複数ファイルを処理する処理に改造しようと思ってハマった。

16:9 の動画と 4:3 の動画を区別するとか、フレームレートの値をファイルに書き出すとかやりたいのに、シェルスクリプトでの計算や文字列処理を忘れてて作業が進まない。20年前はガリガリ書いてたのに。


友達に「pythonなら楽なんだがなぁ」とグチったら「生成AIでpythonにすればいいじゃん」といわれた。え~?マジっすか?


試しに CoPilot に「このシェルスクリプトを python にして」と依頼したらちゃんと出てきた。ほえ~、技術の進歩すげー。

でも処理が本当に動くかは信用できないよな。とか疑ってソースを読み始めてビックリ。

テンポラリディレクトリを削除する処理とかにコメントが追加されてた。

一時ディレクトリの初期化 とか 不要のJPEGファイルの削除(念のため再度) とか書いてある。

処理内容を判別してコメントを勝手に追加してくれるとは…「さらにできるようになった」ってやつですかね?


他にも外部コマンドとして起動した ffmpeg起動失敗を拾ってエラーメッセージを出力するとかも追加されてる。


なんともすごい時代になったもんだ。

評価をするにはログインしてください。
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

↑ページトップへ