any idea how to stream from a live smooth streaming to an XNA app?
is that even possible?
For the Xbox 360 this is not possible for out of the box XNA. XBLIG indie games and apps do not have internet access so can not do any type of streaming.
The apps you do see streaming on the Xbox (Netflix and Hulu for example) are created by large companies who have partnered with Microsoft and have access to functionality that most people and companies do not. It is possible they were written in XNA but unlikely, either way the functionality exposed to those companies is not available to the general populace.
Related
WebRTC requires too much processing power on server so doing it massively will be cost-prohibitive.
For nearly all other platforms - both for Windows and Mac - Chrome, Safari desktop, even IE and Edge, and Android - there is a Media Source Extensions API (https://en.wikipedia.org/wiki/Media_Source_Extensions) which allows sending stream over websockets and play it, it works. Problem is just with iOS.
Is there anything better (lower latency) than HLS which would work for me?
If not, is there a WebRTC server which is free and better scalable/more stable than Kurento Media Server (https://github.com/Kurento/kurento-media-server)?
There is a jsmpeg player http://jsmpeg.com/ but it is MPEG-1 only so will require unacceptable amount of bandwidth. There is broadway.js but it does not support audio...
Is there anything better (lower latency) than HLS which would work for me?
HTTP Progressive is a fine technology for this. It can be ran at much lower latencies than a segmented technology like DASH or HLS, and requires very little in terms of server-side resources. Look into Icecast for your server, and FFmpeg as your source.
There's no point in sending video over Web Sockets, unless you're implementing a bi-directional protocol. This isn't uncommon for ABR support, but it's definitely not the most efficient or simple way to do it.
Since you don't want to implement webRTC by yourself and need lower latency than HLS, I would prefer a media server. There are many media servers available in the market. But if you are looking for free and open source media server, your options are limited to few.
I would suggest red5 media server which is free and open source. Please check this link to find more about red5. If you use free red 5 media server you need little knowledge of java. Red5 also has a paid version called red5 pro which has better webRTC support and higher capabilities. Red5 is mostly for rtmp with flash player pulgin and its fairly new for red 5 webRTC streaming.
Also you can use wowza streaming engine trail version with limited number of connections. So these are the easiest options for you.
I would like to write a DJ's jukebox as a software which streams videos either from YouTube or from existing MP3s, and, I need to design the following:
playlists
repeat the same track
hopefully do some mixing as well
based on treble, bass and other frequencies of music coming from
different channels
...amongst others
Does YouTube allow this? Can I code this kind of music mixer? How?
YouTube has no official API for this.
You could download videos from YouTube (e.g. with yt-download), and separate the audio (e.g. ffmpeg-i video.flv audio.mp3); and use filters, like those provided by sox.
Also, in many places downloading most music from YouTube is a violation of copyright law. Distributing this application could get you in a lot of trouble, because you're encouraging people to break copyright law. (to my understanding).
I am developing an architecture for digital audio workstation that works on iOS (mainly, but trying to support OS X too). I'm going slowly through miles of documentation by Apple and references of their frameworks.
I have experience with DSP, but iOS is more new to me and there are so many objects, tutorials (even for older versions of iOS) and different frameworks with different API's. I would just like to make sure I choose the right one on start, or combination of those.
The goals of the architecture are:
Sound track sample access (access samples in files)
iPod library songs
local file songs
songs on remote server
radio stations (infinite length songs)
Effect chaining (multiple equalizers, or pitch & tempo change at the same time)
Multiple channels and mixing (even surround)
Portability
Mac OS X at least
iOS 6+ support (iOS 5 or lower not needed)
Sample access in 32-bit floats, not signed integers.
Easy Objective-C API (DSP and processing done in C++ of course)
Recording, playing
Record to file (codec by choice), or send over network (VoIP)
Playing on different outputs (on Mac) or speakers/headphones on iOS
Changing of volume/mute
Background audio support
Real-time sample processing
Equalizer on any song that is currently played
Real-time sample manipulation
Multi-threading
I hope I did not miss anything, but those are the most important goals.
My research
I have looked through most of the frameworks (not so much in detail though) and here is what I have figured out. Apple lists following frameworks for using Audio on iOS:
Media Player framework
AV Foundation framework
Audio Toolbox framework
Audio Unit framework
OpenAL framework
Media Player and AV Foundation are too high-level API's and do not allow direct sample access. OpenAL on the other side cannot record audio. So that leaves Audio Toolbox and Audio Unit frameworks. Many of the differences are explained here: What's the difference between all these audio frameworks?
As much as I can understand, Audio Toolbox would be the way to go, since MIDI is currently not required. But there is very little information and tutorials on Audio Toolbox for more professional control, such as recording, playing, etc. There is much more on Audio Units though.
My first question: What exactly are Audio Queue Services and what framework they belong to?
And then the final question:
Which framework should be used to be able to achieve most of the desired goals?
You can suggest even mix and match of frameworks, classes, but I ask you kindly, to explain your answer and which classes would you use to achieve a goal in more detail. I encourage highest level API as possible, but as low level as it is needed to achieve the goals. Sample code links are also welcome.
Thank you very much for your help.
Audio Units is the lowest level iOS audio API, and the API that Audio Queues are built upon. And Audio Units will provide an app with the lowest latency, and thus closest to real-time processing possible. It is a C API though, so an app may have to do some of its own audio memory management.
The AVFoundation framework may provide an app with easier access to music library assets.
An app can only process sound from other apps that explicitly publish their audio data, which does not include the Music player app, but does include some of the apps using Apple's Inter-App Audio API, and the 3rd party Audiobus API.
Is it possible to develop for the Kinect sensor without having an Xbox 360?
We would like to use the Kinect to develop an augmented reality application, but we're not sure if we need to get an Xbox for this. Do we have to, or can we develop using other platforms?
Yes, there are other APIs for interacting with the Kinect.
Microsoft has released it's beta API:
http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/
The caveat with Microsofts' API is that it cannot be licensed for commercial use. It's also a beta, so functionality is not locked, and there may be bugs.
OpenKinect is an open-source alternative, but it requires a little more work to get up and running:
http://openkinect.org/wiki/Main_Page
Yes ! it is very much possible to develop applications and devices on Kinect without the XBOX. Particular instances are in robotics (http://turtlebot.com/) and 3D printing (http://www.makerbot.com/blog/2011/05/26/3d-printing-with-kinect/). You should be able to get your project done using OpenNI drivers (http://www.openni.org/).
Can XNA and C# be used to create commercially feasible PC/XBOX games?
Is it the best approach for creating 3D games with C#? If not, what would be?
Actually you can do that but it is a little bit tricky.
You need to pass via an approval process by the "community" (XNA Creators club Online users).
You will also need to pay an Xbox live account plus an Xbox live developper licence.
According to XNA FAQ:
Do I need an XNA Creators Club premium membership to create games?
You don't need a premium membership to make games for Windows or Zune. However, you must be a premium member and in a supported region to create games for the Xbox 360, to release Xbox 360 games to Community Games on Xbox LIVE, or to peer-review submitted games.
Who can peer review XNA Community Games?
A member of the Creators Club whose premium (paid) account is in good standing and is a legal adult (for the countries we currently serve this means 18 years of age or older).
And:
Why does my game have to be peer-reviewed? Why can't I just send it to Xbox LIVE marketplace?
Peer reviewers help creators write better games, and protect game players from experiencing highly offensive or malfunctioning games. Peer reviewers will reject your game if:
Your game contains prohibited content, which is content not allowed on Xbox LIVE services
You misrepresent what is in the game play or in the promotional materials for the game
The promotional content for your game ( for example, the box art, description, banner or title) is not appropriate for all ages on Xbox LIVE Marketplace
The game crashes, it has too many bugs, or it is technically defective in some way
the faq is can be read here
If you want to do it simplier you can play with DirectX directly or even other libraries like SDL (for 2D games). Actually C# is very good for a variety of things and it gets better as the time goes.
A short answer to your first question would be, yes. It is entirely possible to create just about any kind of game with the XNA library. It can be used to make simple 2D platformers, or moderatily complex 3D shooters.
Depending on the game, the amount of logic you'll need to create for your game may vary.
Of course, while creating 3D games, you'll either have to create your own 3D engine, or get your hands on one pre made. XNA in and on itself does not provide an engine that would be fully usable out of the box. It does, however, provide wide variety of tool to help you in the process of making your own engine.
XNA is dedicated primarily to garage games, small projects with small teams, and hobbyists. Also, it's a really good learning tool for game architecture and 3D programming. But for commercial applications, there's a clearly huge gap between the XLA and the XDK.
Using the XDK allows you to access to a much deeper level of hardware, which is definitively a must if performances are an issue. Also, most of commercial game engines are developed for use with the XDK (the Unreal Engine, for example). The debugging and profiling system of the XDK is also an amazing tool which is not available using XLA.
So yes, it is technically possible to make commercial games using XNA, but the real world tends to prefer the XDK.
C# is not that much slower than C++, however C#'s memory management is not really Game friendly (in the AAA style). Never the less rendering is basically the same, as you'll be using DirectX I guess, so there is no reason a very professional game like Gear of Wars couldn't be made with C# (As a game dev my self, I've seen the source code for Gears of War, and can tell you this first hand). But you'll need great artists.
The real roadblock, is if your source is in C#, you have just locked your self out of other Platforms that aren't from Microsoft (Say Sony or Nintendo), but then again GoW is Microsoft bound, ASFAIK.
As for XNA, the best selling Arcade/Community Game Braid, was written in C++, but that's because the author didn't want to lock himself out of other platforms, and he had lots of experience and a large code-base that was already C++ based
XNA saves you a lot of the low level tedium associated with making games. This can be a huge time savings for a handful of people banging out games that don't need to push the hardware to its limit; however, most AAA games require a few people getting down and dirty with the hardware to push the limit as much as they can.
Having said that by no means does your game have to be AAA to be commercially feasible or fun - one could even argue it hurts more than it helps. Technology is rarely the bottleneck of making good games.
I doubt you will create the next Gears of War with it, but XNA works fine for many types of games. Most (all?) of the Community Games on XBox Live are created using XNA.