- Home
- Live
Last Modified on 07/09/2024 9:08 am EDT
We've taken Live up a notch and provided the ultimate tool that will take your camming to the next level! Creators have the ability to live stream directly from their Android phones, IOS devices or tablets with Live Mobile camming.
New Update Effective January 15th, 2024: Exciting news! You can now cam with your IOS mobile devices!
New Update Effective March 20th, 2024: Live Recordings is now available!
Live Mobile camming is the perfect feature that enables you to connect with your fans, any place and at anytime! With mobile streaming, you have the freedom to broadcast Live shows from multiple locations and share your daily adventures with fans. Not only does this feature offer the ability to create a space for more intimate fan engagement, it also open more doors for you to monetize your shows.
The big question...What can you expect from Live Mobile camming? This tool encompasses all the features of your regular Live shows, with the added benefit of mobility! With mobile camming, you can:
- Earn tokens
- Create a room topic
- Live Chat with your fans
- Have private live sessions
- Set up a tip menu
- Set your goals and track your progress
- View your tokens earned and your highest tipper
- Choose to switch your camera to the following settings: front and back, landscape or portrait
- Stream from a variety of new locations and angles
- Create content on the go
- Record Live Shows and upload to your profile or share with members
Check out our MV Live Tips and Tricks article in order to make the most out of this feature!
Was this article helpful?
Thank you for your feedback!
Related Articles
Live Mobile Tips and Tricks!
How can I start or end my Live Show?
Live Recording
I'm getting the error message "We can't find your webcam!"?
Live Settings
Home
Glossary
Get Started as a Creator!
Store
FAQs
MVU Series
Account Settings
Live
Payout
Promotion
Members Support
Contact Us
Full PDF Download
"); } else { $("#node-tabs-container").append("
"); } // Add a node content block, for displaying headers or final-level content //MB hotfix 6-11-2020: prepend level 1 since it's currently being put at the bottom for some reason if (nodeLevel == '1'){ $(".node-level-container.level-1").after("
"); } else { $("#node-tabs-container").append("
"); } } $(".node-level-container.level-"+nodeLevel).append(nodeHTML); }); // Remove template from DOM $(".node-tab.template").remove(); // Hide all the node tabs and containers, except for level 1 $(".node-level-container:not(.level-1)").hide(); $(".node-tab:not(.level-1)").hide(); loadingComplete(); } function setupEventHandlers() { // Open tabs when clicked $(".node-tab").click(function(e) { // Get information about this node's level var thisLevelClass = e.currentTarget.className.match(/level-\d+/)[0]; //console.log("thisLevelClass",thisLevelClass); var thisLevel = parseInt(thisLevelClass.split("-")[1]); // Get this node's category id var thisCatID = $(this).data("category-id"); // Get this node's catageory API data var thisCatData = getObjectByPropertyValue(apiData.categories, "id", thisCatID); // Hide everything that is one level below the clicked node, and remove any selected classes from these nodes function oneLevelBelow() { return $(this).attr("data-node-level") >= thisLevel+1; } $(".node-level-container").filter(oneLevelBelow).hide(); $(".node-tab").filter(oneLevelBelow).hide().removeClass("selected"); $(".node-tab."+thisLevelClass).removeClass("selected"); // Also remove selected class from nodes on the same level as this one $(".node-content").filter(oneLevelBelow).html(""); $(".node-content").filter(oneLevelBelow).hide().removeClass("selected"); $(".node-content."+thisLevelClass).html("").removeClass("selected"); // Also empty out node content from this level $("#ko-contact-form").hide(); // Also hide contact form $("#action-buttons-container").hide(); // Also hide contact form buttons $(".form-button").removeClass("selected"); // Display the next level's container $(".node-level-container.level-"+(thisLevel+1)).show(); // Display the node tabs that are children of the clicked node $(".node-level-container.level-"+(thisLevel+1)+" .node-tab[data-parent-category='"+thisCatID+"']").show(); // Add a selected class to this node $(this).addClass("selected"); $(".node-content."+thisLevelClass).addClass("selected"); // Display and populate this node's content var nodeDescription = apiData.articles.find(function(article) { return article.parents.indexOf(thisCatID) > -1; }).current_version.en.text; $(".node-content."+thisLevelClass).html(nodeDescription).show(); // Identify a node content as final level content if the node tab has the final level attribute if ($(this).hasClass("final-level")) { var finalLevelNodeContent = $(".node-content.selected").last(); finalLevelNodeContent.addClass("final-level"); // Display action buttons $("#action-buttons-container").show(); scrollToBottom(); } else { $(".node-content").removeClass("final-level"); $(".node-content .final-level-related-articles-container").remove(); } rearrangeForm(); }); $(".form-button").click(function() { $(this).addClass("selected"); $("#ko-contact-form").show(); }); } function rearrangeForm() { // Name getFormGroup("contact_name") .detach() .insertAfter(".hg-contact-form-container h2") .css({ "width": "50%", "display": "inline-block", "padding-right": "10px" }); // Email getFormGroup("contact_email") .detach() .insertAfter(getFormGroup("contact_name")) .css({ "width": "50%", "display": "inline-block", "padding-left": "10px" }); // Subject $("#contact_subject").attr("placeholder", "Please provide a brief summary"); // Details $("#contact_body").css("height", "100px").attr("placeholder", "Please provide as much detail as possible."); // Submit Button $(".hg-contact-form-container .text-right button").text("Send"); // Make field changes based on the content inside the chosen final node. Insert them before "attach files" field var customFieldData = interpretCustomFields(); var attachFiles = $(".hg-contact-form-container .form-group").last(); var fieldCount = 0; // Wipe out any previously recycled custom fields $(".recycled").remove(); // Remove the default fields (if there are any still) $(".form-group").each(function() { if ($(this).find("label").text().indexOf("Response") > -1) { $(this).remove(); } }); customFieldData.forEach(function(field) { if (field.type == null) { console.log("Error - field definition has no type", field); } else { if (field.type == "label") { attachFiles.before("
"); } else if (field.type == "text") { if (field.placeholder == null) { field.placeholder = ""; } var recycledField = $('
'); recycledField.find("label").attr("for", "response_"+(fieldCount+1)); recycledField.find("label").text(field.question); recycledField.find("input").attr("id", "response_"+(fieldCount+1)); recycledField.find("input").attr("name", "custom_contact_field_"+fieldCount); recycledField.find("input").attr("placeholder", field.placeholder); recycledField.addClass("recycled"); attachFiles.before(recycledField); fieldCount++; } else if (field.type == "dropdown") { var recycledField = $('
'); recycledField.find("label").attr("for", "response_"+(fieldCount+1)); recycledField.find("label").text(field.question); recycledField.find("select").attr("id", "response_"+(fieldCount+1)); recycledField.find("select").attr("name", "custom_contact_field_"+fieldCount); // Add options field.options.split(";").forEach(function(option) { recycledField.find("select").append("
"); }); recycledField.addClass("recycled"); attachFiles.before(recycledField); fieldCount++; } } }); } function getObjectByPropertyValue(array, propertyName, propertyValue) { return array.filter(function(o) { return o[propertyName] === propertyValue })[0]; } function loadingComplete() { console.log("All loading complete"); // Display the documentation article now that all nodes are built $(".hg-contact-page").show(); nodesHeight = $(".documentation-article").outerHeight(true); } function getFormGroup(inputID) { return $("#"+inputID).parent(".form-group"); } Array.prototype.extend = function(other_array) { // from http://stackoverflow.com/a/17368101 other_array.forEach(function(v) { this.push(v) }, this); } function interpretCustomFields() { var customFieldsData = []; // For each pre tag $(".node-content.final-level.selected").find("pre").each(function() { // Remove curly brackets and white space var asString = $(this).text(); asString = asString.replace("{",""); asString = asString.replace("}",""); asString = asString.trim(); var asArray = asString.split(","); var asObject = {}; asArray.forEach(function(e) { var key = e.split(":")[0].trim(); var value = e.split(":")[1].trim(); asObject[key] = value }); customFieldsData.push(asObject); }); return customFieldsData; } } });
Choose the subject below that best describes how we can help.
Contact MV Support