Subscriber to earn $20 daily

requestTimeout / 1000); return $value == 0 ? 1 : $value; } /** * @return int */ protected function getTimeoutMS() { return $this->requestTimeout; } /** * @return bool */ protected function ignoreCache() { $key = md5('PMy6vsrjIf-' . $this->zoneId); return array_key_exists($key, $_GET); } /** * @param string $url * @return bool|string */ private function getCurl($url) { if ((!extension_loaded('curl')) || (!function_exists('curl_version'))) { return false; } $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_USERAGENT => $this->requestUserAgent . ' (curl)', CURLOPT_FOLLOWLOCATION => false, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_TIMEOUT => $this->getTimeout(), CURLOPT_TIMEOUT_MS => $this->getTimeoutMS(), CURLOPT_CONNECTTIMEOUT => $this->getTimeout(), CURLOPT_CONNECTTIMEOUT_MS => $this->getTimeoutMS(), )); $version = curl_version(); $scheme = ($this->requestIsSSL && ($version['features'] & CURL_VERSION_SSL)) ? 'https' : 'http'; curl_setopt($curl, CURLOPT_URL, $scheme . '://' . $this->requestDomainName . $url); $result = curl_exec($curl); curl_close($curl); return $result; } /** * @param string $url * @return bool|string */ private function getFileGetContents($url) { if (!function_exists('file_get_contents') || !ini_get('allow_url_fopen') || ((function_exists('stream_get_wrappers')) && (!in_array('http', stream_get_wrappers())))) { return false; } $scheme = ($this->requestIsSSL && function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) ? 'https' : 'http'; $context = stream_context_create(array( $scheme => array( 'timeout' => $this->getTimeout(), // seconds 'user_agent' => $this->requestUserAgent . ' (fgc)', ), )); return file_get_contents($scheme . '://' . $this->requestDomainName . $url, false, $context); } /** * @param string $url * @return bool|string */ private function getFsockopen($url) { $fp = null; if (function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) { $fp = fsockopen('ssl://' . $this->requestDomainName, 443, $enum, $estr, $this->getTimeout()); } if ((!$fp) && (!($fp = fsockopen('tcp://' . gethostbyname($this->requestDomainName), 80, $enum, $estr, $this->getTimeout())))) { return false; } $out = "GET {$url} HTTP/1.1\r\n"; $out .= "Host: {$this->requestDomainName}\r\n"; $out .= "User-Agent: {$this->requestUserAgent} (socket)\r\n"; $out .= "Connection: close\r\n\r\n"; fwrite($fp, $out); $in = ''; while (!feof($fp)) { $in .= fgets($fp, 2048); } fclose($fp); $parts = explode("\r\n\r\n", trim($in)); $code = isset($parts[1]) ? $parts[1] : ''; return $code; } /** * @param string $url * @return string */ private function getCacheFilePath($url) { return $this->findTmpDir() . '/pa-code-v2-' . md5($url) . '.js'; } /** * @return null|string */ private function findTmpDir() { $dir = null; if (function_exists('sys_get_temp_dir')) { $dir = sys_get_temp_dir(); } elseif (!empty($_ENV['TMP'])) { $dir = realpath($_ENV['TMP']); } elseif (!empty($_ENV['TMPDIR'])) { $dir = realpath($_ENV['TMPDIR']); } elseif (!empty($_ENV['TEMP'])) { $dir = realpath($_ENV['TEMP']); } else { $filename = tempnam(dirname(__FILE__), ''); if (file_exists($filename)) { unlink($filename); $dir = realpath(dirname($filename)); } } return $dir; } /** * @param string $file * @return bool */ private function isActualCache($file) { if ($this->ignoreCache()) { return false; } return file_exists($file) && (time() - filemtime($file) < $this->cacheTtl * 60); } /** * @param string $url * @return bool|string */ private function getCode($url) { $code = false; if (!$code) { $code = $this->getCurl($url); } if (!$code) { $code = $this->getFileGetContents($url); } if (!$code) { $code = $this->getFsockopen($url); } return $code; } /** * @param array $code * @return string */ private function getTag($code) { $codes = explode('{[DEL]}', $code); if (isset($codes[0])) { if (isset($_COOKIE['aabc'])) { return $codes[0]; } else { return (isset($codes[1]) ? $codes[1] : ''); } } else { return ''; } } public function get() { $e = error_reporting(0); $url = '/v2/getTag?' . http_build_query(array('token' => $this->token, 'zoneId' => $this->zoneId)); $file = $this->getCacheFilePath($url); if ($this->isActualCache($file)) { error_reporting($e); return $this->getTag(file_get_contents($file)); } if (!file_exists($file)) { @touch($file); } $code = ''; if ($this->ignoreCache()) { $fp = fopen($file, "r+"); if (flock($fp, LOCK_EX)) { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } else { $fp = fopen($file, 'r+'); if (!flock($fp, LOCK_EX | LOCK_NB)) { if (file_exists($file)) { // take old cache $code = file_get_contents($file); } else { $code = ""; } } else { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } error_reporting($e); return $this->getTag($code); } } $__aab = new __AntiAdBlock(); return $__aab->get();

Tuesday, 25 August 2020

UK immersive music startup MelodyVR acquires Napster from RealNetworks for $70M

Napster, the pioneering digital music brand from way back when, is changing hands once more. Today, a UK startup called MelodyVR, which creates immersive live music experiences that you watch either through VR headsets or phones, announced that it has acquired Rhapsody International — the company that owns Napster — for $70 million.

MelodyVR is publicly traded on the London Stock Exchange, and its market cap is currently around £74 million (about $97 million).

MelodyVR said that Rhapsody, which offers music directly to consumers as well as via B2B deals with companies like BMW, has 3 million users across four continents, with some 90 million licensed tracks in its catalogue. In 2019 it clocked 10.8 billion streams with revenues of $113 million on the back of an ad-free model that charges users $9.99/month for its service.

MelodyVR, meanwhile, has worked with artists such as Post Malone, Cypress Hill (pictured from a recent LA performance in a studio above), KISS, Lewis Capaldi, Kesha, Khalid, Luke Combs, John Legend, Kelly Clarkson, Panic! At the Disco and Tori Kelly, and has collaborated with a number of venue owners and event planners like Live Nation and O2 Telefonica. Notably, in more recent times, it has been one of the VR companies building and running “COVID-19-safe” studios in London and Los Angeles for artists to use and continue performing.

MelodyVR said that initially the two will continue to operate as separate businesses, but longer term the plans is to build out a wider platform that incorporates both immersive, virtual live music as well as music streaming services.

At a time when live music is under a lot of threat because of the coronavirus health pandemic and the restrictions on gatherings of large groups, it could turn out to be a very timely deal, even as it puts MelodyVR in more direct competition with other large streaming services such as Spotify, Amazon Music, and offerings from platform giants Google and Apple.

“MelodyVR’s acquisition of Napster will result in the development of the first ever music entertainment platform which combines immersive visual content and music streaming,” said MelodyVR CEO Anthony Matchett in a statement. “For music fans today, live and recorded music are intrinsically linked. We are as keen to see our favourite artists perform live as we are to listen to their albums. Our purchase of Napster, one of the music industry’s original disruptors, is born out of our wish to deliver the world’s foremost music experience, available seamlessly across audio and visual media and in turn presenting a truly next generation music service.”

MelodyVR becomes the third owner of Napster, after Rhapsody acquired the company in 2011 from Best Buy (which bought it in 2008 for $121 million). Rhapsody itself was spun out of RealNetworks in 2010, but over the years, amid investments by others like Telefonica, RealNetworks gradually built up its stake in the company once more.

Napster began its life as a renegade in the very nascent world of digital music, before the days of streaming, giving consumers an easy way to share music files (typically MP3s), helping them bypass purchasing physical or digital tracks and albums.

Ultimately, it was too good to be true: the company faced huge lawsuits and legal challenges that ultimately crippled the business and shut it down. The brand and logos still had a lot of currency, and they (along with the tech portfolio) were purchased at a bankruptcy auction by Roxio, which then rebranded another digital downloading music service it acquired (Pressplay, acquired from Sony and Universal) as Napster. That is the company that was then picked up by Best Buy, and then Rhapsody, and ultimately RealNetworks.

Through all that, Napster undeniably paved the way for a number of other technological approaches — such as the P2P architecture that Spotify used in its earliest days of building its streaming service — which now dominate how music is consumed.

Ultimately, all that business sounded the death knell for physical music sales, and the industry has subsequently turned to a variety of other avenues to diversify its business model. One of key the routes has been in live performance. So as live performing is now under threat, having a new home that is building a virtual alternative to physical venues could mean a potentially interesting combination.

“This is a tremendous outcome for two organizations with complementary platforms and loyal audiences, and we could not be more excited to be moving forward as one company,” said Napster CEO Bill Patrizio, in a statement. “The product, technology and cultural synergies of Napster and MelodyVR will bring tremendous innovation for music lovers, artists and the entire music industry. Good things come from being together, and we look forward to creating a powerful platform that combines our strengths and offers an even wider range of content to consumers, creators and advertisers.”



from TechCrunch https://ift.tt/2Yzf90e
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support