stashapp / stash

An organizer for your porn, written in Go. Documentation: https://docs.stashapp.cc
https://stashapp.cc/
GNU Affero General Public License v3.0
8.76k stars 778 forks source link

[Feature] vr/360 video support #318

Open iamjen023 opened 4 years ago

iamjen023 commented 4 years ago

Are there any plans to support vr videos I'm using xbvr for now but would like it to be all in one place

Orthodox-531 commented 4 years ago

Looks like JWPlayer has native VR playback capability of some kind: https://www.jwplayer.com/developers/web-player-demos/360-video/

Leopere commented 4 years ago

That would be a cool value add. Perhaps in the next major release.

overloadedStasher commented 3 years ago

I'm definitely following this issue, as VR Support is a big missing point.

JWPlayer just deprecated the vr/360 support of it's player, so it's no use.

I found Video.js that is open source and with much support. It also has a VR plugin

I guess migrating to Video.js would be a huge undertaking, but it might help in other areas?

As for supporting VR on Stash itselft, we could have a dropdown list to specify the VR type of the video, in the Scene's edit tab. Depending on the type, it would load the plugin and set the variables accordingly.

I have some experience in TS but not in Go, if some people are willing to help I can try to build a quick demo.

brumouta commented 3 years ago

It would be great to integrate with DeoVR player too.

Tweeticoats commented 3 years ago

There seems to be support for 360 video support in three.js. https://threejs.org/examples/?q=vide#webxr_vr_video https://github.com/mrdoob/three.js/

With some testing I could get stash to play back a video served from stash with the following problems:

As it is all based on browser technology you just need a

DampToast commented 3 years ago

It would be great to integrate with DeoVR player too.

https://deovr.com/doc

This would offload playback to DeoVR and for the most part looks like Stash would just have to make a JSON file that could be served to DeoVR with information Stash already has. It does look like it requires HTTPS though.

yoshnopa commented 2 years ago

Just in case someone wants to work with deovr (which would be a great solution in my opinion), here my experiences with the features:

The Web-Player is very easy to implement, when the style and the script are given in the html (both can be integrated or downloaded from sources referenced here: https://deovr.com/app/doc/webvr-video). Simply create the video with the element

<deo-video>
    <source src="PATH/TO/VIDEO" quality="RESOLUTIONHEIGHTp"/>
</deo-video>

So adding this to stash should be very straightforward.

The JSON generated on the other hand should be under /deovr url and does not require to be https. In fact, you can very quickly test the format of the JSON by installing xvbr (which is a standalone app, so it works very similar to stash and is as easy to setup), putting in some videos and calling the /deovr url. The JSON is generated by this code right here: https://github.com/xbapps/xbvr/blob/1a2de0b78de41148ec5b71c25a2f3210cf25080c/pkg/api/deovr.go , maybe this is helpful for getting a basic structure to work with.

kermieisinthehouse commented 2 years ago

If anybody wants to test, DeoVR support is now finished in PR #2105. You can access it directly from the VR browser, or (after enabing in settings), with a button in the scene player.

It requires HTTPS, that's a DeoVR limitation.

Tweeticoats commented 2 years ago

deovr does not need https to use the json api. if / when you you implement the video js plugin it will need https then.

kermieisinthehouse commented 2 years ago

Hmm, it seems to require it for Android. I can't seem to get it to work there. You're saying the desktop version doesn't need it?

sloggietuta commented 2 years ago

Hmm, it seems to require it for Android. I can't seem to get it to work there. You're saying the desktop version doesn't need it?

It looks like just an Android requirement, from the Deo VR docs: https://deovr.com/app/doc

  1. How to configure servers The easiest way to stream video on demand (VoD) is to use progressive HTTP streaming which doesn't require any additional or special web server configuration. DeoVR player will download video header and based on this information will send HTTP Range requests to the web server in order to download necessary parts of the video file. HTTPS is required to ensure compatibility with all Android versions.

I can confirm that DeoVR under Windows does not require HTTPS, I've successfully used Tweeticoats stash-deovr plugin https://github.com/Tweeticoats/stash-deovr to generate Deovr json files and serve them under http in the DeoVR app.

WithoutPants commented 8 months ago

Is this not completed via #3636?