<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[VidHub Tutorial]]></title><description><![CDATA[VidHub Getting Started Tutorials and User Guide]]></description><link>https://vidhub.okaapps.com/</link><image><url>https://vidhub.okaapps.com/favicon.png</url><title>VidHub Tutorial</title><link>https://vidhub.okaapps.com/</link></image><generator>Ghost 5.82</generator><lastBuildDate>Wed, 05 Aug 2026 09:12:44 GMT</lastBuildDate><atom:link href="https://vidhub.okaapps.com/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Play Videos in VidHub from Third-Party Apps and Services]]></title><description><![CDATA[<p>Third-party apps can use a URL scheme to ask VidHub to play one video. VidHub currently provides two integration methods:</p>
<ul>
<li>Legacy <code>/open</code>: retained for existing Apple-platform integrations; supports a video URL and external subtitles.</li>
<li>New <code>/play</code>: based on x-callback-url; supports a starting position and returns playback progress and status when</li></ul>]]></description><link>https://vidhub.okaapps.com/3rd-party-app-integration/</link><guid isPermaLink="false">666172600d3b5200010a25d8</guid><category><![CDATA[Third-Party App Integration]]></category><dc:creator><![CDATA[Little Sui]]></dc:creator><pubDate>Thu, 06 Jun 2024 09:24:33 GMT</pubDate><content:encoded><![CDATA[<p>Third-party apps can use a URL scheme to ask VidHub to play one video. VidHub currently provides two integration methods:</p>
<ul>
<li>Legacy <code>/open</code>: retained for existing Apple-platform integrations; supports a video URL and external subtitles.</li>
<li>New <code>/play</code>: based on x-callback-url; supports a starting position and returns playback progress and status when playback exits.</li>
</ul>
<p>The new <code>/play</code> method supports iPhone, iPad, Apple TV, Mac, Android Mobile, and Android TV.</p>
<blockquote>
<p>New integrations should use <code>/play</code>. Existing Apple-platform <code>/open</code> integrations remain supported. Android Mobile and Android TV support only <code>/play</code>.</p>
</blockquote>
<h2 id="platform-support">Platform Support</h2>
<table>
<thead>
<tr>
<th>Platform</th>
<th>Legacy <code>/open</code></th>
<th>New <code>/play</code></th>
</tr>
</thead>
<tbody>
<tr>
<td>iPhone / iPad</td>
<td>Supported</td>
<td>Supported</td>
</tr>
<tr>
<td>Apple TV</td>
<td>Supported</td>
<td>Supported</td>
</tr>
<tr>
<td>Mac</td>
<td>Supported</td>
<td>Supported</td>
</tr>
<tr>
<td>Android Mobile</td>
<td>Not supported</td>
<td>Supported</td>
</tr>
<tr>
<td>Android TV</td>
<td>Not supported</td>
<td>Supported</td>
</tr>
</tbody>
</table>
<h2 id="feature-comparison">Feature Comparison</h2>
<table>
<thead>
<tr>
<th>Feature</th>
<th>Legacy <code>/open</code></th>
<th>New <code>/play</code></th>
</tr>
</thead>
<tbody>
<tr>
<td>Play one video</td>
<td>Supported</td>
<td>Supported</td>
</tr>
<tr>
<td>Load external subtitles</td>
<td>Supported</td>
<td>Supported</td>
</tr>
<tr>
<td>Set starting position</td>
<td>Not supported</td>
<td>Supported</td>
</tr>
<tr>
<td>Set display file name</td>
<td>Not supported</td>
<td>Supported</td>
</tr>
<tr>
<td>Return final playback position</td>
<td>Not supported</td>
<td>Supported</td>
</tr>
<tr>
<td>Distinguish completion from early exit</td>
<td>Not supported</td>
<td>Supported</td>
</tr>
<tr>
<td>Standard success, error, and cancel callbacks</td>
<td>Incomplete</td>
<td>Supported</td>
</tr>
<tr>
<td>Android Mobile / TV</td>
<td>Not supported</td>
<td>Supported</td>
</tr>
</tbody>
</table>
<h2 id="legacy-method-open">Legacy Method: <code>/open</code></h2>
<pre><code class="language-text">open-vidhub://x-callback-url/open
</code></pre>
<p><code>/open</code> is retained for existing Apple-platform integrations and does not support Android.</p>
<h3 id="parameters">Parameters</h3>
<table>
<thead>
<tr>
<th>Parameter</th>
<th>Required</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>url</code></td>
<td>Yes</td>
<td>Video URL</td>
</tr>
<tr>
<td><code>sub</code></td>
<td>No</td>
<td>External subtitle URL</td>
</tr>
<tr>
<td><code>on-success</code></td>
<td>No</td>
<td>URL called when VidHub opens the playback page successfully</td>
</tr>
<tr>
<td><code>on-failed</code></td>
<td>No</td>
<td>URL called when VidHub cannot open playback</td>
</tr>
</tbody>
</table>
<h3 id="basic-example">Basic Example</h3>
<pre><code class="language-text">open-vidhub://x-callback-url/open?url=http%3A%2F%2Flocalhost%3A8080%2Fsample.mp4&amp;on-success=some-app%3A%2F%2Fx-callback-url%2Fsuccess&amp;on-failed=some-app%3A%2F%2Fx-callback-url%2Ffailed
</code></pre>
<h3 id="example-with-subtitles">Example with Subtitles</h3>
<pre><code class="language-text">open-vidhub://x-callback-url/open?url=http%3A%2F%2Flocalhost%3A8080%2Fsample.mp4&amp;sub=http%3A%2F%2Flocalhost%3A8080%2Fsample.srt&amp;on-success=some-app%3A%2F%2Fx-callback-url%2Fsuccess&amp;on-failed=some-app%3A%2F%2Fx-callback-url%2Ffailed
</code></pre>
<blockquote>
<p><code>/open</code> does not return the current position when the user exits and cannot distinguish completed playback from an early exit.</p>
</blockquote>
<h2 id="new-method-play">New Method: <code>/play</code></h2>
<pre><code class="language-text">open-vidhub://x-callback-url/play
</code></pre>
<p><code>/play</code> uses the same address, parameters, and callback fields on iPhone, iPad, Apple TV, Mac, Android Mobile, and Android TV. It is designed for using VidHub as an external player. A calling app can provide its saved position, then receive the latest progress when playback exits. One call supports one video URL.</p>
<h3 id="request-parameters">Request Parameters</h3>
<table>
<thead>
<tr>
<th>Parameter</th>
<th>Required</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>url</code></td>
<td>Yes</td>
<td>Video URL to play</td>
</tr>
<tr>
<td><code>position</code></td>
<td>No</td>
<td>Starting position in seconds; must be a valid number from 0 through 31536000</td>
</tr>
<tr>
<td><code>filename</code></td>
<td>No</td>
<td>File name or title shown in the player</td>
</tr>
<tr>
<td><code>sub</code></td>
<td>No</td>
<td>External subtitle URL</td>
</tr>
<tr>
<td><code>x-success</code></td>
<td>No</td>
<td>Callback after playback completes or the user exits playback</td>
</tr>
<tr>
<td><code>x-error</code></td>
<td>No</td>
<td>Callback for invalid parameters, a busy player, or playback failure</td>
</tr>
<tr>
<td><code>x-cancel</code></td>
<td>No</td>
<td>Callback when the user cancels before playback formally begins</td>
</tr>
<tr>
<td><code>x-source</code></td>
<td>No</td>
<td>Calling app name; identifies the request source and does not affect playback</td>
</tr>
<tr>
<td><code>request-id</code></td>
<td>No</td>
<td>Caller-generated identifier returned unchanged in callbacks</td>
</tr>
</tbody>
</table>
<p><code>url</code>, <code>sub</code>, and every callback must be a complete URL with a scheme. A callback may not use the <code>open-vidhub</code> scheme.</p>
<h2 id="apple-swift-example">Apple Swift Example</h2>
<p>Use <code>URLComponents</code> and <code>URLQueryItem</code> to avoid manual encoding errors:</p>
<pre><code class="language-swift">func playWithVidHub(
    mediaURL: URL,
    subtitleURL: URL? = nil,
    position: Double = 0,
    filename: String? = nil,
    requestID: String = UUID().uuidString
) {
    var components = URLComponents()
    components.scheme = &quot;open-vidhub&quot;
    components.host = &quot;x-callback-url&quot;
    components.path = &quot;/play&quot;

    var queryItems = [
        URLQueryItem(name: &quot;url&quot;, value: mediaURL.absoluteString),
        URLQueryItem(name: &quot;position&quot;, value: String(max(0, position))),
        URLQueryItem(name: &quot;request-id&quot;, value: requestID),
        URLQueryItem(name: &quot;x-source&quot;, value: &quot;My App&quot;),
        URLQueryItem(name: &quot;x-success&quot;, value: &quot;myapp://x-callback-url/success&quot;),
        URLQueryItem(name: &quot;x-error&quot;, value: &quot;myapp://x-callback-url/error&quot;),
        URLQueryItem(name: &quot;x-cancel&quot;, value: &quot;myapp://x-callback-url/cancel&quot;)
    ]

    if let filename, !filename.isEmpty {
        queryItems.append(URLQueryItem(name: &quot;filename&quot;, value: filename))
    }
    if let subtitleURL {
        queryItems.append(URLQueryItem(name: &quot;sub&quot;, value: subtitleURL.absoluteString))
    }
    components.queryItems = queryItems
    guard let vidHubURL = components.url else { return }

    #if os(macOS)
    NSWorkspace.shared.open(vidHubURL)
    #else
    UIApplication.shared.open(vidHubURL, options: [:], completionHandler: nil)
    #endif
}
</code></pre>
<h2 id="android-mobile-tv-kotlin-example">Android Mobile / TV Kotlin Example</h2>
<p>Android Mobile and Android TV use the same <code>ACTION_VIEW</code> intent:</p>
<pre><code class="language-kotlin">import android.app.Activity
import android.content.ActivityNotFoundException
import android.content.Context
import android.content.Intent
import android.net.Uri
import java.util.UUID

fun playWithVidHub(
    context: Context,
    mediaUrl: Uri,
    subtitleUrl: Uri? = null,
    position: Double = 0.0,
    filename: String? = null,
    requestId: String = UUID.randomUUID().toString(),
) {
    val callbackBase = &quot;myapp://x-callback-url&quot;
    val vidHubUri = Uri.Builder()
        .scheme(&quot;open-vidhub&quot;)
        .authority(&quot;x-callback-url&quot;)
        .appendPath(&quot;play&quot;)
        .appendQueryParameter(&quot;url&quot;, mediaUrl.toString())
        .appendQueryParameter(&quot;position&quot;, position.coerceAtLeast(0.0).toString())
        .appendQueryParameter(&quot;request-id&quot;, requestId)
        .appendQueryParameter(&quot;x-source&quot;, &quot;My App&quot;)
        .appendQueryParameter(&quot;x-success&quot;, &quot;$callbackBase/success&quot;)
        .appendQueryParameter(&quot;x-error&quot;, &quot;$callbackBase/error&quot;)
        .appendQueryParameter(&quot;x-cancel&quot;, &quot;$callbackBase/cancel&quot;)
        .apply {
            filename?.takeIf { it.isNotBlank() }?.let {
                appendQueryParameter(&quot;filename&quot;, it)
            }
            subtitleUrl?.let { appendQueryParameter(&quot;sub&quot;, it.toString()) }
        }
        .build()

    val intent = Intent(Intent.ACTION_VIEW, vidHubUri).apply {
        if (context !is Activity) addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
    }
    try {
        context.startActivity(intent)
    } catch (_: ActivityNotFoundException) {
        // VidHub is not installed, or this version does not support the request.
    }
}
</code></pre>
<p>Example call:</p>
<pre><code class="language-text">open-vidhub://x-callback-url/play?url=https%3A%2F%2Fexample.com%2Fvideos%2Fmovie.m3u8&amp;sub=https%3A%2F%2Fexample.com%2Fsubtitles%2Fmovie-en.srt&amp;position=120&amp;filename=Example%20Movie.mp4&amp;request-id=movie-123&amp;x-source=My%20App&amp;x-success=myapp%3A%2F%2Fx-callback-url%2Fsuccess&amp;x-error=myapp%3A%2F%2Fx-callback-url%2Ferror&amp;x-cancel=myapp%3A%2F%2Fx-callback-url%2Fcancel
</code></pre>
<p>Use <code>URLComponents</code>, <code>URLQueryItem</code>, or Android <code>Uri.Builder</code> for percent encoding instead of assembling the complete URL manually.</p>
<h2 id="callback-rules">Callback Rules</h2>
<p>Each <code>/play</code> request triggers at most one terminal callback:</p>
<ul>
<li>Playback completes or the user exits the player: <code>x-success</code>.</li>
<li>The request or playback fails: <code>x-error</code>.</li>
<li>The user cancels before playback formally begins: <code>x-cancel</code>.</li>
</ul>
<p>If a callback URL for that outcome is omitted, VidHub ends the flow without calling a different callback type.</p>
<h3 id="x-success"><code>x-success</code></h3>
<table>
<thead>
<tr>
<th>Parameter</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>lastPlayedUrl</code></td>
<td>URL that was actually played</td>
</tr>
<tr>
<td><code>position</code></td>
<td>Playback position on exit, in whole seconds rounded down</td>
</tr>
<tr>
<td><code>duration</code></td>
<td>Total duration in seconds; may be omitted if unavailable</td>
</tr>
<tr>
<td><code>status</code></td>
<td><code>finished</code> or <code>stopped</code></td>
</tr>
<tr>
<td><code>request-id</code></td>
<td>Original request identifier, when supplied</td>
</tr>
</tbody>
</table>
<p>Completed playback:</p>
<pre><code class="language-text">myapp://x-callback-url/success?lastPlayedUrl=https%3A%2F%2Fexample.com%2Fvideo.m3u8&amp;position=599&amp;duration=600&amp;status=finished&amp;request-id=movie-123
</code></pre>
<p>Early exit:</p>
<pre><code class="language-text">myapp://x-callback-url/success?lastPlayedUrl=https%3A%2F%2Fexample.com%2Fvideo.m3u8&amp;position=38&amp;duration=600&amp;status=stopped&amp;request-id=movie-123
</code></pre>
<ul>
<li><code>finished</code>: mark the content played and clear or retain the resume position according to your app&apos;s rules.</li>
<li><code>stopped</code>: save <code>position</code> and pass it back in the next <code>/play</code> request.</li>
</ul>
<h3 id="x-error"><code>x-error</code></h3>
<table>
<thead>
<tr>
<th>Parameter</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>errorCode</code></td>
<td>Error code</td>
</tr>
<tr>
<td><code>errorMessage</code></td>
<td>Error description</td>
</tr>
<tr>
<td><code>failedUrl</code></td>
<td>Failed video URL, when available</td>
</tr>
<tr>
<td><code>request-id</code></td>
<td>Original request identifier, when supplied</td>
</tr>
</tbody>
</table>
<pre><code class="language-text">myapp://x-callback-url/error?errorCode=200&amp;errorMessage=Playback%20failed&amp;failedUrl=https%3A%2F%2Fexample.com%2Fvideo.m3u8&amp;request-id=movie-123
</code></pre>
<table>
<thead>
<tr>
<th>Code</th>
<th>Meaning</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>100</code></td>
<td>Missing <code>url</code> parameter</td>
</tr>
<tr>
<td><code>101</code></td>
<td>Invalid video URL</td>
</tr>
<tr>
<td><code>102</code></td>
<td>Invalid <code>position</code></td>
</tr>
<tr>
<td><code>103</code></td>
<td>Unsupported video URL scheme</td>
</tr>
<tr>
<td><code>104</code></td>
<td>Invalid callback URL</td>
</tr>
<tr>
<td><code>200</code></td>
<td>Playback failed</td>
</tr>
<tr>
<td><code>201</code></td>
<td>Player is busy and cannot accept another external request</td>
</tr>
<tr>
<td><code>202</code></td>
<td>Player cannot be presented</td>
</tr>
</tbody>
</table>
<h3 id="x-cancel"><code>x-cancel</code></h3>
<p><code>x-cancel</code> applies only before playback formally starts and does not include progress. It returns <code>request-id</code> only when one was supplied:</p>
<pre><code class="language-text">myapp://x-callback-url/cancel?request-id=movie-123
</code></pre>
<p>Exiting after entering the player is not a cancellation; it calls <code>x-success</code> with <code>status=stopped</code>.</p>
<h2 id="receiving-callbacks">Receiving Callbacks</h2>
<p>The calling app must register its own URL scheme. These examples use <code>myapp://</code>; replace it with your app&apos;s actual scheme.</p>
<h3 id="apple-platforms">Apple Platforms</h3>
<p>UIKit with scenes:</p>
<pre><code class="language-swift">func scene(_ scene: UIScene, openURLContexts URLContexts: Set&lt;UIOpenURLContext&gt;) {
    guard let url = URLContexts.first?.url else { return }
    handleVidHubCallback(url)
}
</code></pre>
<p>SwiftUI:</p>
<pre><code class="language-swift">.onOpenURL { url in
    handleVidHubCallback(url)
}
</code></pre>
<h3 id="android-mobile-tv">Android Mobile / TV</h3>
<p>Register an intent filter for the callback activity:</p>
<pre><code class="language-xml">&lt;activity android:name=&quot;.VidHubCallbackActivity&quot; android:exported=&quot;true&quot;&gt;
    &lt;intent-filter&gt;
        &lt;action android:name=&quot;android.intent.action.VIEW&quot; /&gt;
        &lt;category android:name=&quot;android.intent.category.DEFAULT&quot; /&gt;
        &lt;category android:name=&quot;android.intent.category.BROWSABLE&quot; /&gt;
        &lt;data android:scheme=&quot;myapp&quot; android:host=&quot;x-callback-url&quot; /&gt;
    &lt;/intent-filter&gt;
&lt;/activity&gt;
</code></pre>
<p>Read the callback path and parameters from <code>intent.data</code>:</p>
<pre><code class="language-kotlin">val callbackUri = intent?.data ?: return
when (callbackUri.path) {
    &quot;/success&quot; -&gt; {
        val position = callbackUri.getQueryParameter(&quot;position&quot;)?.toDoubleOrNull()
        val duration = callbackUri.getQueryParameter(&quot;duration&quot;)?.toDoubleOrNull()
        val status = callbackUri.getQueryParameter(&quot;status&quot;)
        val requestId = callbackUri.getQueryParameter(&quot;request-id&quot;)
    }
    &quot;/error&quot; -&gt; {
        val errorCode = callbackUri.getQueryParameter(&quot;errorCode&quot;)
        val errorMessage = callbackUri.getQueryParameter(&quot;errorMessage&quot;)
    }
    &quot;/cancel&quot; -&gt; {
        val requestId = callbackUri.getQueryParameter(&quot;request-id&quot;)
    }
}
</code></pre>
<p>Android TV usually has no web browser, so use a callback scheme registered by the calling app rather than relying on an HTTPS web callback.</p>
<h2 id="url-encoding">URL Encoding</h2>
<p>Pass raw values to the platform URL builder and let it percent-encode them. Do not encode a value manually before handing it to <code>URLQueryItem</code> or <code>Uri.Builder</code>, or it may be encoded twice. Legacy <code>/open</code> retains its existing encoding behavior for compatibility.</p>
<h2 id="migrating-from-open-to-play">Migrating from <code>/open</code> to <code>/play</code></h2>
<ol>
<li>Change the path from <code>/open</code> to <code>/play</code>.</li>
<li>Rename <code>on-success</code> to <code>x-success</code>.</li>
<li>Rename <code>on-failed</code> to <code>x-error</code>.</li>
<li>Add <code>x-cancel</code> and <code>request-id</code> if needed.</li>
<li>Pass the locally saved playback position as <code>position</code>.</li>
<li>Read <code>position</code>, <code>duration</code>, and <code>status</code> from the callback.</li>
<li>Use the system URL builder for encoding.</li>
</ol>
<p>Android Mobile and Android TV should use <code>/play</code> directly.</p>
<h2 id="notes">Notes</h2>
<ul>
<li>Each request supports one video URL.</li>
<li><code>/play</code> uses the same fields on iPhone, iPad, Apple TV, Mac, Android Mobile, and Android TV.</li>
<li>The VidHub device must be able to access the video and subtitle URLs.</li>
<li>A media URL may use any network or local scheme supported by VidHub, but not <code>open-vidhub</code>.</li>
<li>Callback URLs must use a scheme registered by the third-party app, not <code>open-vidhub</code>.</li>
<li>If no app handles the callback scheme, VidHub does not retry indefinitely.</li>
<li>A callback cannot be guaranteed if the app is force-quit, the system shuts down, or the process crashes.</li>
<li>These callbacks synchronize playback progress for this request and do not depend on Trakt login or Trakt Scrobbling.</li>
</ul>]]></content:encoded></item><item><title><![CDATA[How to Restore Your In-App Purchase]]></title><description><![CDATA[<p>Most apps provide a <strong>Restore Purchases</strong> button on the main screen, in the main menu, or under Settings. Tap it while signed in with the same Apple Account used for the original purchase.</p>
<p>VidHub VIP works across Apple&apos;s platforms, including iPhone, iPad, Mac, and Apple TV. You can</p>]]></description><link>https://vidhub.okaapps.com/how-to-restore-your-in-app-purchase/</link><guid isPermaLink="false">665003dc0d3b5200010a25ca</guid><category><![CDATA[Others]]></category><dc:creator><![CDATA[Little Sui]]></dc:creator><pubDate>Fri, 24 May 2024 03:05:30 GMT</pubDate><content:encoded><![CDATA[<p>Most apps provide a <strong>Restore Purchases</strong> button on the main screen, in the main menu, or under Settings. Tap it while signed in with the same Apple Account used for the original purchase.</p>
<p>VidHub VIP works across Apple&apos;s platforms, including iPhone, iPad, Mac, and Apple TV. You can restore the same VIP entitlement on each platform.</p>
<p>If the device has multiple accounts, sign out of the other accounts, restart the device, and try Restore Purchases again.</p>
<h3 id="can-a-mainland-china-apple-account-restore-a-purchase-on-apple-tv">Can a Mainland China Apple Account Restore a Purchase on Apple TV?</h3>
<p>Yes. Because Apple TV does not provide a Mainland China App Store, use an account from another region to download VidHub first. Then switch the account in Settings to the Mainland China account that purchased VidHub. The App Store may disappear after the switch; this is expected. Open VidHub and choose Restore Purchases.</p>
<h3 id="restore-on-ipad-iphone-or-mac">Restore on iPad, iPhone, or Mac</h3>
<ul>
<li>If VidHub was purchased from the Mainland China store, download it from that store and choose Restore Purchases.</li>
<li>If it was purchased from another region&apos;s store, download it from that region and choose Restore Purchases.</li>
</ul>
<p>If restoration still fails, uninstall and reinstall VidHub, then try again using the Apple Account that made the purchase. You may also contact support with your purchase details. Apple&apos;s billing system normally prevents the same Apple Account from being charged twice for the same active subscription entitlement.</p>]]></content:encoded></item><item><title><![CDATA[Fix Blurry Dark Scenes on Apple TV]]></title><description><![CDATA[<p>Some users may see blurring in dark areas while playing video on Apple TV.</p>
<p>Open your television&apos;s picture settings, find <strong>Motion Compensation</strong>, <strong>Motion Smoothing</strong>, or the equivalent setting, and turn it off. If the problem continues, please contact the administrator.</p>]]></description><link>https://vidhub.okaapps.com/fix-blurry-dark-scenes-on-apple-tv/</link><guid isPermaLink="false">664fecfd0d3b5200010a25bc</guid><category><![CDATA[Others]]></category><dc:creator><![CDATA[Little Sui]]></dc:creator><pubDate>Fri, 24 May 2024 03:03:44 GMT</pubDate><content:encoded><![CDATA[<p>Some users may see blurring in dark areas while playing video on Apple TV.</p>
<p>Open your television&apos;s picture settings, find <strong>Motion Compensation</strong>, <strong>Motion Smoothing</strong>, or the equivalent setting, and turn it off. If the problem continues, please contact the administrator.</p>]]></content:encoded></item><item><title><![CDATA[How to Request a Refund for an Apple App Purchase]]></title><description><![CDATA[<p>You can request a refund for eligible purchases from the App Store, iTunes Store, Apple Books, or other Apple services.</p>
<blockquote>
<p>Refund eligibility and the available steps are determined by Apple and may vary by country or region. For the latest process, always refer to <a href="https://support.apple.com/118223?ref=vidhub.okaapps.com">Apple&apos;s official refund instructions</a></p></blockquote>]]></description><link>https://vidhub.okaapps.com/how-to-request-an-apple-app-refund/</link><guid isPermaLink="false">6639890f0d3b5200010a2569</guid><category><![CDATA[Others]]></category><dc:creator><![CDATA[Little Sui]]></dc:creator><pubDate>Tue, 07 May 2024 02:07:42 GMT</pubDate><content:encoded><![CDATA[<p>You can request a refund for eligible purchases from the App Store, iTunes Store, Apple Books, or other Apple services.</p>
<blockquote>
<p>Refund eligibility and the available steps are determined by Apple and may vary by country or region. For the latest process, always refer to <a href="https://support.apple.com/118223?ref=vidhub.okaapps.com">Apple&apos;s official refund instructions</a>.</p>
</blockquote>
<h3 id="the-simplest-web-method">The Simplest Web Method</h3>
<ol>
<li>Open <a href="https://reportaproblem.apple.com/?ref=vidhub.okaapps.com">reportaproblem.apple.com</a>.</li>
<li>Sign in with the same Apple Account that made the purchase.</li>
<li>Choose <strong>I&apos;d like to</strong>, then select <strong>Request a refund</strong>.</li>
<li>Select a reason, click Next, choose the app, subscription, or other item, and submit the request.</li>
</ol>
<p>Your purchase history can include free apps, paid apps, in-app purchases, and subscriptions such as music, movies, and books. Explain the reason accurately. Common legitimate reasons include an accidental purchase, an app not providing an expected function, or an unrecognized charge.</p>
<p><img alt="Report a Problem" src="https://vidhub.okaapps.com/content/images/2024/05/report_a_problem_--.jpg"></p>
<p>Apple reviews each request. A request may be denied, particularly if there have been repeated refund requests or several orders are submitted at once. If you do not recognize a purchase, treat it as an account-security issue and contact Apple Support.</p>
<h3 id="request-a-refund-on-iphone-or-ipad">Request a Refund on iPhone or iPad</h3>
<p>Apple emails a receipt for each purchase. The receipt may include a <strong>Report a Problem</strong> link that opens the same web refund process.</p>
<p>You can also find purchases and subscriptions on the device:</p>
<ol>
<li>Open Settings.</li>
<li>Tap your name, then <strong>Media &amp; Purchases</strong>.</li>
<li>Tap <strong>View Account</strong> and open Purchase History or Subscriptions.</li>
<li>Select the relevant purchase and follow the Report a Problem process.</li>
</ol>
<p><img alt="Find account" src="https://vidhub.okaapps.com/content/images/2024/05/find_account_--.jpg">
<img alt="View account" src="https://vidhub.okaapps.com/content/images/2024/05/view_account_--.jpg"></p>
<h3 id="request-a-refund-on-mac">Request a Refund on Mac</h3>
<p>Open the Mac App Store, click your account, and choose <strong>Account Settings</strong> or <strong>View Information</strong>. From there, review your purchase history and subscriptions, then use Report a Problem for the relevant purchase.</p>
<p><img alt="mac_account_manage.webp" src="https://vidhub.okaapps.com/content/images/2024/05/mac_account_manage.webp"></p>
<p>Wait until the charge has completed before requesting a refund, and avoid submitting the same request repeatedly. Apple normally sends a decision after reviewing the request. Current status and instructions are available from <a href="https://support.apple.com/118223?ref=vidhub.okaapps.com">Apple Support</a>.</p>]]></content:encoded></item><item><title><![CDATA[Synchronize]]></title><description><![CDATA[<h2 id="icloud-sync">iCloud Sync</h2>
<p>iCloud can synchronize file sources, the Media Library, watch history, playlists, favorites, media servers, and other information across multiple devices.</p>
<ul>
<li>Sign in with the same iCloud account on every device.</li>
<li>Enable iCloud Drive on every device.</li>
<li>In VidHub, open Settings &gt; Sync &gt; iCloud Sync.</li>
<li>Make sure your</li></ul>]]></description><link>https://vidhub.okaapps.com/synchronize/</link><guid isPermaLink="false">6628c0a20d3b5200010a24f8</guid><category><![CDATA[Others]]></category><dc:creator><![CDATA[Little Sui]]></dc:creator><pubDate>Wed, 24 Apr 2024 08:20:11 GMT</pubDate><content:encoded><![CDATA[<h2 id="icloud-sync">iCloud Sync</h2>
<p>iCloud can synchronize file sources, the Media Library, watch history, playlists, favorites, media servers, and other information across multiple devices.</p>
<ul>
<li>Sign in with the same iCloud account on every device.</li>
<li>Enable iCloud Drive on every device.</li>
<li>In VidHub, open Settings &gt; Sync &gt; iCloud Sync.</li>
<li>Make sure your iCloud account has enough available storage.</li>
<li>Run the latest system and iCloud version on every device.</li>
<li>If iCloud storage is full or insufficient, imported files may be missing or videos may fail to play correctly.</li>
</ul>]]></content:encoded></item><item><title><![CDATA[Settings Overview]]></title><description><![CDATA[<h2 id="general">General</h2>
<ul>
<li><strong>Hide Spoilers:</strong> When enabled, episode descriptions are hidden on series detail pages. Disable it to show descriptions.</li>
<li><strong>Media Sort Order:</strong> Sets the default order used when browsing media.</li>
<li><strong>File Sort Order:</strong> Sets the default order used when browsing files.</li>
<li><strong>Appearance:</strong> Choose a dark or light interface, or follow the</li></ul>]]></description><link>https://vidhub.okaapps.com/settings-overview/</link><guid isPermaLink="false">6628c0270d3b5200010a24e9</guid><category><![CDATA[Others]]></category><dc:creator><![CDATA[Little Sui]]></dc:creator><pubDate>Wed, 24 Apr 2024 08:19:19 GMT</pubDate><content:encoded><![CDATA[<h2 id="general">General</h2>
<ul>
<li><strong>Hide Spoilers:</strong> When enabled, episode descriptions are hidden on series detail pages. Disable it to show descriptions.</li>
<li><strong>Media Sort Order:</strong> Sets the default order used when browsing media.</li>
<li><strong>File Sort Order:</strong> Sets the default order used when browsing files.</li>
<li><strong>Appearance:</strong> Choose a dark or light interface, or follow the system setting automatically.</li>
<li><strong>Online Metadata Language:</strong> Choose the language for online movie and TV metadata, or follow the system language automatically.</li>
<li><strong>Allow Cellular Data:</strong> Allow or prevent downloads over cellular data.</li>
<li><strong>Concurrent Downloads:</strong> Set how many videos may download at the same time.</li>
<li><strong>Show Floating Window:</strong> Show or hide the small download-status window.</li>
<li><strong>Pause During Playback:</strong> Pause downloads automatically while a video is playing.</li>
</ul>
<h2 id="resources">Resources</h2>
<ul>
<li><strong>Media Library:</strong> Shows the number of titles of each type currently in your library.</li>
<li><strong>Rescan Files:</strong> Rescans all video files in every file source and synchronizes changes with the Media Library.</li>
<li><strong>Refresh Online Metadata:</strong> Retrieves movie and TV information from TMDB again. Run this after changing the Online Metadata Language to download data in the new language.</li>
<li><strong>File Sources:</strong> Select a source to enable it; clear the checkmark to disable it.</li>
</ul>
<h2 id="downloads">Downloads</h2>
<p>View and delete videos downloaded to local storage.</p>
<h2 id="sync">Sync</h2>
<p><strong>iCloud Sync:</strong> Allow Media Library details to be synchronized through iCloud.</p>
<h2 id="playback">Playback</h2>
<ul>
<li><strong>Forward/Back Interval:</strong> Set how many seconds each seek-forward or seek-back action moves.</li>
<li><strong>When Opening Alibaba/Baidu Cloud Videos:</strong> Choose original quality or the highest-resolution video stream.</li>
<li><strong>Continuous Playback:</strong> Automatically play the next episode when enabled.</li>
<li><strong>Background Playback:</strong> Continue playing when the app moves to the background.</li>
<li><strong>Always Remember Playback Speed:</strong> Reuse the speed selected before you last exited playback.</li>
<li><strong>Hardware Acceleration:</strong> Use hardware acceleration to improve performance.</li>
<li><strong>Cache to Disk:</strong> Enable or disable disk caching.</li>
</ul>
<h2 id="player-interface">Player Interface</h2>
<ul>
<li>Automatically hide the playback controls after the selected interval.</li>
<li>Show total duration or remaining time to the right of the progress bar.</li>
<li>Choose the speed used for long-press accelerated playback.</li>
<li>Enable or disable double-tap seek forward/back.</li>
<li>Show or hide screenshot and screen-recording buttons.</li>
<li>Enable or disable landscape display by default.</li>
<li>Enable or disable the playback-control background shadow.</li>
</ul>
<h2 id="subtitles">Subtitles</h2>
<ul>
<li>Choose the rule used to load external subtitle files automatically.</li>
<li>Enable or disable automatic loading of embedded subtitles.</li>
<li>Choose the preferred embedded-subtitle language, when that language is available.</li>
<li>Choose the language used for online subtitle searches.</li>
</ul>
<h2 id="screenshots-and-recording">Screenshots and Recording</h2>
<ul>
<li>Choose the screenshot image format.</li>
<li>Choose the GIF frame rate.</li>
<li>Choose the GIF resolution.</li>
</ul>]]></content:encoded></item><item><title><![CDATA[Video playback interface]]></title><description><![CDATA[<h6 id="next-we-will-explain-the-playback-interface">Next, we will explain the playback interface</h6>
<p>Video playback operation interface: left
1.Screen Lock: The button with a lock icon on the left side is used to lock the screen. When the button is white and open, you can interact with the current interface. When it is closed and</p>]]></description><link>https://vidhub.okaapps.com/video-playback-interface/</link><guid isPermaLink="false">6628bef30d3b5200010a24cc</guid><category><![CDATA[Others]]></category><dc:creator><![CDATA[Little Sui]]></dc:creator><pubDate>Wed, 24 Apr 2024 08:16:58 GMT</pubDate><content:encoded><![CDATA[<h6 id="next-we-will-explain-the-playback-interface">Next, we will explain the playback interface</h6>
<p>Video playback operation interface: left
1.Screen Lock: The button with a lock icon on the left side is used to lock the screen. When the button is white and open, you can interact with the current interface. When it is closed and green, no &quot;operations&quot; can be performed on the current interface, and you can only click the lock button again to unlock it.
Note: When the screen is locked, all other icons will be hidden. Clicking again will show them.
2.Video Rotation: The green state represents the current landscape mode. If clicked and turned white, it becomes portrait mode.
3.Episode Selection: The icon with three horizontal bars at the bottom left will show all movie files in the same folder when clicked. If there is only one movie file in the folder, this button will not be displayed.
4.Resolution: The Original button at the bottom is used to set the resolution. Clicking on it will expand the available resolution options.
Note: If the video is imported from WebDAV/Alist, the resolution will not be displayed. If there is only one file in the folder and it is imported from WebDAV/Alist, neither the episode selection nor the resolution will be displayed.
<img alt="IMG_0134.PNG" src="https://vidhub.okaapps.com/content/images/2024/04/IMG_0134.PNG">
1.Snapshot: The icon in the middle on the right side, represented by a camera-style image, is used for taking snapshots. Clicking on it captures the current frame of the video. (This function can be used during both playback and pause.)
2.GIF: Clicking on the GIF icon starts recording a GIF image. Clicking again generates the GIF and saves it to the photo album. To close the GIF recording window, simply click anywhere blank on the screen. (If the video is paused while using the GIF function, it will automatically resume playing.)
3.Fit to Screen: Clicking on this option adjusts the video to fit the screen size.</p>]]></content:encoded></item><item><title><![CDATA[Edit video information in the media library (Correction)]]></title><description><![CDATA[<h2 id="use-case">Use Case</h2>
<p>When a video is incorrectly scraped or classified as &quot;Other,&quot; use this feature to change the corresponding file to the correct movie/TV show.</p>
<h2 id="accessing-the-feature">Accessing the Feature</h2>
<p>For individual movies and videos in the &quot;Other&quot; category:
Long press on (right-click on macOS) the video</p>]]></description><link>https://vidhub.okaapps.com/edit-video-information-in-the-media-library-correction/</link><guid isPermaLink="false">6628bd040d3b5200010a24ac</guid><category><![CDATA[Media Center]]></category><dc:creator><![CDATA[Little Sui]]></dc:creator><pubDate>Wed, 24 Apr 2024 08:08:59 GMT</pubDate><content:encoded><![CDATA[<h2 id="use-case">Use Case</h2>
<p>When a video is incorrectly scraped or classified as &quot;Other,&quot; use this feature to change the corresponding file to the correct movie/TV show.</p>
<h2 id="accessing-the-feature">Accessing the Feature</h2>
<p>For individual movies and videos in the &quot;Other&quot; category:
Long press on (right-click on macOS) the video poster in the media library, then select the &quot;Edit Information&quot; option. Alternatively, go to the movie details page and click on the three dots in the top right corner, then click on &quot;Edit Information.&quot;
<img alt="IMG_0129-2.png" src="https://vidhub.okaapps.com/content/images/2024/04/IMG_0129-2.png">
Movie Collection/TV Series
Go to the movie details page, select a single episode, click on the three dots in the top right corner, and then click on &quot;Edit Information.&quot;
<img alt="IMG_0130-2.png" src="https://vidhub.okaapps.com/content/images/2024/04/IMG_0130-2.png"></p>
<h2 id="function-usage-introduction">Function Usage Introduction</h2>
<p>1.Input Box: The input box in the edit information interface allows you to search for a movie name. Select the corresponding movie from the search results, and the information of the movie being edited will be replaced with the selected movie.
2.Change to Movie: For movies in other categories, after finding the correct movie information through search, apply it to move the movie to the movie category.
3.Change to TV Show: For movies in other categories, after finding the correct TV show information through search, apply it to move the movie to the TV show category.
4.Use Original File Data: For movies in the movie/TV show category, selecting to use the original file data will move the movie to the other category.
<img alt="IMG_0133.png" src="https://vidhub.okaapps.com/content/images/2024/04/IMG_0133.png">
<img alt="IMG_0131.png" src="https://vidhub.okaapps.com/content/images/2024/04/IMG_0131.png">
3.1. TV Series: If you want to edit a TV series, first go to the movie details page, select any episode from a specific season, click on the three dots in the top right corner, and then click on &quot;Edit Information.&quot; After searching and selecting the TV series you want to modify, make the necessary changes. Wait for a moment, and the information of all other episodes in the same season will be automatically updated.
<img alt="IMG_0130-2.png" src="https://vidhub.okaapps.com/content/images/2024/04/IMG_0130-2-1.png"></p>]]></content:encoded></item><item><title><![CDATA[Modifying File Names - Single File/Batch Rename]]></title><description><![CDATA[<h2 id="single-file">Single File</h2>
<p>After entering the file source, long-press the individual folder/file and click on &quot;Rename&quot;. A rename popup will appear. Enter the new name and click &quot;Save&quot;. The folder/file will then be renamed with the new name.</p>
<h2 id="batch-rename">Batch Rename</h2>
<p>After entering the file source,</p>]]></description><link>https://vidhub.okaapps.com/modifying-file-names-single-file-batch-rename/</link><guid isPermaLink="false">6628b8b70d3b5200010a248d</guid><category><![CDATA[File Source]]></category><dc:creator><![CDATA[Little Sui]]></dc:creator><pubDate>Wed, 24 Apr 2024 08:02:57 GMT</pubDate><content:encoded><![CDATA[<h2 id="single-file">Single File</h2>
<p>After entering the file source, long-press the individual folder/file and click on &quot;Rename&quot;. A rename popup will appear. Enter the new name and click &quot;Save&quot;. The folder/file will then be renamed with the new name.</p>
<h2 id="batch-rename">Batch Rename</h2>
<p>After entering the file source, click on the three dots in the upper right corner of the file source, then click on &quot;Edit&quot;. Next, click on the three dots in the lower right corner to enable multiple selection of files/folders for renaming.
<img alt="IMG_0125-2.png" src="https://vidhub.okaapps.com/content/images/2024/04/IMG_0125-2.png">
Batch Renaming of Previously Selected Folders/Files</p>
<h5 id="add-text">Add Text:</h5>
<p>This refers to the renaming method where new text is added to the original file name.
If the input is placed before the name, the content will be displayed before the original name.
If the input is placed after the name, the content will be displayed after the original name.
For example: Adding &quot;123&quot; before the name will result in all file names being prefixed with &quot;123&quot;.
<img alt="IMG_0126-2.png" src="https://vidhub.okaapps.com/content/images/2024/04/IMG_0126-2.png"></p>
<h5 id="replace-text">Replace Text</h5>
<p>This refers to the renaming method where certain text in the original file name is replaced with new text.</p>
<p>Enter the text &quot;A&quot; to be replaced with in the &quot;Search&quot; input box, and enter the replacement text &quot;B&quot; in the &quot;Replace with&quot; input box. The text &quot;A&quot; in the file names will all be replaced with text &quot;B&quot;.</p>
<p>For example, if you input &quot;Doctor&quot; in the search box and &quot;123&quot; in the replace with box, after renaming, all occurrences of &quot;Doctor&quot; in the file names will be replaced with &quot;123&quot;.
<img alt="IMG_0127-2.png" src="https://vidhub.okaapps.com/content/images/2024/04/IMG_0127-2.png"></p>
<h5 id="formatting">Formatting</h5>
<p>Formatting refers to the renaming method where a numerical index is added uniformly to the original file names.
Custom Format: This allows for the reconfiguration of the file names.
Starting Index: The index number can represent the season or episode number of a TV show.
After/Before Name: The index number can be added after or before the custom format. After renaming, the file names will become &quot;{custom format}{index number}&quot; or &quot;{index number}{custom format}&quot;.
For example, if the custom format is set as &quot;Test&quot; and you choose to place the index number after the name, the file will be renamed as &quot;Test01&quot;. If placed before, it will be &quot;01Test&quot;.
Fixed Length: Specifies the number of digits for displaying the index number.
For example, for an index number of &quot;1&quot;, if the fixed length is set to 1, it will be displayed as &quot;1&quot;. If the fixed length is 2, it will be displayed as &quot;01&quot;. If the fixed length is 3, it will be displayed as &quot;001&quot;.
As shown in the example below, if the custom format is set as &quot;Fast and Furious S01E&quot; and the index is placed after the name, and the starting index is set as &quot;5&quot; with a length of 2 digits (&quot;5&quot; displayed as &quot;05&quot;), the selected files will be renamed as &quot;Fast and Furious S01E05&quot; and &quot;Fast and Furious S01E06&quot;.
<img alt="IMG_0128-2.png" src="https://vidhub.okaapps.com/content/images/2024/04/IMG_0128-2.png"></p>
<h5 id="regular-expressions">Regular expressions</h5>
<p>Advanced replacement functionality refers to the method of using regular expressions to replace certain text with new text
Enter the text you want to replace in the regular expression box, for example, &quot;\d{3}&quot;, which represents any three digits. In the replacement input box, enter the text B you want to replace with. Any three digits in the original file will be replaced with the text B
Note: Please search for how to use regular expressions.</p>]]></content:encoded></item><item><title><![CDATA[VidHub Video File Naming Conventions]]></title><description><![CDATA[<p><strong>Note: VidHub automatically finds video files in your file sources and uses their file names to scrape movie or TV information, posters, cast details, and more. The file name is the only factor used for automatic matching; folder names and folder structure do not affect it. Movie and TV metadata</strong></p>]]></description><link>https://vidhub.okaapps.com/vidhub-video-file-naming-conventions/</link><guid isPermaLink="false">6628b79f0d3b5200010a2475</guid><category><![CDATA[File Source]]></category><dc:creator><![CDATA[Little Sui]]></dc:creator><pubDate>Wed, 24 Apr 2024 07:45:18 GMT</pubDate><content:encoded><![CDATA[<p><strong>Note: VidHub automatically finds video files in your file sources and uses their file names to scrape movie or TV information, posters, cast details, and more. The file name is the only factor used for automatic matching; folder names and folder structure do not affect it. Movie and TV metadata comes from the well-known open-source website <a href="https://www.themoviedb.org/?ref=vidhub.okaapps.com">TMDB</a>.</strong></p>
<p><strong>If VidHub matches a movie or show incorrectly, change the file name or edit the media information manually:</strong></p>
<ol>
<li><a href="https://vidhub.okaapps.com/modifying-file-names-single-file-batch-rename/">Modify file names</a></li>
<li><a href="https://vidhub.okaapps.com/edit-video-information-in-the-media-library-correction/">Edit media information manually</a></li>
</ol>
<h6 id="correct-movie-naming">Correct Movie Naming</h6>
<p>Start the file name with the movie&apos;s full title. English and non-English titles are both supported. For example:</p>
<ol>
<li><strong>The Wandering Earth</strong>.1080p.x264.mp4</li>
<li><strong>Ghosted</strong>.1080p.x264.mp4</li>
<li><strong>Ghosted.2023</strong>.1080p.x264.mp4</li>
</ol>
<p>If multiple movies share the same title, include the release year in the file name:</p>
<ol>
<li>The.Wandering.Earth.<strong>2019</strong>.1080p.x264.mp4</li>
</ol>
<h6 id="correct-tv-series-naming-including-variety-shows-and-animation">Correct TV Series Naming (Including Variety Shows and Animation)</h6>
<p>Each episode must start with the series title, followed by season and episode information. English and non-English titles are both supported. <code>S01</code> means Season 1, <code>S02</code> means Season 2, <code>E01</code> means Episode 1, and <code>E02</code> means Episode 2. For example:</p>
<ol>
<li>
<p><strong>Nirvana.in.Fire.S01E01</strong>.1080p.AMZN.WEB.DL.mkv<br>
   Meaning: Nirvana in Fire, Season 1, Episode 1</p>
</li>
<li>
<p><strong>Shameless.S03E02</strong>.1080p.AMZN.WEB.DL.mkv<br>
   Meaning: Shameless, Season 3, Episode 2</p>
</li>
</ol>
<p>If multiple series share the same title, include the year of the series premiere:</p>
<ol start="3">
<li>Shameless.<strong>2011</strong>.S02E02.1080p.AMZN.WEB.DL.mkv</li>
</ol>
<h6 id="extras-and-specials">Extras and Specials</h6>
<p>For extras and special episodes, start with the series title, use Season <code>00</code>, and specify the episode number. For example:</p>
<ol>
<li>Nirvana.in.Fire.<strong>S00E01</strong>.SneakPeek.1080p.AMZN.mkv<br>
   Meaning: Nirvana in Fire, Special, Episode 1</li>
</ol>]]></content:encoded></item><item><title><![CDATA[Use File Sources]]></title><description><![CDATA[<p><strong>The File Sources page manages video files stored locally, on cloud drives, and on network shares. This guide explains how to manage file sources and their folders and files.</strong></p>
<p><strong>Every long-press action below applies to the mobile version. On desktop, use a right-click instead.</strong></p>
<h4 id="single-item-actions">Single-Item Actions</h4>
<h6 id="rescan-files-file-source-or-folder">Rescan Files (File Source</h6>]]></description><link>https://vidhub.okaapps.com/use-file-source/</link><guid isPermaLink="false">6628b4420d3b5200010a2455</guid><category><![CDATA[File Source]]></category><dc:creator><![CDATA[Little Sui]]></dc:creator><pubDate>Wed, 24 Apr 2024 07:37:29 GMT</pubDate><content:encoded><![CDATA[<p><strong>The File Sources page manages video files stored locally, on cloud drives, and on network shares. This guide explains how to manage file sources and their folders and files.</strong></p>
<p><strong>Every long-press action below applies to the mobile version. On desktop, use a right-click instead.</strong></p>
<h4 id="single-item-actions">Single-Item Actions</h4>
<h6 id="rescan-files-file-source-or-folder">Rescan Files (File Source or Folder)</h6>
<p>Long-press an <strong>added file source</strong>, or open a source and long-press a <strong>folder</strong>, to rescan all video files beneath it. New, deleted, or renamed files are automatically synchronized with the Media Library. You can also open Folder A, click the three-dot button in the upper-right corner, and choose <strong>Rescan Files</strong>.</p>
<h6 id="rename">Rename</h6>
<p>When you rename a file or folder from VidHub, the original item in its storage location is renamed as well. Media information is scraped again using the new file name. <a href="https://vidhub.okaapps.com/vidhub-video-file-naming-conventions/">View the video file naming conventions</a>.</p>
<h6 id="download-file">Download (File)</h6>
<p>Long-press a file and choose Download to save the video locally. Downloaded files are available under Settings &gt; Downloads.</p>
<h6 id="delete">Delete</h6>
<p>Deleting a file or folder in a VidHub file source permanently deletes the original item from its storage location. The corresponding title is also removed from the Media Library. <strong>Use this action carefully.</strong></p>
<h6 id="move-to-recycle-bin-alibaba-cloud-drive">Move to Recycle Bin (Alibaba Cloud Drive)</h6>
<p>Long-press a file or folder in an Alibaba Cloud Drive source and choose to move it to the recycle bin. You can view and restore the item from the recycle bin in Alibaba Cloud Drive.</p>
<h4 id="multi-item-actions">Multi-Item Actions</h4>
<ol>
<li>Open a file source and enter a folder containing your videos. Click the three-dot button in the upper-right corner and choose Edit. You can also choose <strong>Rescan Files (Current Directory)</strong> here.
<img alt="251f92ec2e2b10a82b0b8eead124957b_720.png" src="https://vidhub.okaapps.com/content/images/2024/04/251f92ec2e2b10a82b0b8eead124957b_720.png"></li>
<li>After you click Edit, the page enters editing mode.
<img alt="b00b137680543b453c104a114b5c354c_720.png" src="https://vidhub.okaapps.com/content/images/2024/04/b00b137680543b453c104a114b5c354c_720.png"></li>
<li>Select one or more files, then click the three-dot button in the lower-right corner to perform an action on the selection. Click Done in the upper-right corner when finished.
<img alt="36549457cd5573c192bb45715773c307_720.png" src="https://vidhub.okaapps.com/content/images/2024/04/36549457cd5573c192bb45715773c307_720.png"></li>
</ol>]]></content:encoded></item><item><title><![CDATA[Use the Media Library]]></title><description><![CDATA[<h3 id="continue-watching">Continue Watching</h3>
<ol>
<li>If you stop watching before a video ends, it appears in Continue Watching with its current progress. Click the white Play button to resume.</li>
<li>A completed movie moves to Watched.</li>
<li>For a TV series, the next episode appears in Continue Watching after the current episode finishes. If the</li></ol>]]></description><link>https://vidhub.okaapps.com/use-the-media-library/</link><guid isPermaLink="false">6628adf40d3b5200010a241e</guid><category><![CDATA[Media Center]]></category><dc:creator><![CDATA[Little Sui]]></dc:creator><pubDate>Wed, 24 Apr 2024 07:23:30 GMT</pubDate><content:encoded><![CDATA[<h3 id="continue-watching">Continue Watching</h3>
<ol>
<li>If you stop watching before a video ends, it appears in Continue Watching with its current progress. Click the white Play button to resume.</li>
<li>A completed movie moves to Watched.</li>
<li>For a TV series, the next episode appears in Continue Watching after the current episode finishes. If the series has multiple seasons, finishing one season shows the first episode of the next season. The series moves to Watched after all seasons are complete.
<img alt="IMG_0082-2.png" src="https://vidhub.okaapps.com/content/images/2024/04/IMG_0082-2.png"></li>
<li>Long-press a video in Continue Watching and choose <strong>Mark as Watched</strong>.
<img alt="9821e54451e3a8eda1790ab4576a10d2_720.png" src="https://vidhub.okaapps.com/content/images/2024/04/9821e54451e3a8eda1790ab4576a10d2_720.png"></li>
<li>Three options are available:
   - <strong>Current Episode:</strong> only the selected episode is added to Watched.
   - <strong>Entire Season:</strong> every episode in the selected season is added to Watched. For example, after Season 1 is marked, Season 2 remains in Continue Watching.
   - <strong>Entire Series:</strong> every season and episode is added to Watched, and the series no longer appears in Continue Watching.
<img alt="d4d2f6fb542bb05b65c8da97a4e244c7_720.png" src="https://vidhub.okaapps.com/content/images/2024/04/d4d2f6fb542bb05b65c8da97a4e244c7_720.png"></li>
</ol>
<h3 id="create-a-playlist">Create a Playlist</h3>
<ol>
<li>On the home page, click the three-dot button in the upper-right corner and choose <strong>Edit Media Library</strong>.</li>
<li>Find Playlists at the bottom and enable it. It is hidden by default.
<img alt="IMG_0056-2.png" src="https://vidhub.okaapps.com/content/images/2024/04/IMG_0056-2.png"></li>
<li>In the Media Library, find Playlists and click <strong>View All</strong>.
<img alt="IMG_0057-2.png" src="https://vidhub.okaapps.com/content/images/2024/04/IMG_0057-2.png"></li>
<li>On the All Playlists page, click <strong>New Playlist</strong> in the upper-right corner.
<img alt="IMG_0059-2.png" src="https://vidhub.okaapps.com/content/images/2024/04/IMG_0059-2.png"></li>
<li>Name the new playlist and click Save.</li>
<li>The new playlist is now shown on the Playlists page.</li>
</ol>
<h3 id="delete-a-playlist">Delete a Playlist</h3>
<p>Open the playlist, click the three-dot button in the upper-right corner, and choose <strong>Delete Playlist</strong>.</p>
<blockquote>
<p>Deleting a playlist removes only the playlist. Its videos remain in the Media Library.</p>
</blockquote>
<p><img alt="IMG_0062-2.png" src="https://vidhub.okaapps.com/content/images/2024/04/IMG_0062-2.png"></p>
<h3 id="add-videos-to-a-playlist">Add Videos to a Playlist</h3>
<p>Long-press a movie poster on the Media Library page and choose <strong>Add to Playlist</strong>.</p>
<blockquote>
<p>Adding a TV series adds every episode in that series to the playlist.</p>
</blockquote>
<h3 id="add-to-favorites">Add to Favorites</h3>
<p>Long-press a poster and choose <strong>Add to Favorites</strong>. The title also appears in Favorites. Long-press it again and choose <strong>Remove from Favorites</strong> to remove it.</p>
<blockquote>
<p>Favorites must be enabled to appear. Configure it under Media Library &gt; three-dot button &gt; Edit Media Library.</p>
</blockquote>
<h3 id="mark-as-watched">Mark as Watched</h3>
<p>Titles marked as watched appear in Watched; canceling the mark removes them.</p>
<blockquote>
<p>If a title in Continue Watching is marked as watched and you later cancel that mark, its previous playback history is not restored.</p>
</blockquote>
<h3 id="media-library-status">Media Library Status</h3>
<p>While files are being scanned, scroll to the bottom to view the current status. After scanning completes, the bottom of the page shows the number of movies, TV series, and other videos in the Media Library.</p>]]></content:encoded></item><item><title><![CDATA[Advanced for Beginners]]></title><description><![CDATA[<h6 id="with-a-detailed-explanation-of-the-functions-of-vidhub-you-can-learn-more-about-vidhub">With a detailed explanation of the functions of VidHub, you can learn more about VidHub.</h6>
<h4 id="media-library">Media Library</h4>
<p>Media Library: All the displayed movies are sourced from the video files in the &quot;File Sources&quot; section. When you add a new folder as a file source, VidHub will automatically search,</p>]]></description><link>https://vidhub.okaapps.com/advanced-for-beginners/</link><guid isPermaLink="false">6628a7fe0d3b5200010a23e5</guid><category><![CDATA[Getting Started]]></category><dc:creator><![CDATA[Little Sui]]></dc:creator><pubDate>Wed, 24 Apr 2024 06:56:36 GMT</pubDate><content:encoded><![CDATA[<h6 id="with-a-detailed-explanation-of-the-functions-of-vidhub-you-can-learn-more-about-vidhub">With a detailed explanation of the functions of VidHub, you can learn more about VidHub.</h6>
<h4 id="media-library">Media Library</h4>
<p>Media Library: All the displayed movies are sourced from the video files in the &quot;File Sources&quot; section. When you add a new folder as a file source, VidHub will automatically search, scrape, and add all the video files in that source to the media library.
Definition: Scraping refers to searching online for movie/show information and posters based on the video file names, and then adding the search results to the media library after organizing them.
Clicking on the three-dot icon in the top right corner will present options: &quot;Rescan Files&quot; and &quot;Edit Media Library&quot;.
1.2: &quot;Rescan Files&quot; does exactly as its name implies. It rescans all video files in the file sources, identifies any changes, and synchronizes them with the media library. It is necessary to rescan files when there are changes (additions/deletions/renaming) in the videos within the file sources.
(For users with a large number of movies in their file sources, be cautious when using this feature as it performs a full scan of all file sources, which may take a considerable amount of time. If you know the precise location of the newly added/deleted/renamed video files, it is recommended to scan only that specific location, which will be explained later.)
1.3: &quot;Edit Media Library&quot; allows you to &quot;show/hide/sort&quot; categories within the media library. For example, you can choose to hide the movie category, so it will no longer be visible. You can also rearrange the order of the categories, such as moving TV shows to the second position and movies to the first position.
1.4: Clicking on &quot;View All&quot; shows all the movies within the current category.
<img alt="IMG_0106.PNG" src="https://vidhub.okaapps.com/content/images/2024/04/IMG_0106.PNG"></p>
<h1 id="file-sources">File Sources</h1>
<p>File Sources can be understood as a repository, a place to manage movie resources. It supports adding, deleting, disabling, renaming, and rescanning files.
Definition: It is a repository for storing movies.
Long-press on any added file source.
1.2: Delete: Delete the file source. All related movies in the media library will be automatically removed after deletion.
1.3: Disable/Enable: Clicking on &quot;Disable&quot; will hide all related movies in the media library. Clicking on &quot;Enable&quot; will display all related movies in the media library again.
1.4: Rename: As the name suggests, modify the name of the &quot;File Source&quot;.
1.5: Rescan Files: Perform a separate scan for the files in this file source. It will not affect other file sources.
<img alt="IMG_0108-2.png" src="https://vidhub.okaapps.com/content/images/2024/04/IMG_0108-2.png">
1.6: The naming convention in the top-left corner of the File Sources section is where you can specify the naming format for movies/shows. Only when you follow the convention and name your movies/shows accordingly, will VidHub automatically scan and gather the corresponding movie/show information, and organize them in the media library.
1.7: Edit: By clicking on the three-dot icon in the top-right corner and selecting &quot;Edit,&quot; you can choose multiple file sources and delete them.
1.8: Add/Modify File Source: By clicking on the three-dot icon in the top-right corner, the option to &quot;Add/Modify File Source&quot; will appear.
<img alt="IMG_0109-2.png" src="https://vidhub.okaapps.com/content/images/2024/04/IMG_0109-2.png">
1.9: Click on &quot;Add/Modify File Source&quot; to access the current page (which stores added local/network/cloud sources).
2.0: Click on &quot;Add Storage&quot; for redirection.
2.1: Network Share: Input the &quot;Server Address&quot; (URL), Port, Username, Password, Path (optional) (from shared by others or if you have your own storage URL videos, assuming VidHub supports it; currently supports WebDav and SMB protocols).
2.2: Cloud Drive: Import movies from the cloud drive to VidHub for organization and playback. For details, please refer to the beginner&apos;s guide. Currently supports Alibaba Cloud Drive/Baidu Cloud Drive/Dropbox/OneDrive/Google Drive/Premiumize, etc.
<img alt="IMG_0176(1).PNG" src="https://vidhub.okaapps.com/content/images/2024/04/IMG_0176-1-.PNG">
2.3: Open Local Videos: Upon clicking this option, an iCloud Drive pop-up will appear. If the video resources are stored in iCloud, you can directly navigate to the corresponding folder and play the selected video.
If the videos are not in iCloud, click the top-left corner to return to browsing. In the Location category, find and click on &quot;My iPhone.&quot; From there, navigate to the folder where the video resources are stored and click to enter. You can then directly play the video files.
Note: Opening local videos will directly play the selected video file.
2.4: Add Local Directory: Select a local folder as a file source. Upon clicking, an iCloud Drive pop-up will appear. If the resources are located in iCloud, you can directly navigate to the corresponding folder. Click &quot;Open&quot; in the top-right corner to add this directory as a file source.
If the resources are not in iCloud, click on the top-left corner to return to browsing. Look for &quot;My iPhone&quot; in the Location category and click on it. Browse through the files on your iPhone to find the folder where the video resources are stored. Once inside the folder, click &quot;Open&quot; in the top-right corner to add this directory as a file source.
Note: The selected local directory will be added as a file source, and all video files within that directory will be scraped and imported into the media library.
<strong><em>If your local videos are in the Photo app, you need to long-press the video, click on &quot;Share,&quot; and then choose &quot;Save to Files.&quot; Afterwards, you can use the Open Local Video/Open Local Directory features in VidHub to play or import the video into the media library.</em></strong></p>
<h1 id="media-servers">Media Servers</h1>
<p>Media Servers: VidHub supports adding Plex/Emby/Jellyfin media servers. By providing the server address, username, password, and other required information, you can log in and add a media server. Once added successfully, you can access and stream content from the media server by clicking on it. (Media servers can be self-hosted or publicly accessible servers set up by others.)</p>]]></content:encoded></item><item><title><![CDATA[Beginner's guide]]></title><description><![CDATA[<p>Welcome to the VidHub beginner&apos;s guide. Below is a detailed guide to help newcomers overcome initial challenges. Please pay close attention as we walk you through.
Step 1: Upon entering the VidHub app for the first time, you will see the &quot;Media Library&quot; add button. Click</p>]]></description><link>https://vidhub.okaapps.com/beginners-guide/</link><guid isPermaLink="false">66287ac40d3b5200010a23be</guid><category><![CDATA[Getting Started]]></category><dc:creator><![CDATA[Little Sui]]></dc:creator><pubDate>Wed, 24 Apr 2024 05:56:49 GMT</pubDate><content:encoded><![CDATA[<p>Welcome to the VidHub beginner&apos;s guide. Below is a detailed guide to help newcomers overcome initial challenges. Please pay close attention as we walk you through.
Step 1: Upon entering the VidHub app for the first time, you will see the &quot;Media Library&quot; add button. Click on the &quot;Add&quot; button.
<img alt="Step 1" src="https://vidhub.okaapps.com/content/images/2024/04/---.png">
Step 2: After clicking the &quot;Add&quot; button, when you click on &quot;Add Storage&quot;, it will redirect you to the Add Storage page, using Alibaba Cloud Drive as an example.
<img alt="IMG_0176.PNG" src="https://vidhub.okaapps.com/content/images/2024/04/IMG_0176.PNG">
Step 3: Clicking on Alibaba Cloud Drive will redirect you to the page for adding Alibaba Cloud Drive. Simply click on &quot;Add&quot;.
Step 4: After clicking &quot;Add,&quot; you will enter VidHub&apos;s cloud drive application page. Then, click on &quot;Allow.&quot;
Note: (The Backup Drive and Resource Library are locations where Alibaba Cloud Drive stores files. It is recommended to check both options).
Step 5: Click to open
Step 6: On this page, you can select the folder where the video is located as the file source. Click on the checkbox next to the folder - a checkmark indicates selection. Then, name the file source and click on &quot;Finish&quot;. Once completed, VidHub will automatically search for all videos within that folder and import them into the media library.
For example, if there is a folder A in the Backup Drive, and folder A contains another folder B where all the user&apos;s videos are stored. In this case, the user can navigate to Backup Drive, then into A, and individually select B as the file source. All videos within folder B will be automatically imported into the media library.
Note: Only &quot;folders&quot; can be selected as file sources for automatic import into the media library. Individual &quot;files&quot; cannot be selected for import.
<img alt="Folder selection" src="https://vidhub.okaapps.com/content/images/2024/04/--2-2.png">
Step 7: Upon clicking &quot;Finish&quot;, you will be automatically directed back to the page for adding/modifying file sources.
After clicking the return icon in the upper left corner, you will be taken back to the list of file sources.
Step 8: Next, click on the media library. VidHub will automatically search for all video files under the added file source, retrieve online movie/show information and posters based on the file names, and add them to the media library. Your video resources will be displayed here. Click to watch. (Follow the naming conventions for video file names).</p>]]></content:encoded></item><item><title><![CDATA[What does VidHub do?]]></title><description><![CDATA[<h2 id="introduction">Introduction</h2>
<p>VidHub is a versatile video player for iPhone, iPad, Apple TV, and Mac. When you need a feature-rich media player to manage, organize, and play various types of videos, VidHub will meet your needs.
VidHub supports managing video files on Aliyun Disk/Baidu Cloud/Google Drive/Dropbox/One Drive,</p>]]></description><link>https://vidhub.okaapps.com/what-does-vidhub-do/</link><guid isPermaLink="false">662875d60d3b5200010a239a</guid><category><![CDATA[Getting Started]]></category><dc:creator><![CDATA[Little Sui]]></dc:creator><pubDate>Wed, 24 Apr 2024 03:06:48 GMT</pubDate><content:encoded><![CDATA[<h2 id="introduction">Introduction</h2>
<p>VidHub is a versatile video player for iPhone, iPad, Apple TV, and Mac. When you need a feature-rich media player to manage, organize, and play various types of videos, VidHub will meet your needs.
VidHub supports managing video files on Aliyun Disk/Baidu Cloud/Google Drive/Dropbox/One Drive, supports samba(smb)/webdav protocols, supports NAS network storage such as Synology, supports local files, and supports Plex/Emby/Jellyfin media servers.
VidHub can automatically scrape movie/show covers and other information based on video file names, automatically categorize and organize your video resources, and support one-click global search. It also has powerful and user-friendly playback features, including playback speed adjustment, subtitles, screenshots, HDR, Dolby Vision, and more.</p>
<h1 id="what-media-formats-are-supported">What media formats are supported</h1>
<p>VidHub can support a wide range of video playback files
video&#xFF1A;mkv&#x3001;mp4&#x3001;.mov&#x3001;.rmvb&#x3001;avi&#x3001;webm&#x3001;wmv ETC...
Subtitles: VidHub supports built-in subtitles in videos and can mount a variety of external subtitle formats, such as SRT, SSA, ASS, SUB.</p>
<h1 id="best-compatible-devices-for-vidhub">Best Compatible Devices for VidHub</h1>
<p>Mac
Device requires macOS 10.15 or later.
iPhone
Device requires iOS 14.1 or later.
iPad
Device requires iPadOS 14.1 or later.
iPod touch
Device requires iOS 14.1 or later.
Apple Vision
Device requires VisionOS 1.0 or later.
Apple TV
Device requires Apple tvOS 14.0 or later.</p>
<h1 id="what-else-can-vidhub-do-for-me">What else can VidHub do for me?</h1>
<p>VidHub offers excellent file management capabilities and supports interface display of video playlists. Users can quickly find the desired media files by categorizing them based on types, dates, ratings, and more.
But it doesn&apos;t stop there. VidHub has many powerful features waiting for you to explore. We are continuously striving to improve the user experience, and we greatly appreciate your valuable suggestions and feedback. Please feel free to share your thoughts with us through the community, App Store, or email. Thank you.</p>]]></content:encoded></item></channel></rss>