Steamでバックグラウンド録画されたデータからクリップを作成して動画ファイルをエクスポートしようとしたとき、
突然「エクスポートに失敗しました。もう一度お試しください。(10)」と表示されエクスポートが失敗するようになってしまいました。カッコ内は状況により(2)だったりします。
SteamやPCを再起動しても状況は変わりません。今まで問題なく機能していたもので、突然動作しなくなった原因は不明です。
このままでは少し困るので、Steamに保存されたデータからffmpegを使ってmp4に変換する方法を調べてみました。今後のためにメモしておきます。最終的にRedditの投稿が参考になりました。
ちなみに以下はWindows環境の場合です。
録画ファイルの場所
既定の場合、
C:\Program Files (x86)\Steam\userdata\USER_ID\gamerecordings
がキャプチャされたデータの保存場所になります。
ユーザーIDはSteamメニューバーの「フレンド」→「フレンドを追加」で表示されるフレンドコードと同じもののようです。
gamerecordings\videoにはバックグラウンド録画、clipsには手動録画や作成したクリップ動画が保存されているようです。
動画の再生チェック
videoかclips内から対象と思しきフォルダを探し(日付等がヒントになります)、中にある
(video→)bg_なんたら_日付_時刻
フォルダを開きます。
その中にある session.mpd ファイルを ffplay.exe にドラッグ&ドロップなどすると、保存されている動画を確認することができます。Esc等を押すと終了。
ここで動画が数秒で止まってしまう場合は、変換の際に追加の対応が必要になりす。
動画の変換
ffmpegのあるディレクトリからコマンドラインで
.\ffmpeg -i (動画のディレクトリ)\session.mpd -c copy output.mp4
を実行すると、mp4に変換された動画がffmpegと同じフォルダにオリジナルと同じ解像度で output.mp4 が出力されます。
session.mpdのパスはC:\Program Files (x86)\Steam\userdata\から始まる形になると思うので引用符で囲むことを忘れずに。
出力された動画が問題なければこれでエクスポート操作が完了となります。
session.mpdの編集
ffplayで動画が数秒で止まる場合、おそらく出力された動画も数秒分しかないので
フルで動画を出力するためにsession.mpdを編集します。念のためコピーを取って編集するのもアリ。
session.mpdをテキストエディタで開きます。
中を見るとPeriodタグにduration属性が無いと思うので、以下のように追加します。
<Period id="0" start="PTなんたら" duration="PT5M">
durationは30秒の出力ならPT30S、1時間ならPT1Hとなります。
実際の長さより長い分には問題なさそうなので、適当な長めの時間を記述してファイルを保存します。
あとは上記の保存したmpdファイルに対して「動画の変換」の手順を行えば、(少なくともこちらの環境では)問題なく動画が出力されます。
(おまけ)mp4ファイルを一定範囲の時間のみ切り抜く
バックグラウンド録画のような長い動画ファイルから一部分を切り抜きたい場合は以下のコマンドが使えます。
.\ffmpeg -i input.mp4 -ss hh:mm:ss -to hh:mm:ss -c copy output.mp4
-ss が開始時刻で -to が終了時刻です。秒数には小数も指定可能なようです。
-ss 01:50.30 なら110.3秒地点から開始。
Steamのエクスポート機能が使えなくなった代わりとして、とりあえずこの方法でうまくいっています。
今後も状況が変わらなければバッチファイルを作ったりすることになりそうです。