PeerCast Protocol (PCP) のバイナリパケット構造を解説する文書です。
実装の根拠となるソースは PeerCastStation.Core/Atom.cs および AtomCollectionExtensions.cs です。
PCP の全通信はこの Atom という単位で構成されます。
| ffmpeg -f lavfi -i "sine=f=440" -f lavfi -i "sine=f=880" -filter_complex "[0]volume=0.1:eval=frame:enable='eq(floor(mod(t,2)),0)'[al];[1]volume=0.1:eval=frame:enable='eq(floor(mod(t,2)),1)'[ar];[al][ar]join[ao];[ao]asplit[ao1][ao2];[ao2]showvolume[vo]" -t 600 -map "[vo]" -map "[ao1]" -c:v libx264 -c:a aac test.mp4 |
| <# 環境変数AMIVOICE_APPKEYにAppKeyを設定しておいてください #> | |
| <# ffmpegをpathが通っている場所に置いてください #> | |
| <# 結果は関数の戻り値で返されます #> | |
| Function Invoke-AmiVoice-Recognition { | |
| Param( | |
| [Parameter(Mandatory, ValueFromPipeline)] | |
| [ValidateScript({Test-Path $_})] | |
| [string] | |
| $Path, | |
| [PSDefaultValue(Help='E2E Batch Multi language')] |
2026-02-08時点のPC環境構成図
メインPCはWindowsでOBSと各ゲーム起動、サブPCはPeerCastStationを起動
flowchart TD;
PS4(PS4);
Switch2(Switch2);
WiiU(WiiU);
Splitter["HDMIスプリッタ(REX-HDSW42)"];| # /// script | |
| # requires-python = ">=3.2" | |
| # /// | |
| import argparse | |
| from pathlib import Path | |
| import re | |
| SPEAKER_MAP = { | |
| "ずんだもん": "zundamon", | |
| "東北きりたん": "kiritan", |
| ls *.png | % { magick $_.Name -crop 1:1+0+0 +repage ($_.Name + "_qs11x6a0.55.png") } |
| ffmpeg -loop 1 -i .\in.jpg_qs1x1_lkgrec.png -f lavfi -i 'aevalsrc=0|0:c=stereo:s=44100:d=60' -fflags +genpts -r 12 -t 5 -vf "scale=iw*2:ih,setsar=0.5" -pix_fmt yuv420p -c:v libx265 -crf 10 -maxrate:v 4M -bufsize:v 5M -an -shortest .\out.jpg_qs1x1_lkgrec.mp4 |
| $imgfs = ls *.*g ; $imgfs | ? { $imgfs.IndexOf($_) % ([Math]::Round($imgfs.Count / 60.0)) -ne 0 } | % { Remove-Item $_ } |
| ls *.mp4 | % { $v = ffprobe -i $_ -show_streams -of json -v error | ConvertFrom-Json ; $bi = ([int](((9 - ((0.94/60) * $v.streams[0].duration))*8*1000)/($v.streams[0].duration))) ; $bstr = ("{0}k" -f $bi) ; ffmpeg -y -i $_ -vf "fps=30" -c:v libx265 -b:v $bstr -an -pass 1 -f null NUL ; ffmpeg -i $_ -vf "fps=30" -c:v libx265 -b:v $bstr -c:a copy ($_.BaseName + "_discord.mp4") } |
| gc '.\New Playlist\playlist.json' | ConvertFrom-Json | % { $_.filename } |