緣起:
Steam 的 Beta
頻道,不久前有推出遊戲錄影的功能,讓你可以不需依賴第三方的軟體,直接就能在
Steam 遊戲裡錄影,這功能對 Steam Deck 來說超實用的,之前在玩 switch
時,覺得它的隨時錄製 30
秒前的影音功能超方便的,讓你不會錯任何想分享的突發影像。
我今天玩遊戲有錄了一個影片,但影片的 size 超過了能 share
的大小,所以想來學著怎麼把影片檔給搬出來,順便寫文章記錄。
取出遊戲模式的螢幕擷圖:
由於我的文章會需要在 steam deck
上操作的擷圖,擷取當下的螢幕圖片很簡單,按 Steam 鍵+R1
就能擷圖,但問題是,我不知道圖片放哪。後來去
reddit
看,得知,那些資料都是放在 /home/deck/.local/share/Steam/userdata/{你的
steam id} 裡,由於 steam deck 就只有我一個人使用,所以 userdata
下就只會有一個資料㚒,用 ssh 進入那目錄後,下 ls
的指令,會看到有不少的資料㚒,那些資料㚒都是數字,跟遊戲的 id
有關,直接看的話根本不知道哪個是哪個。
後來想到,linux 的 find 指令有提供依據檔案更動時間來找檔案的功能,我就先在 steam deck 上隨便擷個圖,然後下指令,找出 3
分鐘内更動的檔案
find . -cmin -3
哦 ~ 那個 ./760/remote/7/screenshots/20240722021635_1.jpg
看起來好像就是它。我把這個檔案給搬到 Ubuntu
上面,然後用圖片瀏覽器看,確實是它,所以可以確定,你在 Steam Deck
的遊戲模式,未進入任何遊戲時的擷圖,都會放在 /home/deck/.local/share/Steam/userdata/{你的 user
id}/760/remote/7/screenshots 資料㚒裡
壓縮 clip 資料㚒:
我觀察後發現,遊戲裡錄製完的 clip 會放到 /home/deck/.local/share/Steam/userdata/{你的steam id}/gamerecordings/clips
資料㚒裡,不同的 clip
分成不同的資料㚒,當前有兩個資料㚒,我那個錄製的影片,大小是 500 多 MB,所以用
du 查詢一下
du -sh $(ls)
OK,確定是 clip_1809540_20240721_160759
那個資料㚒,我接著要把它給移置我的 ubuntu
筆電上,在這之前想先壓縮它,減少傳輸的時間,順便練個
tar gzip
的使用。
tar cf - clip_1809540_20240721_160759 | gzip -9 > clip.tar.gz
原始資料㚒大小 535 MB,壓完後的 gz 檔是 534 MB =
=,好哦。
將檔案組成MP4:
看著這篇 reddit 文章學的, clip 資料㚒裡面是長這樣
影片是在 video/fg_1809540_20240721_160452 裡,但裡面放的不是 mp4,而是很多的 m4s 檔。我的理解是,這些格式主要是給串流用的,每個檔案都是最多 3 秒的片段,我們需要把它組起來。
可以用 cat 把這些 m4s 組起來。觀察後發現,有 init-stream0.m4s
跟 init-stream1.m4s, 它們是開頭,cat
指令後的第一個檔案要放它們,然後有兩群資料,chunk-stream0-{數字}.m4s 跟 chunk-stream1-{數字}.m4s。
先把 stream0 的 m4s
組起來,指令會是,因為檔名是有數字順序的,所以後半部可以用萬用字元取代
cat init-stream0.m4s chunk-stream0-* > /home/birdshiu/Desktop/group0.mp4
等同於
cat init-stream0.m4s chunk-stream0-00001.m4s chunk-stream0-00002 ..... chunk-stream0-00063.m4s > /home/birdshiu/Desktop/group0.mp4
stream1 的 m4s 也是比照辦理,輸出成 group1.mp4。
這時用 vlc player 點開這兩個 mp4 檔會發現,group0.mp4
只有影像(有些片段還會怪怪的),而 group1.mp4
只有聲音,一個是影像頻道,一個是聲音頻道。
最後要把這兩個 mp4 結合,用 ffmpeg,可以用 apt
來安裝套件,安裝好後,到 Desktop 下
ffmpeg -i group1.mp4 -i group0.mp4 -c copy final_video.mp4
那個 final_video.mp4 就是完整的影片了。
用 ffmpeg 來壓縮影片:
一個 500 多 MB 的影片,在分享上不太方便,可以用 ffmpeg
來做影片的壓縮,參考資料
ffmpeg -i final_video.mp4 -c:v libx264 -crf 23 output.mp4
-c:v libx264,使用 H.264 編碼,-crf 可以指定影片的品質,數字愈低,品質愈好。指令進行時, cpu 會很忙
沒有留言:
張貼留言