Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature] DeoVR support #3003

Open
pickleahead opened this issue Oct 13, 2022 · 9 comments
Open

[Feature] DeoVR support #3003

pickleahead opened this issue Oct 13, 2022 · 9 comments
Labels
bounty This issue has a bounty on it in the OpenCollective feature request

Comments

@pickleahead
Copy link
Contributor

DeoVR is a popular player for VR content. Supporting the DeoVR API in stash would be a great improvement for DeoVR users, because they could browse the entire stash library in the player itself.

To-Do:

  • API endpoints for DeoVR
  • Serve all scene and file information, which is necessary for correct playback
  • Serve lists of scenes, so users can browse their stash library in DeoVR
  • Deep link (deovr://) in the scene view or scene player to open scenes in DeoVR

Optional:

  • Serve projection specific information (180 SBS, rf52, …)
  • Serve correction information
  • Serve markers as timestamps
  • Support images too
  • Support interactive scenes

Things to consider:

@WithoutPants WithoutPants added the bounty This issue has a bounty on it in the OpenCollective label Oct 13, 2022
@WithoutPants
Copy link
Collaborator

$100 bounty assigned from #2575/#1444 per discussion in #2708 .

@MaltoxTv
Copy link

MaltoxTv commented Feb 4, 2023

I don't know the rules very well, but i'm very much personally invested in this and would like to bump it. Honestly, i'll look into how to place a bounty like the other guy did because whoever implements this will deserve the paycheck. Quick search shows someone that roughly got a workaround, but it's not polished and I haven't attempted it yet to see if I can even get it working #1735

@DogmaDragon

This comment was marked as outdated.

@itsame-luigi
Copy link

How much of deovr are you looking to support? DeoVR supports single-video deep links (via deovr://<url>) and a top-level multi-video browser (via /deovr). I've implemented them both before for a NodeJS server, but I'm not terribly familiar with Go.

Unfortunately, the multi-video browser support leaves much to be desired since you have to dump all videos into a single file. That means there aren't a lot of options for filtering in DeoVR, but hopefully that will improve in the future.

The biggest issue I see is the need to introduce additional fields to Scene for all of the various capabilities:

  • video corrections (IPD and vertical alignment offsets, brightness/contrast/saturation adjustments)
  • FOV angle (i.e., 180, 190, 200, 360)
  • stereo mode (i.e., sbs, sbsl, sbsr, sbs2l, sbs2r, abl, tb, tbl, abr, tbr, ab2l, tb2l, ab2r, tb2r, al, ar, irl, irr, icl, icr, cuv)
  • screen type/projection (dome, sphere, fisheye, etc.)
  • chroma keying (for passthrough videos)

It looks like stash-vr-companion does that through tags, but that seems to be more of a hack as it doesn't make for a great experience when trying to edit a video and know what the valid options are. This would address #3637 as well.

@WithoutPants
Copy link
Collaborator

This was covered in #3794, but I'm not wanting a bunch of DeoVR concepts embedded in the core system, so doing this via the plugin system is really the only viable approach. It will require further developments to the plugin infrastructure to even support something like this. Adding VR fields to VideoFiles is something worth considering though.

@itsame-luigi
Copy link

It will require further developments to the plugin infrastructure to even support something like this.

A plugin could already hook scene updates and generate static files that could be consumed by DeoVR (assuming the relevant fields are stored with the scene). What a plugin would need then would be the ability to claim specific path patterns and redirect them to static file locations. It might also need the ability to hook parts of the web UI, but I'm not sure if Stash's userscript support sufficiently covers that.

@itsame-luigi
Copy link

Another benefit of additional VR fields would be that you could use this information to improve the generation of thumbnails, previews, and scrubber sprites by passing additional arguments to ffmpeg to take a stereo 3D input and produce a flat mono output. For example, you could pass -vf stereo3d=sbs2l:ml to convert a side-by-side stereo video to a mono thumbnail.

@itsame-luigi
Copy link

Adding VR fields to VideoFiles is something worth considering though.

Would you add them to VideoFile or to Scene itself? The VR fields are something you'll need to manually specify, and there really isn't much in the way of data entry for VideoFile currently.

@philpw99
Copy link
Contributor

#4777

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bounty This issue has a bounty on it in the OpenCollective feature request
Projects
None yet
Development

No branches or pull requests

6 participants