Jump to content

All my products and services are free. All my costs are met by donations I receive from my users. If you enjoy using any of my products, please donate to support me. Thank you for your support. Tom Speirs

Patreon

Capture Videos to PinballX Media - Table, Backglass, and DMD


Recommended Posts

Hi, just a couple more notes:

1. I've tested without the Shark codec package linked to on the PinballX home page (i.e., using the internal Windows 7 mp4 decoder) and some of the videos I've generated off of the latest scripts do not play well at all with the internal codec. Some of the older videos are fine. My best guess is that it is because of the full color range capture. If you do not run the Shark package or some other advanced codec package then you should try to capture with the -pix_fmt parameter for Planar 4:2:0 (-pix_fmt=yuv420p). It should work for all players. Then the line in the script would look something like this:

Run, ffmpeg -t 70 -rtbufsize 1500M -f gdigrab -framerate 30 -offset_x %PF_width% -offset_y 0 -video_size %BG_width%x%BG_Height% -i desktop -pix_fmt yuv420p -vcodec libx264 -preset ultrafast -threads 8 "%A_ScriptDir%\bg.mkv",,Hide UseErrorLevel

2. I usually run the ffmpeg static build from 20140928. I've been testing the build from 20150218 in other applications but it seems like it would also work fine here.

Link to comment
Share on other sites

  • 3 weeks later...

Update - there's a bug. The instructions that actually run ffmpeg do not include the path that is assigned at the top of the script. It always worked for me because I have ffmpeg included in my PATH environment. It probably won't work otherwise.

Thanks, bpjacobsen.

#NoEnv
#SingleInstance force
#WinActivateForce
#Include, %A_ScriptDir%\xpath.ahk
SetTitleMatchMode 2
DetectHiddenWindows On
PinballX_Path = c:\PinballX
; For system use the ini header where you have defined your other Visual Pinball setups
system2 = System_9 ;PhysMod2
system3 = System_4 ;PhysMod5
FFMPEG_Path = c:\FFMPEG\bin
OBS_Path = c:\OBS\64bit
Audio_Device = "Stereo Mix (Realtek High Defini"
Table = %1% ;Table filename
ExeType = %2%
SplitPath, Table,,,ext,XTable,
If ExeType = 2
system = %system2%
Else If ExeType = 5
system = %system3%
Else If ext = fpt
system = FuturePinball
Else system = VisualPinball
; Read PinballX config for paths
If system = VisualPinball
Name = Visual Pinball
Else If system = FuturePinball
Name = Future Pinball
Else IniRead, Name, %PinballX_Path%\Config\PinballX.ini, %system%, Name
IniRead, WorkingPath, %PinballX_Path%\Config\PinballX.ini, %system%, WorkingPath
IniRead, TablePath, %PinballX_Path%\Config\PinballX.ini, %system%, TablePath
IniRead, Exe, %PinballX_Path%\Config\PinballX.ini, %system%, Executable
If ext = fpt
{
RegRead, PF_width, HKCU, Software\Future Pinball\GamePlayer, Width
RegRead, PF_height, HKCU, Software\Future Pinball\GamePlayer, Height
RegRead, BG_width, HKCU, Software\Future Pinball\GamePlayer, SecondMonitorWidth
RegRead, BG_height, HKCU, Software\Future Pinball\GamePlayer, SecondMonitorHeight
IniRead, DMD_width, %WorkingPath%\FutureDMD.ini, default, SizeW
IniRead, DMD_height, %WorkingPath%\FutureDMD.ini, default, SizeH
IniRead, DMD_X, %WorkingPath%\FutureDMD.ini, default, PosX
IniRead, DMD_Y, %WorkingPath%\FutureDMD.ini, default, PosY
IniWrite, %PF_width%, %OBS_Path%\profiles\FuturePinball.ini, Video, BaseWidth
IniWrite, %PF_height%, %OBS_Path%\profiles\FuturePinball.ini, Video, BaseHeight
IniWrite, %A_ScriptDir%\playfield.mp4, %OBS_Path%\profiles\FuturePinball.ini, Publish, SavePath
IniWrite, %A_ScriptDir%\Replay-$T.flv, %OBS_Path%\profiles\FuturePinball.ini, Publish, ReplayBufferSavePath
FileRead, Text, %OBS_Path%\sceneCollection\FuturePinball.xconfig ; Read file and return as var Text
IfNotInString, Text, %PF_width%
IfNotInString, Text, %PF_height%
{
IfInString, Text, 1280
IfInString, Text, 1024
{
StringReplace, Text, Text, 1280, %PF_width%, All
StringReplace, Text, Text, 1024, %PF_height%, All
FileDelete, %OBS_Path%\sceneCollection\FuturePinball.xconfig
FileAppend, %Text%, %OBS_Path%\sceneCollection\FuturePinball.xconfig
init=1
}
If init != 1
{
MsgBox Warning playfield width/height do not match FuturePinball.xconfig
ExitApp
}
}
}
Else
{
FileReadLine, PF_width, %TablePath%\ScreenRes.txt, 1
FileReadLine, PF_height, %TablePath%\ScreenRes.txt, 2
FileReadLine, BG_width, %TablePath%\ScreenRes.txt, 3
FileReadLine, BG_height, %TablePath%\ScreenRes.txt, 4
FileReadLine, DMD_width, %TablePath%\ScreenRes.txt, 8
FileReadLine, DMD_height, %TablePath%\ScreenRes.txt, 9
FileReadLine, XDMD_X, %TablePath%\ScreenRes.txt, 10
FileReadLine, DMD_Y, %TablePath%\ScreenRes.txt, 11
DMD_X:=BG_width+XDMD_X ;Reference to Top Left of Playfield screen
}
; Read description tag from xml - Thanks horseyhorsey - http://www.gameex.info/forums/topic/14632-multiple-exe-for-vp/#entry129111
databaseFile = %PinballX_Path%\Databases\%Name%\%Name%.xml
xpath_load(dbXML, databaseFile ) ; need to read the existing xml otherwise xpath deletes all existing nodes
description := XPath(dbXML, "/menu/game[@name= . XTable . ]/description/text()")
StringReplace, description, description,,,`,,
StringGetPos, pos, description,\
If ErrorLevel=1
StringGetPos, pos, description,/
If ErrorLevel=1
StringGetPos, pos, description,:
If ErrorLevel=1
StringGetPos, pos, description,*
If ErrorLevel=1
StringGetPos, pos, description,?
If ErrorLevel=1
StringGetPos, pos, description,"
If ErrorLevel=1
StringGetPos, pos, description,>
If ErrorLevel=1
StringGetPos, pos, description,|
If ErrorLevel=0
description=%XTable%
;Disable Aero if Enabled
RegRead, DWMComp, HKCU, Software\Microsoft\Windows\DWM, Composition
Aero = %DWMComp%
If Aero = 1
Run, sc stop uxsms,,UseErrorLevel
;If ext = fpt
; Run, "%PinballX_Path%\Scripts\dc2.exe" -configure="%PinballX_Path%\Scripts\dc2config\FPSettings.xml"
;Else
; Run, "%PinballX_Path%\Scripts\dc2.exe" -configure="%PinballX_Path%\Scripts\dc2config\VPMSettings.xml"
If ext = fpt
{
Run, %WorkingPath%\%Exe% /STAYINRAM /open "%TablePath%\%Table%" /play /exit,,UseErrorLevel
Process, wait, Future Pinball.exe
If DMD_width>0
Run, %WorkingPath%\FutureDMD.exe table="%Table%" close=1,,UseErrorLevel
}
Else
{
Run, %WorkingPath%\%Exe% -play "%TablePath%\%Table%",,UseErrorLevel
Process, wait, %Exe%
}
Sleep, 30000 ; Allow time for table score display to get well beyond loading and boot images
; Fastest Capture
If ext = fpt
Run, %OBS_Path%\OBS.exe -portable -profiles "FuturePinball" -start,,Hide UseErrorLevel
Else
Run, %FFMPEG_Path%\ffmpeg -t 70 -rtbufsize 1500M -f dshow -i audio=%Audio_Device% -f gdigrab -framerate 30 -offset_x 0 -offset_y 0 -video_size %PF_width%x%PF_height% -i desktop -vcodec libx264 -preset ultrafast -qp 0 -acodec copy -threads 8 "%A_ScriptDir%\playfield.mkv",,Hide UseErrorLevel
; Run, %FFMPEG_Path%\ffmpeg -t 70 -rtbufsize 1500M -f gdigrab -framerate 30 -offset_x 0 -offset_y 0 -video_size %PF_width%x%PF_height% -i desktop -vcodec libx264 -preset ultrafast -qp 0 -threads 8 "%A_ScriptDir%\playfield.mkv",,Hide UseErrorLevel
Run, %FFMPEG_Path%\ffmpeg -t 70 -rtbufsize 1500M -f gdigrab -framerate 30 -offset_x %PF_width% -offset_y 0 -video_size %BG_width%x%BG_height% -i desktop -vcodec libx264 -preset ultrafast -qp 0 -threads 8 "%A_ScriptDir%\bg.mkv",,Hide UseErrorLevel
If DMD_width > 0
Run, %FFMPEG_Path%\ffmpeg -t 70 -rtbufsize 1500M -f gdigrab -framerate 30 -offset_x %DMD_X% -offset_y %DMD_Y% -video_size %DMD_width%x%DMD_height% -i desktop -vcodec libx264 -preset ultrafast -qp 0 -threads 8 "%A_ScriptDir%\dmd.mkv",,Hide UseErrorLevel
If ext = fpt
{
WinHide, ahk_class FuturePinball
WinMinimize, ahk_class FuturePinball
WinActivate, ahk_class FuturePinballOpenGL
WinWaitActive, ahk_class FuturePinballOpenGL
WinHide, ahk_class Button
WinHide, ahk_class Shell_TrayWnd
}
Else
{
WinActivate, Visual Pinball Player
WinWaitActive, Visual Pinball Player
}
Process, WaitClose, ffmpeg.exe, 80
Process, Close, %ErrorLevel%
WinClose, ahk_class OBSWindowClass
If ext = fpt
{
Sleep 15000
Run, taskkill /IM OBS.exe /F,,UseErrorLevel
; CloseFP from FPLaunch
WinHide, ahk_class FuturePinball
WinMinimize, ahk_class FuturePinball
;Future Pinball must be closed this way instead of killing process
;or it wil not save your last game information.i.e score/credtis
WinActivate, ahk_class FuturePinballOpenGL
WinWaitActive, ahk_class FuturePinballOpenGL
Send {Esc}
WinWaitClose, ahk_class FuturePinballOpenGL
;saving fp table position, black screen hides fp window
; if (saveFPTables = "true") and (saveFPNeeded = "true") {
; ;WinRestore, ahk_class FuturePinball
; WinActivate, ahk_class FuturePinball
; WinWaitActive, ahk_class FuturePinball
; WinMenuSelectItem, ahk_class FuturePinball,,File,Save
; Sleep, 1000
; }
; IfExist %emupath%\FutureDMD.exe
Process, close, FutureDMD.exe
WinClose, ahk_class FuturePinball
WinWaitClose, ahk_class FuturePinball
WinShow, ahk_class Button
WinShow, ahk_class Shell_TrayWnd
}
Else
Run, taskkill /IM %Exe% /F,,UseErrorLevel
;Run, "%PinballX_Path%\Scripts\dc2.exe" -configure="%PinballX_Path%\Scripts\dc2config\StandardSettings.xml"
;Enable Aero if Enabled at the start of script execution
If Aero = 1
Run, sc start uxsms,,UseErrorLevel
; Post Capture Trim and Transcode
If ext = fpt
{
Run, %FFMPEG_Path%\ffmpeg -y -i "%A_ScriptDir%\playfield.mp4" -ss 5 -to 65 -vf "rotate=PI:bilinear=0" -map 0:1 -c:v libx264 -crf 26 "%PinballX_Path%\Media\Future Pinball\Table Videos\%description%.f4v",,UseErrorLevel
Run, %FFMPEG_Path%\ffmpeg -y -i "%A_ScriptDir%\bg.mkv" -ss 5 -to 65 -c:v libx264 -crf 26 "%PinballX_Path%\Media\Future Pinball\Backglass Videos\%description%.f4v",,UseErrorLevel
If DMD_width > 0
Run, %FFMPEG_Path%\ffmpeg -y -i "%A_ScriptDir%\dmd.mkv" -ss 5 -to 65 -c:v libx264 -crf 26 "%PinballX_Path%\Media\Future Pinball\DMD Videos\%description%.f4v",,UseErrorLevel
}
Else
{
Run, %FFMPEG_Path%\ffmpeg -y -i "%A_ScriptDir%\playfield.mkv" -ss 5 -to 65 -vf "rotate=PI:bilinear=0" -map 0:0 -c:v libx264 -crf 26 "%PinballX_Path%\Media\Visual Pinball\Table Videos\%description%.f4v",,UseErrorLevel
Run, %FFMPEG_Path%\ffmpeg -y -i "%A_ScriptDir%\bg.mkv" -ss 5 -to 65 -c:v libx264 -crf 26 "%PinballX_Path%\Media\Visual Pinball\Backglass Videos\%description%.f4v",,UseErrorLevel
If DMD_width > 0
Run, %FFMPEG_Path%\ffmpeg -y -i "%A_ScriptDir%\dmd.mkv" -ss 5 -to 65 -c:v libx264 -crf 26 "%PinballX_Path%\Media\Visual Pinball\DMD Videos\%description%.f4v",,UseErrorLevel
}
Process, WaitClose, ffmpeg.exe
; Clean up
FileDelete, %A_ScriptDir%\playfield.mp4
FileDelete, %A_ScriptDir%\playfield.mkv
FileDelete, %A_ScriptDir%\bg.mkv
If DMD_width > 0
FileDelete, %A_ScriptDir%\dmd.mkv
ExitApp

I have an updated script that I now use that operates off of a single VP xml. Unfortunately, it's not the standard PBX setup that uses the new alternateexe tag. I have to do something different to enable my mini DMD mirrors, so it is spinning away from a tool that the more casual PBX user can still use. But if anyone is still interested PM me.
  • Like 1
Link to comment
Share on other sites

  • 5 weeks later...

Aw man so close.

Your (heavily customized) VP script works flawlessly for me. I used a batch to replace every VP Vid on my cab with it. Thank you very much for that :)

OBS doesn't capture the PF for me - it does capture the BG and FutureDMD's output. PF it does only capture the usual black screen - which is the desktop I think.

I used OBS 0.651 Beta and tried both 32 and 64bit builds. I tried FP with and without BAM, the results are the same. I don't use audio so I used the ffmpg line without it.

Any ideas what to try next?

Link to comment
Share on other sites

I have not tested that version yet. I have a corrupted boot record and have been too busy with my job to fix it. I've been without a cab for weeks. You might try the previous version of OBS and if you are running Win 7 make sure that the bit of code that turns off Aero is enabled.

Link to comment
Share on other sites

  • 2 weeks later...

Thanks for your response. Got it to work now :)

OBS v0.64b didn't give me better results - but I found another way. I put the FP playfield screen into windowed mode.

For some reason Future Pinball didn't give me 1920x1080 as an option in Preferences/Video / Rendering Options, so I had to change the values for HKEY_CURRENT_USER\Software\Future Pinball\GamePlayer\Width and ....\Height with regedit.

I got rid of window title and border by modifying Ozon's Borderless DMD script for Pinball FX2 over here: https://gist.github.com/ozon/2c3b98161329b583b4a5#file-borderless_dmd-ahk

Line 17: Replace

IfWinExist Pinball FX2 DotMatrix

with

IfWinExist ahk_class FuturePinballOpenGL

Uncomment line 23 - WinMove, , , 0, 0, 1920, 1080

You may comment out line 3 - Process, Priority,, High

Link to comment
Share on other sites

Well, I had not gotten around to adding Pinball FX2 yet. Time299's media pack was extremely good as-is.

But I am glad that you found a solution. By another way, does that mean that you are using ffmpeg gdigrab to capture FP playfields running in full windowed mode? Or are you still using OBS?

Link to comment
Share on other sites

I'm still using OBS but I guess ffmpeg should work too, now that the PF runs in windowed. The BG is still FS - wait, perhaps that was the problem?

I'm positive it wasn't Aero - it's not running on my system.

I can give ffmpeg a try if you are interested in the result.

Link to comment
Share on other sites

For whatever reason, I've never had a problem capturing the BG with gdigrab. It was always capturing opengl renders for the playfield. For captures, I always just ran it the same way that I play it, with fullscreen enabled. It would be a nice to know if there was a method for capturing FP with gdigrab so that OBS would no longer be needed. That would simplify things a lot. And we could better sync the captures and ultimately the playback for each screen. Stripping the windows borders is pretty easy with AHK so it would be a good tradeoff.

Link to comment
Share on other sites

Nice find! I'll have to try it out... whenever I get my cab back up and running. I use a similar strategy for mirroring and streaming the DMD for SlamIt: Big Score. That one requires manually editing an ini file to get windowed full screen and then using AHK to strip out the borders. Didn't think of it for FP. It didn't dawn on me that there was an option to run FP in a window, but it's right there in the config!

Link to comment
Share on other sites

  • 1 month later...

Just tried it - with fake fullscreen playfield I can capture BG, PF and DMD with gdigrab. So OBS can go :)

Finally got my system back together, and gave fake fullscreen windowed mode a try. Looks good for me outside of BAM. But running with BAM, I just get a blank screen in-game. Doesn't matter if I am downsampling or using really low resolutions. I gotta have BAM, so I'm thinking I am stuck with OBS for capturing.

Link to comment
Share on other sites

I can confirm that OBS 0.651 Beta works for me. I'm still running the script off of a portable drive that has the OBS install. That's how I transfer files over to my cabinet. I don't use OBS for anything else, so I don't need a permanent installation on my cabinet. I found that I have to unplug and plug back in my drive in between FP captures. Otherwise, OBS will only capture audio and not video. So batching up runs is out for me. I only add a few tables at a time anyway.

If anyone really needs batch capturing in the script, let me know. I have a workable idea depending on the situation. Otherwise, I think it should still be pretty easy to run a compiled script within another bat file or python script that reads in the contents of a folder that you want processed.

Link to comment
Share on other sites

If anyone really needs batch capturing in the script, let me know. I have a workable idea depending on the situation. Otherwise, I think it should still be pretty easy to run a compiled script within another bat file or python script that reads in the contents of a folder that you want processed.

Ideally something that just runs against tables that you dont already have a video for. I like to add tables then go back and add the media .. sometimes I forget to add it to my todo notes. I wouldn't want to run all 200-300 tables each time, I doubt anyone would. :-) Is that "easy" ? Without adding more and more extra stuff to the cabinet?

Link to comment
Share on other sites

Familiar with AutoHotkey? A quick way that might work would be another script that calls an executable compiled from the capture script. You would use the Loop, Files command to read in files with vpt, fpt, or vpx as extensions. The command can also read in all the file attributes. Run the capture on files on the condition that the date stamp is greater than one you specify as an argument.

Link to comment
Share on other sites

  • 2 weeks later...

Thanks Carny for what you do with this great hobby. I'm moving my post from vpforums to here, so others can hopefully benefit from my confusion. : )

I installed the OBS software on my drive at D:\OBS. So, the executable on my setup is actually found here:

D:\OBS\obs-studio\bin\64bit

In this folder, I have placed your FuturePinball.ini in D:\OBS\obs-studio\bin\64bit\profiles and your FuturePinball.xconfig in D:\OBS\obs-studio\bin\64bit\sceneCollection.

When I try to open the executable, I get the attached error message.

Do I simply add the line OBS_Path=D:\OBS\obs-studio\bin\64bit to the very top of the FuturePinball.ini?

If not, where do I add this line? I see you reference the script, but I don't know where/which file this is.

Thanks for your patience with someone (me) that is not familiar with code/scripts...but I'm learning so much and I hope to get your script working!

post-29094-0-55017600-1436830441_thumb.p

Link to comment
Share on other sites

1. I use the Legacy version of OBS. It looks like the current version is 0.652 Beta. I have not tested this version although I know that 0.651 Beta works for me. I have not tested the OBS Multi-platform. Today was the first time I've seen that they offer a stable Windows release. I'll look into it at some point but for now stick with the Legacy version. I just go to the download page rather than the Home page and download the program as zip and simply extract the contents where you like. See if the script works with that package

2. The error message indicates that you are missing a C++ runtime file. Normally, an app would install this for you, I guess you have not installed any other software that required this. Try the suggestion above and if you still get that error then you will need to install it yourself. I checked to see what my cab has installed and it is only the (x86) version. I don't think it would hurt to install the (x64) version while you are at it, though. The installer for this is here:

https://www.microsoft.com/en-us/download/details.aspx?id=40784

3. You do not have to make any other changes to the FuturePinball,ini that I had attached to my post. The script should add the path to the ini automatically.

Link to comment
Share on other sites

Well, I thought I was close, but am getting additional errors when running the script. This is my first time compiling a script, so I'm sure I'm missing something.

Just clarify, once the script is copied and pasted into notepad, I then saved the file as xpath.ahk. I then compiled from there. Unfortunately, I then get the attached error messages.

I know I need to get this step before moving on, but once I get the script text, naming structure and compile goes through without errors...what do I do?

Do I run the script, then launch PinballX, load a table and press my playfield and backglass assigned keystrokes for those images to be saved? Do they get saved to my sceneCollections folder inside the OBS/64bit folder?

Thanks!

post-29094-0-28065000-1436855628_thumb.p

post-29094-0-12170500-1436855629_thumb.p

post-29094-0-74666200-1436855629_thumb.p

post-29094-0-21051500-1436855630_thumb.p

Link to comment
Share on other sites

Xpath.ahk is a separate script. You can obtain it at the address specified in the comment above the line #include xpath.ahk. Copy and paste that address into the address bar on your browser. It should take you to a Dropbox link that has the file for you to download. Save xpath.ahk into the same folder where you are have the script.

The script captures backglass and DMD at the same time as the playfield but it requires a different program, ffmpeg, to do it. Grab ffmpeg from the link I provided in this thread. You can extract the contents anywhere on your system. You then specify the path to the ffmpeg executable in the FfMPEG_path variable at the top of the script.

Set OBS and ffmpeg executables to run as administrator. Make sure any dll files are marked as unblocked.

The script can be located anywhere you want on your system. Just be sure that you have some free space on your disk for the raw capture. I name the script capscreens.ahk. Compiling the script creates a file called capscreens.exe.

Open a cmd window to access the Windows command line. (Looks like an old DOS screen) use cd command to navigate to the folder where you have capscreens.exe

The command is capscreens.exe "full table file name". Where full table file name is the name of the table that you want to capture as found in your Tables folder. Don't forget the extension (can be fpt, vpt, or vpx).. Do include the quotes surrounding the file name.

Wait while the script launches the table and captures the screens. Takes about 2 minutes. Then the script will close the emulation and process the captures. The script is finished when all of the ffmpeg windows have closed. Files are saved in your PinballX/Media folders in the correct location with the same file name as taken from your PinballX DMD database for Future Pinball. No need for you to do anything else.

Link to comment
Share on other sites

Okay, the script launches Future Pinball (BAM) from command prompt and stays open for about a minute, then closes. However I don't see any created playfield or backglass images (or videos) in the PinballX/media/future pinball directory or anywhere else I look.

I have attached my OBS folder directory and command prompt for the tables I have run so far using the script.

I know I'm close to getting this!

post-29094-0-41700400-1436907770_thumb.p

post-29094-0-23998200-1436907782_thumb.p

Link to comment
Share on other sites

Well, that is progress that the script is opening and closing FP. If it launched the correct table then the script is reading in information from your PinballX installation correctly. Just need to get the capture going.

Do you have ffmpeg installed?

http://ffmpeg.zeranoe.com/builds/

I use one of the static builds. Extract the contents to somewhere on your drive. Enter in the location where you copied over the ffmpeg package to FFMPEG_Path in the User Input section of the script. Set ffmpeg.exe to run as administrator. Make sure any dll files are unblocked.

Are you running FP+BAM as an Other System in PinballX.ini? Some people might set up plain vanilla FP under the Future Pinball system and set up FP+BAM as an Other System. I recall that being how it is described in the documentation pdf. My script assumes that you use FP+BAM and have that set up under the Future Pinball system heading. Why would you not use BAM whenever you want to play FP?

I see you tried to run a VP file. I assume that this did not capture any videos either. Did it launch VP? Are you using PBX to manage running multiple version of VP? If so, are you managing that by creating different systems in your PinballX Settings (PinballX.ini) or are you using the alternateexe tag in VisualPinball.xml?

Do you have AutoHotkey installed on your cab? If so, another way to run the script would be to run as screencap.ahk "file name". It will not work any differently but you might get some debug messages. Or you can examine the run log by right clicking the AHK icon in the system tray. You can examine the Future Pinball profile and config files to see if the script modified any lines and check that the resolution matches the resolution defined in FP, Preferences, Video settings. If they were overwritten with the settings from your Preferences then the script is correctly accessing and reading information from your registry.

You can open OBS through the start menu and try to manually capture your desktop through the OBS GUI. This is just as a test. If you get it working this way then it should be a short step to getting to work via the script.

  • Like 1
Link to comment
Share on other sites

I verified I have a static build of ffmpeg running as admin and all exe and dll files are unblocked and the script is pointing to the ffmpeg path.

My ffmpeg path: FFMPEG_Path = C:\Program Files\ffmpeg\bin

I am running FP+BAM exclusively and as the Future Pinball heading in settings.

I tried running the script for a VP table as well and I'm only running one version of VP at the moment. The script opened VP, then closed after about a minute, just like FP did. I don't see any screen captures in the PinballX/media folders (I looked in several folders within FP and VP).

I then tried running the ahk file from command prompt, but had the same result. It opens each FP or VP, but I don't see any screen captures after each closes.

I can use OBS (and other apps) to capture my desktop, but when I run FP (full screen or windowed), I can't find how to capture what is on the various screens. It's as if when FP is running, nothing else can be accessed at the same time. At least manually it can't.

Am I looking in the correct place for the screen captures or might they be saving somewhere else temporarily?

What else am I missing?

Link to comment
Share on other sites

The script does create interim files from the capture: playfield.mkv, BG.mkv, and DMD.mkv. They would be recorded to the same folder from which you are running the file. After processing these interim files the script will delete them.

If you want to have evidence that the script is capturing something, you would comment out the lines near the end of the script that delete these interim files and then try again.

If you don't have these interim files then the capturing is failing. Either their is an issue with the script reading your registry or the settings in the registry are considered invalid by ffmpeg (for example you are intentionally or unintentionally under scanning the output on your display.

Is the compiled executable for your script set to run as administrator?

Are the resolutions defined in your FP Video Preferences the same as what is defined for Windows? In other words the playfield screen is defined as 1920x1080 in both FP and Windows?

  • Like 1
Link to comment
Share on other sites

I have verified the resolution of my monitors, FP video preferences and the FuturePinball xconfig file. They are all the same.

I verified the locations and file paths in the script to the ffmpeg and OBS folders and executables. All executables are running as admin and all dll files are unblocked.

I'm not familiar with commenting out lines to look for the .mkv temp files, so I haven't tried that.

I'm enjoying the challenge, but am beginning to think this is a bit beyond my skill set.

I was able to download most of the PF, BG and DMD images from the PBX FTP. It's just a couple at this point that I don't have. If I can't figure this out, I may remove these tables for now.

Link to comment
Share on other sites

Attached are my PinballX.ini, Future Pinball.xml, FutureDMD.ini and FP video preferences.

Note, my test setup playfield monitor is running resolution of 2560x1440, but I have tried running it at both this and 1920x1080. When I changed the resolution, I made sure to change it across all applications.

I'm running Windows 7 home.

PinballX.ini

Future Pinball.xml

FutureDMD.ini

post-29094-0-48797600-1437006861_thumb.p

post-29094-0-09343200-1437006863_thumb.p

post-29094-0-15399800-1437006862_thumb.p

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...