Update documents
This commit is contained in:
parent
02395612cf
commit
34e0419367
|
@ -18,90 +18,62 @@ server:
|
|||
|
||||
##### Values
|
||||
|
||||
The application and the server share the same configuration file structure. That's why there are
|
||||
values, which don't make sense in the server configuration and vice versa. These values are simply
|
||||
ignored. This is a collection of the most interesting values:
|
||||
The application and the server share the same configuration file structure. That's why there are values, which don't make sense in the server configuration and vice versa. These values are simply ignored. This is a collection of the most interesting values:
|
||||
|
||||
- **chooseStreamQuality** (app only) - [`true`,`false`] Opens the stream resolution selection dialog, when you start recording a model.
|
||||
|
||||
- **concurrentRecordings** - [0 - 2147483647] Limits the number of concurrently running recordings. Once this number is reached, now more recordings are started
|
||||
until a recording is finished. 0 means unlimited.
|
||||
- **concurrentRecordings** - [0 - 2147483647] Limits the number of concurrently running recordings. Once this number is reached, now more recordings are started until a recording is finished. 0 means unlimited.
|
||||
|
||||
- **determineResolution** (app only) - [`true`,`false`] Display the stream resolution on the thumbnails.
|
||||
|
||||
- **hlsdlExecutable** - Path to the hlsdl executable, which is used, if `useHlsdl` is set to true
|
||||
|
||||
- **httpPort** - [1 - 65536] The TCP port, the server listens on. In the server config, this will tell the server, which port to use. In the application this
|
||||
will set
|
||||
the port ctbrec tries to connect to, if it is run in remote mode.
|
||||
- **httpPort** - [1 - 65536] The TCP port, the server listens on. In the server config, this will tell the server, which port to use. In the application this will set the port ctbrec tries to connect to, if it is run in remote mode.
|
||||
|
||||
- **httpServer** (app only) - The TCP host where the server is running. Has no effect, if ctbrec is run in local reocrding mode.
|
||||
|
||||
- **httpTimeout** - [1 - 2147483647] in milliseconds. In the server configuration this sets the idle timeout for connections to the server. In the app this sets
|
||||
the connect and read timeout for any HTTP connection.
|
||||
- **httpTimeout** - [1 - 2147483647] in milliseconds. In the server configuration this sets the idle timeout for connections to the server. In the app this sets the connect and read timeout for any HTTP connection.
|
||||
|
||||
- **httpUserAgent** - The user agent, which is used in the HTTP header, when ctbrec connects to a camsite. This is used to disguise, that it actually is a
|
||||
recording software :)
|
||||
- **httpUserAgent** - The user agent, which is used in the HTTP header, when ctbrec connects to a camsite. This is used to disguise, that it actually is a recording software :)
|
||||
|
||||
- **httpUserAgentMobile** - Same as *httpUserAgent*, but in some cases we have to pretend to be a mobile phone :)
|
||||
|
||||
- **key** - Key for the HMAC based authentication. If this is set in server config and contains values, the HMAC authentication is automatically active.
|
||||
|
||||
- **livePreviews** (app only) - Enables the live preview feature in the app.
|
||||
|
||||
- **logFFmpegOutput** - [`true`,`false`] The output from FFmpeg (from recordings or post-processing steps) will be logged in temporary files.
|
||||
|
||||
- **loghlsdlOutput** - [`true`,`false`] The output from hlsdl will be logged in temporary files. Only in effect, if `useHlsdl` is set to true
|
||||
|
||||
- **minimumResolution** - [1 - 2147483647]. Sets the minimum video height for a recording. ctbrec tries to find a stream quality, which is higher than or equal
|
||||
to this value. If the only provided stream quality is below this threshold, ctbrec won't record the stream.
|
||||
- **minimumResolution** - [1 - 2147483647]. Sets the minimum video height for a recording. ctbrec tries to find a stream quality, which is higher than or equal to this value. If the only provided stream quality is below this threshold, ctbrec won't record the stream.
|
||||
|
||||
- **maximumResolution** - [1 - 2147483647]. Sets the maximum video height for a recording. ctbrec tries to find a stream quality, which is lower than or equal
|
||||
to this value. If the only provided stream quality is above this threshold, ctbrec won't record the stream.
|
||||
- **maximumResolution** - [1 - 2147483647]. Sets the maximum video height for a recording. ctbrec tries to find a stream quality, which is lower than or equal to this value. If the only provided stream quality is above this threshold, ctbrec won't record the stream.
|
||||
|
||||
- **minimumLengthInSeconds** - **Deprecated. Add a post-processing step instead. See [Post-Processing](PostProcessing.md)** [0 - 2147483647]
|
||||
Automatically delete recordings, which are shorter than this amount of seconds. 0 disables this feature.
|
||||
- **minimumLengthInSeconds** - **Deprecated. Add a post-processing step instead. See [Post-Processing](PostProcessing.md)** [0 - 2147483647] Automatically delete recordings, which are shorter than this amount of seconds. 0 disables this feature.
|
||||
|
||||
- **minimumSpaceLeftInBytes** - [0 - 9223372036854775807] The space in bytes ctbrec should conserve on the hard drive. 1 GiB = 1024 MiB = 1048576 KiB =
|
||||
1073741824 bytes
|
||||
- **minimumSpaceLeftInBytes** - [0 - 9223372036854775807] The space in bytes ctbrec should conserve on the hard drive. 1 GiB = 1024 MiB = 1048576 KiB = 1073741824 bytes
|
||||
|
||||
- **onlineCheckIntervalInSecs** - [1 - 2147483647] How often ctbrec checks, if a model is online. This is not a guaranteed interval: If you record many models,
|
||||
the online check for all models can take longer than this interval. A minute is a reasonable value, but you can go lower, if you don't want to miss a
|
||||
anything. But don't go too low, or you risk to do too many requests in a short amount of time and get banned by some sites.
|
||||
- **onlineCheckIntervalInSecs** - [1 - 2147483647] How often ctbrec checks, if a model is online. This is not a guaranteed interval: If you record many models, the online check for all models can take longer than this interval. A minute is a reasonable value, but you can go lower, if you don't want to miss a anything. But don't go too low, or you risk to do too many requests in a short amount of time and get banned by some sites.
|
||||
|
||||
- **onlineCheckSkipsPausedModels** - [`true`,`false`] Skip the online check for paused models. If you have many models in the recording list, this can reduce
|
||||
the delay when a recording starts after a model came online.
|
||||
- **onlineCheckSkipsPausedModels** - [`true`,`false`] Skip the online check for paused models. If you have many models in the recording list, this can reduce the delay when a recording starts after a model came online.
|
||||
|
||||
- **postProcessing** - **Deprecated. See [Post-Processing](PostProcessing.md)** Absolute path to a script, which is executed once a recording is
|
||||
finished.
|
||||
- **postProcessing** - **Deprecated. See [Post-Processing](PostProcessing.md)** Absolute path to a script, which is executed once a recording is finished.
|
||||
|
||||
- **recordingsDir** - Where ctbrec saves the recordings.
|
||||
|
||||
- **recordingsDirStructure** (server only) - [`FLAT`, `ONE_PER_MODEL`, `ONE_PER_GROUP`, `ONE_PER_RECORDING`] How recordings are stored in the file system. `FLAT` - all
|
||||
recordings in one directory; `ONE_PER_MODEL` - one directory per model; `ONE_PER_GROUP` - one directory per model group; `ONE_PER_RECORDING` - each recordings ends up in its own directory. Change this only,
|
||||
if you have `recordSingleFile` set to `true`
|
||||
- **recordingsDirStructure** (server only) - [`FLAT`, `ONE_PER_MODEL`, `ONE_PER_GROUP`, `ONE_PER_RECORDING`] How recordings are stored in the file system. `FLAT` - all recordings in one directory; `ONE_PER_MODEL` - one directory per model; `ONE_PER_GROUP` - one directory per model group; `ONE_PER_RECORDING` - each recordings ends up in its own directory. Change this only, if you have `recordSingleFile` set to `true`
|
||||
|
||||
- **recordSingleFile** (server only) - [`true`,`false`] - How recordings are stored in the file system. `true` means, each recording is saved in one large
|
||||
file. `false` means, ctbrec just downloads the stream segments.
|
||||
- **recordSingleFile** (server only) - [`true`,`false`] - How recordings are stored in the file system. `true` means, each recording is saved in one large file. `false` means, ctbrec just downloads the stream segments.
|
||||
|
||||
- **splitStrategy** - [`DONT`, `TIME`, `SIZE`, `TIME_OR_SIZE`] Defines if and how to split recordings. Also see `splitRecordingsAfterSecs`
|
||||
and `splitRecordingsBiggerThanBytes`
|
||||
- **splitStrategy** - [`DONT`, `TIME`, `SIZE`, `TIME_OR_SIZE`] Defines if and how to split recordings. Also see `splitRecordingsAfterSecs` and `splitRecordingsBiggerThanBytes`
|
||||
|
||||
- **splitRecordingsAfterSecs** - [0 - 2147483647] in seconds. Split recordings after this amount of seconds. The recordings are split up into several individual
|
||||
recordings,
|
||||
which have the defined length (roughly). Has to be activated with `splitStrategy`.
|
||||
- **splitRecordingsAfterSecs** - [0 - 2147483647] in seconds. Split recordings after this amount of seconds. The recordings are split up into several individual recordings, which have the defined length (roughly). Has to be activated with `splitStrategy`.
|
||||
|
||||
- **splitRecordingsBiggerThanBytes** - [0 - 9223372036854775807] in bytes. Split recordings, if the size on disk exceeds this value. The recordings are split up
|
||||
into several individual recordings,
|
||||
which have the defined size (roughly). Has to be activated with `splitStrategy`.
|
||||
- **splitRecordingsBiggerThanBytes** - [0 - 9223372036854775807] in bytes. Split recordings, if the size on disk exceeds this value. The recordings are split up into several individual recordings, which have the defined size (roughly). Has to be activated with `splitStrategy`.
|
||||
|
||||
- **timeoutRecordingStartingAt** - [00:00 - 23:59] - Start of the recording timeout timeframe - No new recordings will be started in this period
|
||||
|
||||
- **timeoutRecordingEndingAt** - [00:00 - 23:59] - End of the recording timeout timeframe - No new recordings will be started in this period
|
||||
|
||||
- **useHlsdl** - [`true`,`false`] Use hlsdl to record the live streams. You also have to set `hlsdlExecutable`, if hlsdl is not globally available on your
|
||||
system. hlsdl won't be used for Showup.
|
||||
- **useHlsdl** - [`true`,`false`] Use hlsdl to record the live streams. You also have to set `hlsdlExecutable`, if hlsdl is not globally available on your system. hlsdl won't be used for Showup.
|
||||
|
||||
- **webinterface** (server only) - [`true`,`false`] Enables the webinterface for the server. You can access it with http://host:port/static/index.html Don't
|
||||
activate this on
|
||||
a machine, which can be accessed from the internet, because this is totally unprotected at the moment.
|
||||
- **webinterface** (server only) - [`true`,`false`] Enables the webinterface for the server. You can access it with http://host:port/static/index.html **Don't activate this on a machine which can be accessed from the internet because this is totally unprotected at the moment.**
|
||||
|
|
|
@ -19,11 +19,11 @@ It is available for all major platforms. FFmpeg can be used to manually and auto
|
|||
* Open a terminal (command prompt) and cd into the directory of the recording
|
||||
* Run FFmpeg:
|
||||
|
||||
`ffmpeg -i AwesomeGirl_-2019-04-04_15-46-19_195.ts -c:v copy -c:a copy AwesomeGirl_-2019-04-04_15-46-19_195.mp4`
|
||||
`ffmpeg -i AwesomeGirl_-2019-04-04_15-46-19_195.ts -c:v copy -c:a copy AwesomeGirl_-2019-04-04_15-46-19_195.mkv`
|
||||
or
|
||||
`ffmpeg -i AwesomeGirl_-2019-04-04_15-46-19_195.ts -c:v copy -c:a copy -movflags faststart AwesomeGirl_-2019-04-04_15-46-19_195.mp4`
|
||||
|
||||
As you can see, the codecs for video and audio are set to copy, which means, that the recording is not reencoded, but just "copied" to
|
||||
another container format. You could also use mkv or avi for the output file suffix and FFmpeg would create that respective file. Depending
|
||||
on your hardware specs and the length of the recording, this process probably takes a few seconds up to a couple of minutes.
|
||||
As you can see, the codecs for video and audio are set to copy, which means, that the recording is not reencoded, but just "copied" to another container format. You could also use another container suffix and FFmpeg would create that respective file. Depending on your hardware specs and the length of the recording, this process probably takes a few seconds up to a couple of minutes.
|
||||
|
||||
##### Automatic remuxing
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
#### MKVToolNix
|
||||
[MKVToolNix](https://mkvtoolnix.download/) is a collection of tools for the Matroska media container format.
|
||||
It is available for all major platforms. MKVToolNix can be used to manually remux recordings and convert them
|
||||
from .ts to .mkv.
|
||||
It is available for all major platforms. MKVToolNix can be used to manually remux recordings and convert them from .ts to .mkv.
|
||||
|
||||
1. Open the .ts file with MKVToolNix GUI
|
||||
2. Define the output file at the bottom
|
||||
|
|
|
@ -1,47 +1,38 @@
|
|||
#### Post-Processing
|
||||
|
||||
The post-processing gives you the possibility to execute different actions after a recording has finished. You can use that to convert
|
||||
the files to another format, create preview images, rename / move the file etc.
|
||||
The post-processing gives you the possibility to execute different actions after a recording has finished. You can use that to convert the files to another format, create preview images, rename / move the file etc.
|
||||
|
||||
##### Available Steps
|
||||
|
||||
- **create a copy** - Creates a copy of the original recording. All following post-processing steps are executed on the copy, not on the
|
||||
original recording. This means, that the post-processing can be rerun in case a step failed, because the original recording is still
|
||||
available.
|
||||
- **create a copy** - Creates a copy of the original recording. All following post-processing steps are executed on the copy, not on the original recording. This means, that the post-processing can be rerun in case a step failed, because the original recording is still available.
|
||||
- **rename** - Renames the recording with the help of variables. See [Variables](#variables)
|
||||
- **move** - Moves the recording with the help of variables. See [Variables](#variables)
|
||||
- **remux / transcode** - Executes FFmpeg with the given arguments on the recording. This step can be used to convert a recording to
|
||||
MP4 or re-encode it to a different format / resolution. The input and output file don't have to be defined. If the step was successful
|
||||
the input file gets deleted.
|
||||
- **execute script** - Executes a script or program with the given arguments. You can use the [variables](#variables) to define what
|
||||
to pass over to the script.
|
||||
- **delete too short** - Delete a recording, if it is shorter than the given duration. This post-processing step has replaced the
|
||||
setting, which was available in the post-processing category before
|
||||
- **delete original** - This is a companion step for "create a copy". If you use the copy step and all other steps are successful,
|
||||
you probably want to get rid of the original file and just keep the result of the post-processing. That's what this step does.
|
||||
- **remux / transcode** - Executes FFmpeg with the given arguments on the recording. This step can be used to convert a recording to MP4 or re-encode it to a different format / resolution. The input and output file don't have to be defined. If the step was successful the input file gets deleted.
|
||||
- **execute script** - Executes a script or program with the given arguments. You can use the [variables](#variables) to define what to pass over to the script.
|
||||
- **delete too short** - Delete a recording, if it is shorter than the given duration. This post-processing step has replaced the setting, which was available in the post-processing category before
|
||||
- **delete original** - This is a companion step for "create a copy". If you use the copy step and all other steps are successful, you probably want to get rid of the original file and just keep the result of the post-processing. That's what this step does.
|
||||
- **remove recording, but keep the files** - Removes the recording from the recordings list, but keeps the files untouched.
|
||||
- **create contactsheet** - create a contact sheet with preview images of the recording
|
||||
|
||||
#### Planned for future releases
|
||||
|
||||
- **call a webhook** - call a URL once a recording is finished
|
||||
- **create timeline thumbnails** - create a small thumbnail for every second or every few seconds, which can be used to very fast
|
||||
scan through a recording
|
||||
- **create timeline thumbnails** - create a small thumbnail for every second or every few seconds, which can be used to very fast scan through a recording
|
||||
|
||||
#### How to configure the server to do post-processing
|
||||
|
||||
There is currently no user interface to configure the post-processing for the server. It has to be added manually to the server config.
|
||||
I suggest to start the app and configure the post-processing steps in the settings. Afterwards you close the app and copy the
|
||||
post-processing section from the settings.json to your server.json file. To find out, where these files are on your system, read
|
||||
[Configuration File](ConfigurationFile.md).
|
||||
I suggest to start the app and configure the post-processing steps in the settings. Afterwards you close the app and copy the post-processing section from the settings.json to your server.json file. To find out, where these files are on your system, read [Configuration File](ConfigurationFile.md).
|
||||
|
||||
The part you have to copy is
|
||||
The part you have to copy is:
|
||||
|
||||
```
|
||||
postProcessors: [
|
||||
...
|
||||
],
|
||||
```
|
||||
**NOTE:** There are discrepencies between the way Windows and Linux directories are written, you will need to adjust if copying from one OS to the other.
|
||||
|
||||
|
||||
#### Variables
|
||||
|
||||
|
@ -50,24 +41,17 @@ The part you have to copy is
|
|||
###### Available variables:
|
||||
|
||||
- **${modelName}** - the name of the recorded model
|
||||
- **${modelDisplayName}** - the name of the recorded model, which is shown on the webpage. Might be the same as
|
||||
${modelName}
|
||||
- **${modelDisplayName}** - the name of the recorded model, which is shown on the webpage. Might be the same as ${modelName}
|
||||
- **${modelGroupName}** - name of the model group, if the model is part of a group
|
||||
- **${modelGroupId}** - the unique ID of the model group, if the model is part of a group
|
||||
- **${siteName}** - the name of the cam site, the model streams on
|
||||
- **${fileSuffix}** - the file extension of the recording. E.g. ts or mp4. In case of a standard server recording,
|
||||
this will be empty
|
||||
- **${fileSuffix}** - the file extension of the recording. E.g. ts or mp4. In case of a standard server recording, this will be empty
|
||||
- **${epochSecond}** - timestamp of the recording in seconds since 1970-01-01 (unixtime)
|
||||
- **${modelNotes}** - sanitized model notes. The following characters are replaced by an underscore:
|
||||
\\, /, ', " and space
|
||||
- **${recordingNotes}** - sanitized recording notes. The following characters are replaced by an underscore:
|
||||
\\, /, ', " and space. Useful for the download of recordings from the server.
|
||||
- **${recordingsDir}** - the base directory of all recordings. Same as Recordings Directory in the Recorder settings
|
||||
section.
|
||||
- **${absolutePath}** - the absolute path in the filesystem to the recording file (or the recording directory in case of
|
||||
a server recording)
|
||||
- **${absoluteParentPath}** - the absolute path to the parent directory of the recording in the filesystem (or the
|
||||
recording dir in case of a server recording)
|
||||
- **${modelNotes}** - sanitized model notes. The following characters are replaced by an underscore: \\, /, ', " and space
|
||||
- **${recordingNotes}** - sanitized recording notes. The following characters are replaced by an underscore: \\, /, ', " and space. Useful for the download of recordings from the server.
|
||||
- **${recordingsDir}** - the base directory of all recordings. Same as Recordings Directory in the Recorder settings section.
|
||||
- **${absolutePath}** - the absolute path in the filesystem to the recording file (or the recording directory in case of a server recording)
|
||||
- **${absoluteParentPath}** - the absolute path to the parent directory of the recording in the filesystem (or the recording dir in case of a server recording)
|
||||
- **${utcDateTime}** and **${localDateTime}** - the timestamp of the recording in the UTC or your local timezone
|
||||
|
||||
#### Functions
|
||||
|
@ -76,17 +60,13 @@ The part you have to copy is
|
|||
- **$upper** - converts all of the characters to upper case - `$upper(hello world)` becomes `HELLO WORLD`
|
||||
- **$lower** - converts all of the characters to lower case - `$lower(hElLo WORLD)` becomes `hello world`
|
||||
- **$capitalize** - capitalizes words changing the first character to upper case - `$capitalize(hElLo WorLD)` becomes `HElLo WorLD`
|
||||
- **$sanitize** - removes problematic characters - `$sanitize(hEl'Lo / WO"RLD)` becomes `hEl_Lo___WO_RLD`. The following characters are replaced by an
|
||||
underscore:
|
||||
\\, /, ', " and space
|
||||
- **$orElse** - provide an alternative in case a variable is not set - `$orElse(${variable},someValue)` - becomes `${variable}`, if it is set or `someValue`, if
|
||||
`${variable}` is not set
|
||||
- **$sanitize** - removes problematic characters - `$sanitize(hEl'Lo / WO"RLD)` becomes `hEl_Lo___WO_RLD`. The following characters are replaced by an underscore: \\, /, ', " and space
|
||||
- **$orElse** - provide an alternative in case a variable is not set - `$orElse(${variable},someValue)` - becomes `${variable}`, if it is set or `someValue`, if `${variable}` is not set
|
||||
- **$format** - formats a date, can be used with a pattern or without.
|
||||
Examples:
|
||||
- `$format(${localDateTime})` - becomes something like `2023-02-26_12-23-15`
|
||||
- `$format(${localDateTime},yyyyMMdd-HHmmss)` would lead to `20200928-173605`
|
||||
<table class="table-striped">
|
||||
|
||||
<thead>
|
||||
<tr><th scope="col">Symbol</th> <th scope="col">Meaning</th> <th scope="col">Presentation</th> <th scope="col">Examples</th>
|
||||
</tr></thead>
|
||||
|
@ -142,3 +122,5 @@ For more information see: [DateTimeFormatter](https://docs.oracle.com/en/java/ja
|
|||
#### Full Example
|
||||
|
||||
`$orElse(${modelGroupName},$sanitize(${modelName}))_$format(${localDateTime})_${recordingNotes}`
|
||||
|
||||
The Settings -> Post-processing tab in the standalone includes a `Variable Playground` where you can try various variables.
|
||||
|
|
|
@ -1,20 +1,15 @@
|
|||
#### Are ticket / gold / private shows supported?
|
||||
|
||||
No. I never intended to record these kind of shows and I never tested it. You might be able to record
|
||||
them, but you have to figure it out yourself.
|
||||
No. I never intended to record these kind of shows and I never tested it. You might be able to record them, but you have to figure it out yourself.
|
||||
|
||||
#### How can I convert the recordings to mp4 / mkv?
|
||||
#### How can I convert the recordings to MP4 / MKV containers?
|
||||
|
||||
To convert the files to another format, you have to remux them. You don't have to reencode them, since the
|
||||
files (usually, have not seen an exception yet) already contain H.264 video and AAC audio. You can remux the
|
||||
files manually with tools like [Avidemux](Avidemux.md), [MKVToolNix](MKVToolNix.md) or
|
||||
[FFmpeg](FFmpeg.md) or use the `remux/transcode` step in [post-processing](PostProcessing.md).
|
||||
To convert the files to another format, you have to remux them. You don't have to reencode them, since the files (usually, have not seen an exception yet) already contain H.264 video and AAC audio. You can remux the files manually with tools like [Avidemux](Avidemux.md), [MKVToolNix](MKVToolNix.md) or [FFmpeg](FFmpeg.md) or use the `remux/transcode` step in [post-processing](PostProcessing.md).
|
||||
|
||||
#### Streams are not getting recorded even though the model is online
|
||||
|
||||
- Is "Leave space on device set" and do you have enough space left?
|
||||
- Is "Maximum resolution" set? In case maximum resolution is set and ctbrec cannot determine the
|
||||
resolution of a stream, the stream will not be recorded.
|
||||
- Is "Maximum resolution" set? In case maximum resolution is set and ctbrec cannot determine the resolution of a stream, the stream will not be recorded.
|
||||
- Is "Concurrent Recordings" set and you reached the maximum?
|
||||
|
||||
#### How can I playback the recorded .ts files?
|
||||
|
@ -33,34 +28,29 @@ Use one of the following players:
|
|||
- [mpv](https://mpv.io/installation/)
|
||||
- [VLC](https://www.videolan.org/vlc/)
|
||||
|
||||
If you have direct access to the recordings you can use these players and open the playlist.m3u8.
|
||||
If you have direct access to the recordings you can use these players and open the `playlist.m3u8`.
|
||||
Otherwise use the ctbrec client. Set the **Record Location** to **Remote** and configure your server.
|
||||
Under **General** select the **Player** of your choice. Then you can start the playback directly from the
|
||||
**Recordings** tab.
|
||||
Under **General** select the **Player** of your choice. Then you can start the playback directly from the **Recordings** tab.
|
||||
|
||||
#### The login for site XYZ does not work anymore and the credentails work in a browser
|
||||
|
||||
Stop CTB Recorder. Then open the settings directory (check [ConfigurationFile](ConfigurationFile.md) for the location) and
|
||||
delete the cookies file for that site. Start CTB Recorder again and it should work again. If it does not work, check the log
|
||||
file for errors. The log file is called ctbrec.log and you can find it in the installation directory of CTB Recorder.
|
||||
If that does not work go back to your settings directory, go up to the parent directory and delete ctbrec-minimal-browser, if it
|
||||
exists.
|
||||
- Delete the cookies by going to Settings->Sites then use the `Delete Cookies` button for the site.
|
||||
|
||||
If it does not work, check the log file for errors. The log file is called `ctbrec.log` and you can find it in the installation directory of CTB Recorder.
|
||||
If that does not work go back to your settings directory, go up to the parent directory and delete ctbrec-minimal-browser, if it exists.
|
||||
|
||||
#### It takes a long time until a recording starts for a model
|
||||
|
||||
You probably have a lot of models in the "Recording" list. CTB Recorder checks the models one after the other. This is done on
|
||||
purpose to not fire too many requests in a short amount of time because this can cause blocks by the camsites.
|
||||
You probably have a lot of models in the "Recording" list. CTB Recorder checks the models one after the other. This is done on purpose to not fire too many requests in a short amount of time because this can cause blocks by the camsites.
|
||||
|
||||
#### Can I run several instances of CTB Recorder
|
||||
|
||||
It is possible to define the configuration directory and configuration file, which is used by ctbrec. This way you
|
||||
can create several instances with different configurations.
|
||||
On Windows, create a file called `ctbrec.l4j.ini` right next to `ctbrec.exe`. Add one of the following settings
|
||||
or both to the file:
|
||||
It is possible to define the configuration directory and configuration file, which is used by ctbrec. This way you can create several instances with different configurations.
|
||||
On Windows, create a file called `ctbrec.l4j.ini` right next to `ctbrec.exe`. Add one of the following settings or both to the file:
|
||||
|
||||
To change the config directory:
|
||||
|
||||
`-Dctbrec.config.dir=C:\Users\boobface\Desktop\ctbrec\conf`
|
||||
`-Dctbrec.config.dir=D:\ctbrec\conf`
|
||||
|
||||
To change only the config file:
|
||||
|
||||
|
@ -68,6 +58,6 @@ To change only the config file:
|
|||
|
||||
On Linux and macOS edit `ctbrec.sh` and add one or both of the above mentioned settings to the start line (preferably directly after $JAVA):
|
||||
|
||||
`$JAVA -Dctbrec.config=alternate-settings.json -Djdk.gtk.version=3 -cp ctbrec-1.19.1-final.jar ctbrec.ui.Launcher`
|
||||
`$JAVA -Dctbrec.config=alternate-settings.json -Djdk.gtk.version=3 -cp ctbrec-5.3.0-final.jar ctbrec.ui.Launcher`
|
||||
|
||||
<iframe width="560" height="315" src="https://www.youtube.com/embed/ATeS6HgADUo" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
|
||||
|
|
|
@ -15,17 +15,16 @@ On macOS it is `/Users/{your user name}/Library/Preferences/ctbrec/<version>/ser
|
|||
|
||||
You can open this file in a text editor and change it to your likings. You probably only want to change `httpPort` and `recordingsDir`. Most of the other stuff is irrelevant since the server and CTB Recorder use the same config file format. When the server is running, you can connect to it with CTB Recorder by changing the setting "Record location" to "Remote".
|
||||
|
||||
Do not try to edit the `server.json` while the server is running, it will be overwritten and any changes lost.
|
||||
|
||||
### Web Interface
|
||||
You can enable the server's web interface in the configuration server.json. Just set `webinterface` to true and set values for `webinterfaceUsername` and `webinterfacePassword`.
|
||||
|
||||
### SSL / TLS
|
||||
Since version 2.2.0 CTB Recorder supports SSL / TLS. To switch it on/off you have to change the server and client configuration. On the server side open the server.json and set
|
||||
`transportLayerSecurity` to true. The server will then open an additional port, which can be configured with `httpSecurePort`.
|
||||
On the client side open CTB Recorder and on the Settings tab change the port to the value of `httpSecurePort`. Then tick `Use Secure Communication (TLS)`. Afterwards restart
|
||||
CTB Recorder and you should be able to connect to the server.
|
||||
Since version 2.2.0 CTB Recorder supports SSL / TLS. To switch it on/off you have to change the server and client configuration. On the server side open the `server.json` and set `transportLayerSecurity` to true. The server will then open an additional port, which can be configured with `httpSecurePort`.
|
||||
On the client side open CTB Recorder and on the Settings tab change the port to the value of `httpSecurePort`. Then tick `Use Secure Communication (TLS)`. Afterwards restart CTB Recorder and you should be able to connect to the server.
|
||||
|
||||
By default, CTB Recorder uses a self-signed certificate. If you also use the webinterface, your browser will complain about that, but you can just ignore the warning and add the
|
||||
certificate to your trusted certificates.
|
||||
By default, CTB Recorder uses a self-signed certificate. If you also use the webinterface, your browser will complain about that, but you can just ignore the warning and add the certificate to your trusted certificates.
|
||||
|
||||
#### Custom certificate
|
||||
You can also use your own certificate, if you want to. Follow these steps to create a keystore, which can be used by the server:
|
||||
|
|
|
@ -17,18 +17,20 @@ This section contains video tutorials, which how different aspects of running CT
|
|||
|
||||
```
|
||||
|
||||
#### How to run multiple instances on Windows
|
||||
<iframe width="560" height="315" src="https://www.youtube.com/embed/ATeS6HgADUo" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
|
||||
|
||||
```
|
||||
|
||||
|
||||
```
|
||||
|
||||
The following is redundant, see [post-processing](PostProcessing.md).
|
||||
|
||||
#### How to rename recordings with a post-processing script (Windows)
|
||||
<iframe width="560" height="315" src="https://www.youtube.com/embed/QIZhrhBFhoc" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
|
||||
|
||||
```
|
||||
|
||||
|
||||
```
|
||||
|
||||
#### How to run multiple instances on Windows 10
|
||||
<iframe width="560" height="315" src="https://www.youtube.com/embed/ATeS6HgADUo" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
|
||||
|
||||
```
|
||||
|
||||
|
||||
```
|
|
@ -15,7 +15,7 @@
|
|||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta name="description" content="CTB Recorder is a free recording software for Chaturbate">
|
||||
<meta name="author" content="">
|
||||
<meta name="author" content="0xb00bface">
|
||||
|
||||
<title>CTB Recorder</title>
|
||||
|
||||
|
|
262
docs/index.html
262
docs/index.html
|
@ -1,51 +1,41 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<!-- Global site tag (gtag.js) - Google Analytics -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-129283922-1"></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
|
||||
function gtag() {
|
||||
dataLayer.push(arguments);
|
||||
}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'UA-129283922-1');
|
||||
</script>
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta name="description" content="CTB Recorder is a free recording software for Chaturbate">
|
||||
<meta name="author" content="">
|
||||
|
||||
<title>CTB Recorder</title>
|
||||
|
||||
<!-- Bootstrap core CSS -->
|
||||
<link href="vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
<!-- Custom fonts for this template -->
|
||||
<link href="vendor/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
|
||||
<link href="https://fonts.googleapis.com/css?family=Montserrat:400,700" rel="stylesheet" type="text/css">
|
||||
<link href="https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic" rel="stylesheet" type="text/css">
|
||||
|
||||
<!-- Plugin CSS -->
|
||||
<link href="vendor/magnific-popup/magnific-popup.css" rel="stylesheet" type="text/css">
|
||||
|
||||
<!-- Custom styles for this template -->
|
||||
<link href="css/freelancer.min.css" rel="stylesheet">
|
||||
|
||||
<link rel="shortcut icon" href="img/favicon.png" type="image/x-icon" />
|
||||
|
||||
</head>
|
||||
|
||||
<body id="page-top">
|
||||
|
||||
<!-- Navigation -->
|
||||
<nav class="navbar navbar-expand-lg bg-secondary fixed-top text-uppercase" id="mainNav">
|
||||
<div class="container">
|
||||
<a class="navbar-brand js-scroll-trigger" href="#page-top"><img src="https://raw.githubusercontent.com/0xboobface/ctbrec/master/client/src/main/resources/icon64.png" alt="Logo"/>CTB Recorder</a>
|
||||
<button class="navbar-toggler navbar-toggler-right text-uppercase bg-primary text-white rounded" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
|
||||
Menu
|
||||
<i class="fa fa-bars"></i>
|
||||
<a class="navbar-brand js-scroll-trigger" href="#page-top">
|
||||
<img src="https://raw.githubusercontent.com/0xboobface/ctbrec/master/client/src/main/resources/icon64.png" alt="Logo" />CTB Recorder </a>
|
||||
<button class="navbar-toggler navbar-toggler-right text-uppercase bg-primary text-white rounded" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation"> Menu <i class="fa fa-bars"></i>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarResponsive">
|
||||
<ul class="navbar-nav ml-auto">
|
||||
|
@ -63,14 +53,13 @@
|
|||
</li>
|
||||
<li class="nav-item mx-0 mx-lg-1">
|
||||
<a href="#donate" class="js-scroll-trigger" style="float:right; margin-left: 10px">
|
||||
<img src="img/buymeacoffee/Button/button-red.png" alt="Buy a coffee" style="width:150px; padding-top: 7px"/>
|
||||
<img src="img/buymeacoffee/Button/button-red.png" alt="Buy a coffee" style="width:150px; padding-top: 7px" />
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- Header -->
|
||||
<header class="masthead bg-primary text-white text-center">
|
||||
<div class="container">
|
||||
|
@ -79,10 +68,9 @@
|
|||
-->
|
||||
<h1 class="text-uppercase mb-0">CTB Recorder</h1>
|
||||
<hr class="star-light">
|
||||
<h2 class="font-weight-light mb-0">A free recording software for different camsites.<br/>Currently supported: BongaCams, Cam4, CamSoda, Chaturbate, Dreamcam, FC2Live, Flirt4Free, MyFreeCams, Showup.tv, Streamate, Streamray, Stripchat, WinkTv, XLovecam</h2>
|
||||
<h2 class="font-weight-light mb-0">A free recording software for different camsites. <br />Currently supported: BongaCams, Cam4, CamSoda, Chaturbate, Dreamcam, FC2Live, Flirt4Free, MyFreeCams, Showup.tv, Streamate, Streamray, Stripchat, WinkTv, XLovecam </h2>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- About/Download Section -->
|
||||
<section class="text-secondary mb-0" id="about">
|
||||
<div class="container">
|
||||
|
@ -98,9 +86,10 @@
|
|||
</div>
|
||||
<script>
|
||||
let cnt = 10;
|
||||
|
||||
function downloadCounter(uri) {
|
||||
window.setTimeout(function() {
|
||||
if(cnt === 0) {
|
||||
if (cnt === 0) {
|
||||
location.href = uri;
|
||||
} else {
|
||||
cnt--;
|
||||
|
@ -109,6 +98,7 @@
|
|||
}
|
||||
}, 1000);
|
||||
}
|
||||
|
||||
function downloadFile(uri) {
|
||||
cnt = 10;
|
||||
$('#download-counter').show();
|
||||
|
@ -119,26 +109,19 @@
|
|||
<div class="row text-center">
|
||||
<div class="col">
|
||||
<a id="download_windows" class="btn btn-xl btn-outline-dark" href="#donate" onclick="downloadFile('https://github.com/0xboobface/ctbrec/releases/download/1.18.0/ctbrec-1.18.0-win64-jre.zip');">
|
||||
<i class="fa fa-windows mr-2"></i>
|
||||
Download for Windows!
|
||||
</a>
|
||||
<i class="fa fa-windows mr-2"></i> Download for Windows! </a>
|
||||
</div>
|
||||
<div class="col">
|
||||
<a id="download_macos" class="btn btn-xl btn-outline-dark" href="#donate" onclick="downloadFile('https://github.com/0xboobface/ctbrec/releases/download/1.18.0/ctbrec-1.18.0-macos-jre.zip');">
|
||||
<i class="fa fa-apple mr-2"></i>
|
||||
Download for macOS!
|
||||
</a>
|
||||
<i class="fa fa-apple mr-2"></i> Download for macOS! </a>
|
||||
</div>
|
||||
<div class="col">
|
||||
<a id="download_linux" class="btn btn-xl btn-outline-dark" href="#donate" onclick="downloadFile('https://github.com/0xboobface/ctbrec/releases/download/1.18.0/ctbrec-1.18.0-linux-jre.zip');">
|
||||
<i class="fa fa-linux mr-2"></i>
|
||||
Download for Linux!
|
||||
</a>
|
||||
<i class="fa fa-linux mr-2"></i> Download for Linux! </a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="portfolio bg-primary text-light" id="donate">
|
||||
<div class="container">
|
||||
<h2 class="text-center text-uppercase mb-0">Donate</h2>
|
||||
|
@ -146,57 +129,53 @@
|
|||
<div class="row">
|
||||
<div class="col-lg-10 mx-auto text-center">
|
||||
<p id="download-counter" class="lead text-center" style="display:none"></p>
|
||||
<p class="lead">
|
||||
CTB Recorder is free and open source. I'm a student and wrote this software in my spare time.
|
||||
If you like the software or want to suggest a new feature, please consider buying me a coffee or two. Thanks!
|
||||
</p>
|
||||
<p class="lead"> CTB Recorder is free and open source. I'm a student and wrote this software in my spare time. If you like the software or want to suggest a new feature, please consider buying me a coffee or two. Thanks! </p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row text-center">
|
||||
<div class="col">
|
||||
<p class="lead">
|
||||
<a href="https://www.buymeacoffee.com/0xboobface" target="_blank">
|
||||
<img src="img/buymeacoffee-round.png" alt="Buy a coffee" style="height: 160px; margin: 20px"/>
|
||||
</a><br/>
|
||||
<input type="button" value="Buy a coffee"
|
||||
onclick="window.open('https://www.buymeacoffee.com/0xboobface','_blank')">
|
||||
<img src="img/buymeacoffee-round.png" alt="Buy a coffee" style="height: 160px; margin: 20px" />
|
||||
</a>
|
||||
<br />
|
||||
<input type="button" value="Buy a coffee" onclick="window.open('https://www.buymeacoffee.com/0xboobface','_blank')">
|
||||
</p>
|
||||
</div>
|
||||
<div class="col">
|
||||
<p class="lead">
|
||||
<a href="https://www.paypal.me/0xb00bface" target="_blank">
|
||||
<img src="img/paypal-round.png" alt="PayPal" style="height: 160px; margin: 20px"/>
|
||||
</a><br/>
|
||||
<input type="button" value="PayPal"
|
||||
onclick="window.open('https://www.paypal.me/0xb00bface','_blank')">
|
||||
<img src="img/paypal-round.png" alt="PayPal" style="height: 160px; margin: 20px" />
|
||||
</a>
|
||||
<br />
|
||||
<input type="button" value="PayPal" onclick="window.open('https://www.paypal.me/0xb00bface','_blank')">
|
||||
</p>
|
||||
</div>
|
||||
<div class="col">
|
||||
<p class="lead">
|
||||
<a href="https://www.patreon.com/0xb00bface" target="_blank">
|
||||
<img src="img/patreon-round.png" alt="Patreon" style="height: 160px; margin: 20px"/>
|
||||
</a><br/>
|
||||
<input type="button" value="Patreon"
|
||||
onclick="window.open('https://www.patreon.com/0xb00bface','_blank')">
|
||||
<img src="img/patreon-round.png" alt="Patreon" style="height: 160px; margin: 20px" />
|
||||
</a>
|
||||
<br />
|
||||
<input type="button" value="Patreon" onclick="window.open('https://www.patreon.com/0xb00bface','_blank')">
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<br/><br/>
|
||||
<br />
|
||||
<br />
|
||||
<div class="row text-center">
|
||||
<div class="col">
|
||||
<p class="lead">
|
||||
<a href="https://chaturbate.com/in/?track=default&tour=LQps&campaign=55vTi&room=0xb00bface" target="_blank" title="If you buy tokens by using this button, Chaturbate will award me 20% of the tokens' value for sending you over. You get the full tokens and it doesn't cost you any more!">
|
||||
<img src="img/token.png" alt="Buy Chaturbate tokens"/>
|
||||
</a><br/>
|
||||
<input type="button" value="Buy tokens"
|
||||
onclick="window.open('https://chaturbate.com/in/?track=default&tour=LQps&campaign=55vTi&room=0xb00bface','_blank')"
|
||||
title="If you buy tokens by using this button, Chaturbate will award me 20% of the tokens' value for sending you over. You get the full tokens and it doesn't cost you any more!">
|
||||
<img src="img/token.png" alt="Buy Chaturbate tokens" />
|
||||
</a>
|
||||
<br />
|
||||
<input type="button" value="Buy tokens" onclick="window.open('https://chaturbate.com/in/?track=default&tour=LQps&campaign=55vTi&room=0xb00bface','_blank')" title="If you buy tokens by using this button, Chaturbate will award me 20% of the tokens' value for sending you over. You get the full tokens and it doesn't cost you any more!">
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Screenshots Grid Section -->
|
||||
<section class="portfolio" id="portfolio">
|
||||
<div class="container">
|
||||
|
@ -253,7 +232,6 @@
|
|||
<img class="img-fluid" src="img/settings.png" alt="">
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-lg-4">
|
||||
<a class="portfolio-item d-block mx-auto" href="#portfolio-modal-6">
|
||||
<div class="portfolio-item-caption d-flex position-absolute h-100 w-100">
|
||||
|
@ -264,11 +242,9 @@
|
|||
<img class="img-fluid" src="img/server.png" alt="">
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- FAQ Section -->
|
||||
<section id="faq" class="bg-primary text-light">
|
||||
<div class="container">
|
||||
|
@ -281,106 +257,72 @@
|
|||
<div class="card">
|
||||
<div class="card-header" id="headingTwo">
|
||||
<h5 class="mb-0">
|
||||
<button class="btn btn-link text-dark collapsed" type="button" data-toggle="collapse" data-target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
|
||||
What is a .ts file?
|
||||
</button>
|
||||
<button class="btn btn-link text-dark collapsed" type="button" data-toggle="collapse" data-target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo"> What is a .ts file? </button>
|
||||
</h5>
|
||||
</div>
|
||||
<div id="collapseTwo" class="collapse" aria-labelledby="headingTwo" data-parent="#accordionExample">
|
||||
<div class="card-body">
|
||||
A .ts file is a MPEG transport stream, which contains the video and
|
||||
audio of the stream. If you want to convert a .ts file into mp4
|
||||
or mkv you can use a program like <a
|
||||
href="https://handbrake.fr/">Handbrake</a> or <a href="http://avidemux.sourceforge.net/">Avidemux</a>.
|
||||
<div class="card-body"> A .ts file is a MPEG transport stream, which contains the video and audio of the stream. If you want to convert a .ts file into mp4 or mkv you can use a program like <a href="https://handbrake.fr/">Handbrake</a> or <a href="http://avidemux.sourceforge.net/">Avidemux</a>. </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- How do I run the server -->
|
||||
<div class="card">
|
||||
<div class="card-header" id="headingThree">
|
||||
<h5 class="mb-0">
|
||||
<button class="btn btn-link text-dark collapsed" type="button" data-toggle="collapse" data-target="#collapseThree" aria-expanded="false" aria-controls="collapseThree">
|
||||
How do I run the server?
|
||||
</button>
|
||||
<button class="btn btn-link text-dark collapsed" type="button" data-toggle="collapse" data-target="#collapseThree" aria-expanded="false" aria-controls="collapseThree"> How do I run the server? </button>
|
||||
</h5>
|
||||
</div>
|
||||
<div id="collapseThree" class="collapse" aria-labelledby="headingThree" data-parent="#accordionExample">
|
||||
<div class="card-body">
|
||||
The archive you downloaded contains a server.bat or server.sh, which can be used to start the server. On the first start, the server uses a default
|
||||
configuration. Once you terminate the server by pressing <kbd><kbd>ctrl</kbd> + <kbd>c</kbd></kbd>, the config is stored in your user home.<br/>
|
||||
On Windows that is <code>C:\Users\{your user name}\AppData\Roaming\ctbrec\server.json</code><br/>
|
||||
On Linux it is <code>~/.config/ctbrec/server.json</code><br/>
|
||||
On macOS it is <code>/Users/{your user name}/Library/Preferences/ctbrec</code><br/>
|
||||
You can open this file in a text editor and change it to your likings. You probably only want to change <code>httpPort</code> and <code>recordingsDir</code>.
|
||||
Most of the other stuff is irrelevant since the server and CTB Recorder use the same config file format.
|
||||
When the server is running, you can connect to it with CTB Recorder by changing the setting "Record location" to "Remote".
|
||||
<div class="card-body"> The archive you downloaded contains a server.bat or server.sh, which can be used to start the server. On the first start, the server uses a default configuration. Once you terminate the server by pressing <kbd>
|
||||
<kbd>ctrl</kbd> + <kbd>c</kbd>
|
||||
</kbd>, the config is stored in your user home. <br /> On Windows that is <code>C:\Users\{your user name}\AppData\Roaming\ctbrec\server.json</code>
|
||||
<br /> On Linux it is <code>~/.config/ctbrec/server.json</code>
|
||||
<br /> On macOS it is <code>/Users/{your user name}/Library/Preferences/ctbrec</code>
|
||||
<br /> You can open this file in a text editor and change it to your likings. You probably only want to change <code>httpPort</code> and <code>recordingsDir</code>. Most of the other stuff is irrelevant since the server and CTB Recorder use the same config file format. When the server is running, you can connect to it with CTB Recorder by changing the setting "Record location" to "Remote".
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Difference Win JRE -->
|
||||
<div class="card">
|
||||
<div class="card-header" id="headingFour">
|
||||
<h5 class="mb-0">
|
||||
<button class="btn btn-link text-dark collapsed" type="button" data-toggle="collapse" data-target="#collapseFour" aria-expanded="false" aria-controls="collapseFour">
|
||||
What is the difference between the Windows download and Windows (no JRE)?
|
||||
</button>
|
||||
<button class="btn btn-link text-dark collapsed" type="button" data-toggle="collapse" data-target="#collapseFour" aria-expanded="false" aria-controls="collapseFour"> What is the difference between the Windows download and Windows (no JRE)? </button>
|
||||
</h5>
|
||||
</div>
|
||||
<div id="collapseFour" class="collapse" aria-labelledby="headingFour" data-parent="#accordionExample">
|
||||
<div class="card-body">
|
||||
If you know what Java is and if you know, that you have Java installed, you can use the (no JRE) version. Otherwise you are better off using the
|
||||
standard Windows download, because it comes with all necessary dependencies.
|
||||
<div class="card-body"> If you know what Java is and if you know, that you have Java installed, you can use the (no JRE) version. Otherwise you are better off using the standard Windows download, because it comes with all necessary dependencies. </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Help -->
|
||||
<div class="card">
|
||||
<div class="card-header" id="headingFive">
|
||||
<h5 class="mb-0">
|
||||
<button class="btn btn-link text-dark collapsed" type="button" data-toggle="collapse" data-target="#collapseFive" aria-expanded="false" aria-controls="collapseFive">
|
||||
I need help!
|
||||
</button>
|
||||
<button class="btn btn-link text-dark collapsed" type="button" data-toggle="collapse" data-target="#collapseFive" aria-expanded="false" aria-controls="collapseFive"> I need help! </button>
|
||||
</h5>
|
||||
</div>
|
||||
<div id="collapseFive" class="collapse" aria-labelledby="headingFive" data-parent="#accordionExample">
|
||||
<div class="card-body">
|
||||
Go to the project website and <a href="https://github.com/0xboobface/ctbrec/issues">create a new Issue</a>.
|
||||
<div class="card-body"> Go to the project website and <a href="https://github.com/0xboobface/ctbrec/issues">create a new Issue</a>. </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Feature request -->
|
||||
<div class="card">
|
||||
<div class="card-header" id="headingSix">
|
||||
<h5 class="mb-0">
|
||||
<button class="btn btn-link text-dark collapsed" type="button" data-toggle="collapse" data-target="#collapseSix" aria-expanded="false" aria-controls="collapseSix">
|
||||
I have a suggestion for a new feature!
|
||||
</button>
|
||||
<button class="btn btn-link text-dark collapsed" type="button" data-toggle="collapse" data-target="#collapseSix" aria-expanded="false" aria-controls="collapseSix"> I have a suggestion for a new feature! </button>
|
||||
</h5>
|
||||
</div>
|
||||
<div id="collapseSix" class="collapse" aria-labelledby="headingSix" data-parent="#accordionExample">
|
||||
<div class="card-body">
|
||||
Go to the project website and <a href="https://github.com/0xboobface/ctbrec/issues">create a new Issue</a>.
|
||||
<div class="card-body"> Go to the project website and <a href="https://github.com/0xboobface/ctbrec/issues">create a new Issue</a>. </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Bug -->
|
||||
<div class="card">
|
||||
<div class="card-header" id="headingSeven">
|
||||
<h5 class="mb-0">
|
||||
<button class="btn btn-link text-dark collapsed" type="button" data-toggle="collapse" data-target="#collapseSeven" aria-expanded="false" aria-controls="collapseSeven">
|
||||
I found a bug! Where can I report it?
|
||||
</button>
|
||||
<button class="btn btn-link text-dark collapsed" type="button" data-toggle="collapse" data-target="#collapseSeven" aria-expanded="false" aria-controls="collapseSeven"> I found a bug! Where can I report it? </button>
|
||||
</h5>
|
||||
</div>
|
||||
<div id="collapseSeven" class="collapse" aria-labelledby="headingSeven" data-parent="#accordionExample">
|
||||
<div class="card-body">
|
||||
Go to the project website and <a href="https://github.com/0xboobface/ctbrec/issues">create a new Issue</a>.
|
||||
</div>
|
||||
<div class="card-body"> Go to the project website and <a href="https://github.com/0xboobface/ctbrec/issues">create a new Issue</a>. </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -388,7 +330,6 @@
|
|||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Source Code Section -->
|
||||
<section id="code">
|
||||
<div class="container">
|
||||
|
@ -396,81 +337,33 @@
|
|||
<hr class="star-dark mb-5">
|
||||
<div class="row">
|
||||
<div class="col-lg-8 mx-auto text-center">
|
||||
<p class="lead">
|
||||
CTB Recorder is free and open source. The source code is available on <a href="https://github.com/0xboobface/ctbrec">Github</a>.
|
||||
</p>
|
||||
<p class="lead"> CTB Recorder is free and open source. The source code is available on <a href="https://github.com/0xboobface/ctbrec">Github</a>. </p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Footer -->
|
||||
<footer class="footer text-center">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<!--
|
||||
<div class="col-md-4 mb-5 mb-lg-0">
|
||||
<h4 class="text-uppercase mb-4">Location</h4>
|
||||
<p class="lead mb-0">2215 John Daniel Drive
|
||||
<br>Clark, MO 65243</p>
|
||||
</div>
|
||||
<div class="col-md-4 mb-5 mb-lg-0">
|
||||
<h4 class="text-uppercase mb-4">Around the Web</h4>
|
||||
<ul class="list-inline mb-0">
|
||||
<li class="list-inline-item">
|
||||
<a class="btn btn-outline-light btn-social text-center rounded-circle" href="#">
|
||||
<i class="fa fa-fw fa-facebook"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li class="list-inline-item">
|
||||
<a class="btn btn-outline-light btn-social text-center rounded-circle" href="#">
|
||||
<i class="fa fa-fw fa-google-plus"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li class="list-inline-item">
|
||||
<a class="btn btn-outline-light btn-social text-center rounded-circle" href="#">
|
||||
<i class="fa fa-fw fa-twitter"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li class="list-inline-item">
|
||||
<a class="btn btn-outline-light btn-social text-center rounded-circle" href="#">
|
||||
<i class="fa fa-fw fa-linkedin"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li class="list-inline-item">
|
||||
<a class="btn btn-outline-light btn-social text-center rounded-circle" href="#">
|
||||
<i class="fa fa-fw fa-dribbble"></i>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<h4 class="text-uppercase mb-4">About Freelancer</h4>
|
||||
<p class="lead mb-0">Freelance is a free to use, open source Bootstrap theme created by
|
||||
<a href="http://startbootstrap.com">Start Bootstrap</a>.</p>
|
||||
</div>
|
||||
<div class="col-md-4 mb-5 mb-lg-0"><h4 class="text-uppercase mb-4">Location</h4><p class="lead mb-0">2215 John Daniel Drive
|
||||
<br>Clark, MO 65243</p></div><div class="col-md-4 mb-5 mb-lg-0"><h4 class="text-uppercase mb-4">Around the Web</h4><ul class="list-inline mb-0"><li class="list-inline-item"><a class="btn btn-outline-light btn-social text-center rounded-circle" href="#"><i class="fa fa-fw fa-facebook"></i></a></li><li class="list-inline-item"><a class="btn btn-outline-light btn-social text-center rounded-circle" href="#"><i class="fa fa-fw fa-google-plus"></i></a></li><li class="list-inline-item"><a class="btn btn-outline-light btn-social text-center rounded-circle" href="#"><i class="fa fa-fw fa-twitter"></i></a></li><li class="list-inline-item"><a class="btn btn-outline-light btn-social text-center rounded-circle" href="#"><i class="fa fa-fw fa-linkedin"></i></a></li><li class="list-inline-item"><a class="btn btn-outline-light btn-social text-center rounded-circle" href="#"><i class="fa fa-fw fa-dribbble"></i></a></li></ul></div><div class="col-md-4"><h4 class="text-uppercase mb-4">About Freelancer</h4><p class="lead mb-0">Freelance is a free to use, open source Bootstrap theme created by
|
||||
<a href="http://startbootstrap.com">Start Bootstrap</a>.</p></div>
|
||||
-->
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<!--
|
||||
<div class="copyright py-4 text-center text-white">
|
||||
<div class="container">
|
||||
<small>Copyright © Your Website 2018</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="copyright py-4 text-center text-white"><div class="container"><small>Copyright © Your Website 2018</small></div></div>
|
||||
-->
|
||||
|
||||
<!-- Scroll to Top Button (Only visible on small and extra-small screen sizes) -->
|
||||
<div class="scroll-to-top d-lg-none position-fixed ">
|
||||
<a class="js-scroll-trigger d-block text-center text-white rounded" href="#page-top">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<!-- Portfolio Modals -->
|
||||
|
||||
<!-- Portfolio Modal 1 -->
|
||||
<div class="portfolio-modal mfp-hide" id="portfolio-modal-1">
|
||||
<div class="portfolio-modal-dialog bg-white">
|
||||
|
@ -485,14 +378,12 @@
|
|||
<img class="img-fluid mb-5" src="img/featured.jpg" alt="">
|
||||
<p class="mb-5">You can browse all the different categories like in the browser. The filter input on top helps, to find models quickly.</p>
|
||||
<a class="btn btn-primary btn-lg rounded-pill portfolio-modal-dismiss" href="#">
|
||||
<i class="fa fa-close"></i>
|
||||
Close</a>
|
||||
<i class="fa fa-close"></i> Close </a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Portfolio Modal 2 -->
|
||||
<div class="portfolio-modal mfp-hide" id="portfolio-modal-2">
|
||||
<div class="portfolio-modal-dialog bg-white">
|
||||
|
@ -507,14 +398,12 @@
|
|||
<img class="img-fluid mb-5" src="img/recording.png" alt="">
|
||||
<p class="mb-5">The Recording overview shows you, which models get recorded. You can also see, which models are currently online.</p>
|
||||
<a class="btn btn-primary btn-lg rounded-pill portfolio-modal-dismiss" href="#">
|
||||
<i class="fa fa-close"></i>
|
||||
Close</a>
|
||||
<i class="fa fa-close"></i> Close </a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Portfolio Modal 3 -->
|
||||
<div class="portfolio-modal mfp-hide" id="portfolio-modal-3">
|
||||
<div class="portfolio-modal-dialog bg-white">
|
||||
|
@ -529,14 +418,12 @@
|
|||
<img class="img-fluid mb-5" src="img/followed.jpg" alt="">
|
||||
<p class="mb-5">Recordings can be started with a simple right-click, as well as models followed or unfollowed.</p>
|
||||
<a class="btn btn-primary btn-lg rounded-pill portfolio-modal-dismiss" href="#">
|
||||
<i class="fa fa-close"></i>
|
||||
Close</a>
|
||||
<i class="fa fa-close"></i> Close </a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Portfolio Modal 4 -->
|
||||
<div class="portfolio-modal mfp-hide" id="portfolio-modal-4">
|
||||
<div class="portfolio-modal-dialog bg-white">
|
||||
|
@ -551,14 +438,12 @@
|
|||
<img class="img-fluid mb-5" src="img/recordings.png" alt="">
|
||||
<p class="mb-5">Finished recordings can be played and managed from within CTB Recorder</p>
|
||||
<a class="btn btn-primary btn-lg rounded-pill portfolio-modal-dismiss" href="#">
|
||||
<i class="fa fa-close"></i>
|
||||
Close</a>
|
||||
<i class="fa fa-close"></i> Close </a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Portfolio Modal 5 -->
|
||||
<div class="portfolio-modal mfp-hide" id="portfolio-modal-5">
|
||||
<div class="portfolio-modal-dialog bg-white">
|
||||
|
@ -571,16 +456,14 @@
|
|||
<h2 class="text-secondary text-uppercase mb-0">Settings</h2>
|
||||
<hr class="star-dark mb-5">
|
||||
<img class="img-fluid mb-5" src="img/settings.png" alt="">
|
||||
<p class="mb-5">You can define where the recordings are saved and which media player to use. I recommend <a href="https://mpv.io/" target="_blank">mpv</a>.</p>
|
||||
<p class="mb-5">You can define where the recordings are saved and which media player to use. I recommend <a href="https://mpv.io/" target="_blank">mpv</a>. </p>
|
||||
<a class="btn btn-primary btn-lg rounded-pill portfolio-modal-dismiss" href="#">
|
||||
<i class="fa fa-close"></i>
|
||||
Close</a>
|
||||
<i class="fa fa-close"></i> Close </a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Portfolio Modal 6 -->
|
||||
<div class="portfolio-modal mfp-hide" id="portfolio-modal-6">
|
||||
<div class="portfolio-modal-dialog bg-white">
|
||||
|
@ -595,44 +478,35 @@
|
|||
<img class="img-fluid mb-5" src="img/server.png" alt="">
|
||||
<p class="mb-5">Log output of the server</p>
|
||||
<a class="btn btn-primary btn-lg rounded-pill portfolio-modal-dismiss" href="#">
|
||||
<i class="fa fa-close"></i>
|
||||
Close</a>
|
||||
<i class="fa fa-close"></i> Close </a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Bootstrap core JavaScript -->
|
||||
<script src="vendor/jquery/jquery.min.js"></script>
|
||||
<script src="vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
<!-- Plugin JavaScript -->
|
||||
<script src="vendor/jquery-easing/jquery.easing.min.js"></script>
|
||||
<script src="vendor/magnific-popup/jquery.magnific-popup.min.js"></script>
|
||||
|
||||
<!-- Contact Form JavaScript -->
|
||||
<!--
|
||||
<script src="js/jqBootstrapValidation.js"></script>
|
||||
<script src="js/contact_me.js"></script>
|
||||
<script src="js/jqBootstrapValidation.js"></script><script src="js/contact_me.js"></script>
|
||||
-->
|
||||
|
||||
<!-- Custom scripts for this template -->
|
||||
<script src="js/freelancer.min.js"></script>
|
||||
|
||||
<script>
|
||||
$.ajax({
|
||||
type: 'GET',
|
||||
url: 'https://api.github.com/repos/0xboobface/ctbrec/releases'
|
||||
}).done(function( releases ) {
|
||||
}).done(function(releases) {
|
||||
let latest = releases[0];
|
||||
let version = latest.tag_name;
|
||||
$('#download_windows').on('click', () => downloadFile('https://github.com/0xboobface/ctbrec/releases/download/'+version+'/ctbrec-'+version+'-win64-jre.zip'));
|
||||
$('#download_macos').on('click', () => downloadFile('https://github.com/0xboobface/ctbrec/releases/download/'+version+'/ctbrec-'+version+'-macos-jre.zip'));
|
||||
$('#download_linux').on('click', () => downloadFile('https://github.com/0xboobface/ctbrec/releases/download/'+version+'/ctbrec-'+version+'-linux-jre.zip'));
|
||||
$('#download_windows').on('click', () => downloadFile('https://github.com/0xboobface/ctbrec/releases/download/' + version + '/ctbrec-' + version + '-win64-jre.zip'));
|
||||
$('#download_macos').on('click', () => downloadFile('https://github.com/0xboobface/ctbrec/releases/download/' + version + '/ctbrec-' + version + '-macos-jre.zip'));
|
||||
$('#download_linux').on('click', () => downloadFile('https://github.com/0xboobface/ctbrec/releases/download/' + version + '/ctbrec-' + version + '-linux-jre.zip'));
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
Loading…
Reference in New Issue