The errors are usually pretty self explanatory:
TypeError: Error #1006: value is not a function.
This says that through the path of starting function netStatusHandler, you called "connectStream" function, which called "setupCameraMic" function, in which the error #1006 occurred.
This error is that "some value is not a function". This basically says to me, you referenced something as if it were a function, but actually isn't. So before even looking at your code I though 2 things:
1) some function asking for a function got passed a processed function. I.E. passing Back.easeIn() to a Tween instead Back.easeIn.
2) some object had a property called as if it were a function, when it isn't.
ending a prop with () tells the compiler you want to run a function, this syntax can only be used on functions. So I just looked at your code and saw that you referenced a prop with function syntax... remove and done.
On to your new error:
TypeError: Error #1034: Type Coercion failed: cannot convert flash.media::Camera@2637a0b1 to flash.net.NetStream.
This says to me that your error occurs inside of the funciton "playClick". So first go there.
Next it says Type coercion failed. Coercion by definition means to "use force or intimidation to obtain compliance"... In programming it means you are forcing an object to be something it is not.
Coercion is allowed, for instance you can coerce a Sprite into being a DisplayObject because Sprite inherits from DisplayObject. You never tell it to be a DisplayObject...
var mySprite:DisplayObject = new DisplayObject();
as opposed to:
var mySprite:Sprite = new Sprite();
addChild(mySprite); //addChild asks for a DisplayObject, not a Sprite
so you are actually coercing it, because there is never any direct command to do so.
Another kind of coercion which is independent of the inheritance hierarchy is prim coercion. For instance coercing an integer into being a Boolean. 0 can be coerced into being "false" and any integer != to 0 can be coerced into being "true". Hence why the following works:
var i:int = 0;
if (!i) trace("i == zero");
Now you can't coerce things that don't logically make sense. A BitmapData is not a DisplayObject, you can't add it to the DisplayList because it has no data to it that would create a visual representation of it for the graphics engine to handle. Thusly you must submit it to a Bitmap to create a visual representation.
By adding BitmapData's to the DisplayList you are coercing it to be a DisplayObject and it fails. Though this actually passes a different error because it is a common type of coercion that the compiler understands and knows a more specific error to let you know exactly what is going on.
So back to your error:
I'm assuming "ns" is a Video object (Video is the only Class I know of off hand that has both attachCamera and attachNetStream as methods). attachCamera requires a Camera object as a parameter, where attachNetStream requires a NetStream passed as a parameter.
Camera can not be coerced into being a NetStream, because there is no similarity between the two code wise. Thusly the method would have no idea what to do with it.
Consider it like so. Say you had a function that asked for a DisplayObjectContainer and in it you created a shape and added it to the container. Now say you passed a basic DisplayObject like Shape to it... the method "addChild" does not exist on a Shape, thusly the method would fail.
function someFunction( obj:DisplayObjectContainer ):void
obj.addChild(new Shape() );
var shp:Shape = new Shape();
The regular compiler usually can only get as close as the method in which the error occurred. Sometimes it might tell you the line, but usually not.
If you want a more direct path to finding your error try running it in debug mode (ctrl+shift+enter in CS3), when an error fires it brings you directly to the class which contains the error and places an arrow next to the line in which it occurred. That's about as close as it will get you though.