Adobe Air 3.0 iOS streaming H264/Speex over RTMP -- No Video

Problem:
H264/Speex RTMP stream from Flash Media Server doesn't display video.  Audio plays fine.
Conditions:
Adobe Air 3.0
iOS device (iPad 2, iOS4.3)
App settings:
<renderMode>direct</renderMode>
Flash Builder 4.5.1 compiler settings:
-swf-version=13
-target-player=11.0.0
I have tried using both stageVideo and the regular Video object to render an H264 signal streaming from Flash Media Server over rtmp, but with no luck.  I can hear the audio, but the video is never rendered.
I CAN see H263 video when streamed over RTMP using this setup (with just the Video object). 
I can also stream a locally stored mp4 (H264/AAC) file over rtmp from the iOS device and play it locally just fine (using a stageVideo object).
I have attempted this with both stageVideo (which works fine when streaming an mp4 file from the iOS device) and with the regular Video object (the regular Video object handles H263 just fine streaming down from FMS over rtmp).  I've also played around with backgroundAlpha = "0" for this case, all with no luck.
I've followed all the online instructions and tutorials to get this working for the past week, but have not had any luck.  I'm happy to post more code, but this approach is fairly straight forward and has been described multiple times around these forums and in the adobe blog posts.  It goes like this:
     - instantiate NetConnection (_nc) to FMS and wait for successful connection:
               _ns = new NetConnection();  
               _nc.connect(serverAddress);
     - instantiate NetStream (_ns) and connect using NetConnection: 
               _ns = new NetStream(_nc);
     - setup listener for StageVideoAvailabilityEvent; if stageVideo becomes available, attach _ns: 
              _stageVideo = stage.stageVideos[0];
              _stageVideo = _stageVideo.attachNetStream(_ns);
     - if stageVideo ISN'T available, fall back to Video object:
               _video = new Video();
               _video.attachNetStream(_ns);
               stage.addChild(_video);
     - play netStream app:
               _ns.play(appName);
My renderMode is set correctly ("direct"), and from what I can tell, this isn't a backgroundAlpha issue.
I have seen this problem described elsewhere on this forums and on the net. 
I'd like to know from Adobe: are there any compatibility issues with this approach?  There doesn't seem to be any type of compatibility chart listing which video codecs and transport protocols are available on the different mobile platforms.  Since mobile deployment is so heaviliy fragmented, a descriptive chart or table like this would be helpful for those of us developing -- at least for the main mobile platforms predominantly in use.
Other forum posts similar to this problem:
http://forums.adobe.com/message/3981541#3981541
http://forums.adobe.com/message/3954578#3954578
Thanks in advance!

I do hope someone from Adobe is "hearing" this, guys. The lack of RTMP-based H.264 video on the Air for iOS is a major problem, indeed.
As Fabio Sonnati mentioned in http://sonnati.wordpress.com/2011/04/26/air-2-6-for-ios-and-video-play back/, AIR for iOS does support HTTP streaming (via HLS) of h.264 videos. However, when streaming via RTMP, AIR for iOS only supports VP6 and Spark – a couple of old, retired codecs.
While HTTP streaming (HLS) seems to be a good option for those who simply want to “play a video” in iOS, I do believe it has some severe limitations, especially for live-communications. I’d like to share some of these thoughts with you.
1. HLS has ridiculously high latency for live videos (around 40 seconds), when compared to RTMP. Although this may not be a problem for on-demand videos, it sure is a great problem for anyone doing serious live-communications applications (such as webconferencing, live webcasting with audience interaction or Skype-like video chats), which require near-zero latency.
2. Perhaps someone can correct me on this (hopefully!), but as far as I know, HTTP streaming will not allow cuepoints to be read from videos. This is particularly painful for anyone doing video-triggered actions, such as slide changes (for webinar apps), subtitling or live closed captioning, etc. I read somewhere that OSMF player allows cuepoints (or "temporal metadata". See http://blogs.adobe.com/osmf/2009/11/cue_point_support_in_osmf.html), but I haven't been able to test it myself.
3. Although HLS it is quite compatible with firewalls (since it flows through port 80), RTMP with tunnelling also flows through port 80 or 443, which adds great compatibility, even on very restricted networks. Our experience with very large clients proves that, hands down.
In other words, HTTP/HLS streaming is Ok. But it simply does *not* fit into every shoe that RTMP does. We do believe that RTMP remains as our best option for live streaming or serious streaming-oriented *apps* (in which things more complex than “mere video playing in a window” actually happen).
That all said, I do believe we should let Adobe know about this need. The fact that RTMP streaming in AIR for iOS is limited to VP6 and Spark, which are two “dead” codecs, still puts us, Air developers, in a very fragile position in terms of what we can accomplish with video in iOS.
I’m sure some of you cheered when you heard about Flash Player 11 having h.264 video encoding. This, (plus the echo cancellation feature that came in 10.3) opened great doors for great Unified-Communication applications to be developed for Flash/Air. Now, it’s undeniable that clients want those applications running on tablets, especially the iPad.
Not being able to use h.264 via RTMP on iOS is certainly a huge step backwards. Anyone shares this same opinion? What do you guys believe to be the best option to let Adobe really know about this need? Is this limitation a simple lack-of-a-feature (which can be fixed by Adobe) or is this some imposed thing by Apple?
Just one final note: Air for Android does *not* have the same limitation. It does allow RTMP streaming of h.264.
Thanks for your attention,
Helder Conde

Similar Messages

  • Java.lang.NullPointerException is thrown when packaging Adobe AIR application for iOS

    Hi All,
    https://bugbase.adobe.com/index.cfm?event=bug&id=3071298
    As per above link this bug resolve(latest build) but i am facing  Java.lang.NullPointerException is thrown when packaging Adobe AIR application for iOS, using the packaging tools.
    (for  inappPurchase Demo app --- i used below link code)
    http://code.google.com/p/in-app-purchase-air-ios/
    Thanks,
    Sunil Rana

    Hi Everyone,
    I'm getting basically the same error. Are there any rules or guidelines that we are suppose follow when writing an app for iOS? Is there a way to know exactly where it is crashing? My apps are not MXML, only actionscript. Also I made sure I have no errors not even warnings in my SWF file, but still no go! 
    Getting the same error.
    Exception in thread "main" java.lang.NullPointerException
            at adobe.abc.GlobalOptimizer.sccp_eval(GlobalOptimizer.java:6944)
            at adobe.abc.GlobalOptimizer.sccp_analyze(GlobalOptimizer.java:5909)
            at adobe.abc.GlobalOptimizer.sccp(GlobalOptimizer.java:4628)
            at adobe.abc.GlobalOptimizer.optimize(GlobalOptimizer.java:3514)
            at adobe.abc.GlobalOptimizer.optimize(GlobalOptimizer.java:2215)
            at adobe.abc.LLVMEmitter.optimizeABCs(LLVMEmitter.java:526)
            at adobe.abc.LLVMEmitter.generateBitcode(LLVMEmitter.java:336)
            at com.adobe.air.ipa.AOTCompiler.convertAbcToLlvmBitcodeImpl(AOTCompiler
    .java:472)
            at com.adobe.air.ipa.BitcodeGenerator.main(BitcodeGenerator.java:82)
    Compilation failed while executing : ADT
    regards,
    Keith

  • Adobe Air SDK for IOS, i'm searching for a week  to get the certificate and provisioning files

    Adobe Air SDK for IOS, I'm searching for a week  to get the certificate and provisioning files!!
    Please help me to get the certificate and provisioning files and I should pay to have these files.
    Thanks

    Apple doesn't provide support for third-party development tools.
    You need to post in the Adobe forums.
    You need a paid developer account to install apps on an iOS device.

  • StageVideo Adobe Air 3.0 iOS Error 1069 |onUpstreamBase not found

    I am using a StageVideo object with Adobe Air 3.0 compiled down and running on an iOS device iPhone 3GS.  The StageVideo appears and attaches to the NetStream just fine.  But after I issue NetStream.play(), I get the following runtime error:
    ReferenceError: Error #1069: Property |onUpstreamBase not found on views.DisplayView and there is no default value.
    You'll notice that the "|onUpstreamBase" contains a "pipe"-character at the beginning.  I tried to add:
    public function onUpstreamBase (dataObject:Object):void {
                                            trace(dataObject.toString());
    to the view function, but that didn't work.  And I can't create a function handler for |onUpsteamBase because of the pipe character.
    I am attaching the Netstream and NetConnection to an recorded H.264 rtmp stream. The rest of my code works just fine, but is failing on this runtime error.
    Anyone else run into this? 
    Thanks in advance.

    I got this error too, but not trying to do anything fancy like Stage Video. The issue is w/the "client" property on the NetStream object. You're supposed to use this to add some event handlers/call back functions that the NetStream will invoke.
    I got this error when I set the client property to "this" and defined the callback functions in my class.  However, that generates this error. If you use a generic object to store the call back function, the error does not occur (b/c the generic object is dynamic)...
    private function onNetStatusConnect():void
    foo = { onMetaData: onMetaData };
    stream=new NetStream(connection);
    stream.client=foo;
    // don't do this
    stream.client=this;
    vid=new Video();
    addChild(vid);
    vid.attachNetStream(stream);
    stream.play(feedAddress);
    public function onMetaData(data:Object):void
    trace(data);

  • Adobe AIR 3.7 - iOS run error

    Hi,
    I have set up a simple project to test the latest release of Adobe Air 3.7 which allow loading external swf with bytecode inside.
    The project use the krpano_as3_interface, load the main krpano.swf, and after a simple xml file.
    Building and running in iOs SImulator using my Flex IDe works fine, the panorama load.
    Building and trying runnig on an iOs Device connected with USB doesn't works.
    I get this error :
    Trying to connect to Player
    Player connected; session starting.
    [trace] krpano_load
    [trace] krpano_load_complete
    [Fault] exception, information=Error: Error #3747: Multiple application domains are not supported on this operating system.
    Following this blog article, http://blogs.adobe.com/airodynamics/2012…ir-apps-on-ios/, i correctly load krpano swf file. But it seems that adding krpano content on stage is not possible.
    Any idea ?
    [code]
    <?xml version="1.0" encoding="utf-8"?>
    <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
                   xmlns:s="library://ns.adobe.com/flex/spark"
                   applicationDPI="160"
                   applicationComplete="krpano_load()"
                   width="100%" height="100%" usePreloader="false"
            >
        <fx:Script>
                        <![CDATA[
            import mx.core.UIComponent;
            import mx.events.FlexEvent;
            import mx.core.FlexGlobals;
            import mx.events.ResizeEvent;
            import flash.system.Security;
            import krpano_as3_interface;
            public var krpano:krpano_as3_interface = null;
            public var area:Object;
            public var _krpano:*;
            public function krpano_load():void
                trace("krpano_load");
                var loaderContext:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain, null);
                loaderContext.allowLoadBytesCodeExecution = true;
                loaderContext.allowCodeImport = true;
                var krpanoloader:Loader = new Loader();
                krpanoloader.contentLoaderInfo.addEventListener(Event.COMPLETE, krpano_load_complete);
                krpanoloader.load(new URLRequest("./krpano.swf"), loaderContext);
            public function krpano_load_complete(event:Event):void
                trace("krpano_load_complete");
                (event.target.content as Object).embeddedstartup(stage, krpano_ready);
                _krpano = (event.target.content as Object);
            public function krpano_ready(krpanointerface:krpano_as3_interface):void
                trace("krpano_ready");
                krpano = krpano_as3_interface.getInstance();
                krpano.call("showlog(true);");
                area = krpano.get("area");
                area.x      = 0;
                area.y      = 0;
                area.width  = stage.stageWidth;
                area.height = stage.stageHeight;
                krpano.call("loadpano(./krpano.xml,null,MERGE,BLEND(1));");
            ]]>
              </fx:Script>
    </s:Application>

    The error #3747: "Multiple application domains are not supported on this operating system." occurs when the Applicationdomain is not set to currentDomain. Can you please debug if the ApplicationDomain is getting set to currentDomain rather than the default one?
    Thanks,
    Nimisha

  • Adobe air exe to ios app - the process?

    Hi,
    I am new to app development. I am wanting to know what is possible and my cheapest option in creating an app for IOS from windows.
    The app I am creating is a technical publication wanting to be displayed on anipad.
    I have an adobe Air version exe published from robohelp/ framemaker. Is there a way to turn my adobe air application into a IOS App?
    If not, what are my other options to get a tech pubs document as a IOS App? I would like to use ideally windows adobe products for the creation of it.
    Thanks

    Ye that Merapi definitely seems interesting but it's the Java chops part that I think I'll fall down lol
    I've also asked on a java forum if anyone with experience of using Flex in Conjunction with Java can create the function that I'm after but my topic has been ignored like the ugly girl at the prom.
    I've never heard of a socket server. Would they be required to be installed on each machine that the interface is installed on?
    I'll definitely look into it. Thanks a lot mate.

  • Adobe air for Playbook & mp3 streaming

    I want to listen radio-canada streaming (Mp3).
    I coulndt find an apps to play streaming MP3 ( where I can paste the radio canada link)
    So I decide to install the widget, which need adobe air..
    I'm unable to acces adobe air download from the browser and the widget doesn't want to install
    Look like a pandora box....
    So, the question is...Is there any way to play mp3 streaming via the playbook or to install widget with adobe air?
    Thanks

    Have you tried the Nobex Radio app on the PlayBook?
    Maybe this has the station that you're trying to listen to.
    1. If any post helps you please click the below the post(s) that helped you.
    2. Please resolve your thread by marking the post "Solution?" which solved it for you!

  • Live streaming ( play && publish ) over rtmp/rtmfp with codecs ( h264 && PCMU ) on Android/iOS

    I have a question: On what operating systems(android,ios) can be played and published stream with codecs H264 and PCMU with rtmp and rtmfp protocols(live streaming)?    
         As far as I found out with the codecs can be played on Android(rtmp protocol). On IOS video is not displayed, as I understood AIR environment cuting it.
    Another question regarding video texture. Will be included in future releases support for live playing h264+PCMU on IOS?

    On iOS, you'll need to be playing a HLS stream for h264 to decode when streaming from a remote server.

  • Adobe Air 3.2 (ios ipad first gen) performance issues

    Hi guys, I've been working for a while with Starling framework on mobile, it works really good in all platforms except ipad1, I am afraid I won't be able to carry on working with it if I can't manage to make it run properly on ipad1, unfortunatelly ipad1 is still so important, there are still lots of users using ipad1. I might have to go back to cpu mode on ipad1.
    it is really sad, i am soooooo happy with air 3.2 (Starling framework) running on different androids, iphone 4s and ipad2, it runs at solid 60 fps, no delays, so smooth.. problem is when I try exactly the same .IPA on ipad1, god! it is really bad, about 5 times slower, it runs even worse than Amazon Kindle Fire how come!?
    any ideas? has anyone dealt with similar problems on ipad1?
    thanks.

    Starling is a great framework. It has fallbacks. Chances are you're either trying to do too much at once with too high of an expectation of ipad1, or you're falling back to CPU blitting.
    I struggle greatly with ipad1 with CPU blitting myself. But lets not compare in an unfair way. iPad1 comes with a single A4 processor. iPad2 comes with more memory and dual core A5 processors. Wednesday they may be debuting iPad3 with who knows what, dual/quad a5x? Dual/quad A6? They're going to need a good performance bump (CPU, GPU (mostly)) if they plan on rolling out retina.
    The performance of CPU blitting between ipad1 and 2 is night and day. It's almost silky smooth on ipad2 but it's border line acceptible on ipad1.
    The GPU is a PowerVR SGX 543MP2 on the ipad2 which Apple claimed was 9x faster. Is it any shock it's doing better with Starling or Stage3D?
    I'm in your boat in desiring to put ipad1 to bed. I hope ipad3 will open the door for that pretty soon. But bottom line, if you really want ipad1, you're going to need a fallback. Starling has that, but if you do 'too much at once', ipad1 will surely die. Perhaps how much you do at once needs a code branch specifically for ipad1 to assule you don't do too much.

  • Adobe Air for iOS - SQLError: 'Error #3115' no such table

    I am developing Adobe Air application for iOS with sqlite on it. When running on my local machine, it worked like charm (add, edit & delete). Unfortunately, when tried running on iPAD, it gives me the following error:
    SQLError: 'Error #3115', details:'no such table: 'tblEmploye'', operation:'execute', detailID:'2013'
    Here's my code when opening the sqlite database: ** data file is saved on the current application directory where all the files are stored:
            exampleDBFile = File.documentsDirectory.resolvePath("mydb.db");
            if (exampleDBFile==null || !exampleDBFile.exists) {
                MovieClip(root).mcSong.visible = false;
                MovieClip(root).mcAlert.visible = true;
                MovieClip(root).mcAlert.enabled = true;
                MovieClip(root).mcAlert.txtErrorMessage.text = "Database not found";
            exampleDB = new SQLConnection();
            exampleDB.addEventListener(SQLEvent.OPEN, onExampleDBOpened);
            exampleDB.addEventListener(SQLErrorEvent.ERROR, onExampleDBError);
            //exampleDB.openAsync(exampleDBFile);
            exampleDB.open(exampleDBFile);
    I also tried using the following but still no luck
    exampleDBFile = File.applicationDirectory.resolvePath("mydb.db");           
    when using this, i receive a different error : Error:Error #3104
    And heres the code for adding new entries
            sqlInsert = "insert into tblLyrics (empName, empDesc) values
                        ('"+ strReplace(txtSearchMe.text, "'", "") + "','"+ strReplace(txtContent.text,"'","") +"')";
            dbStatement.text = sqlInsert;       
            dbStatement.addEventListener(SQLEvent.RESULT, onDBStatementInsertResult);       
            dbStatement.execute();
    Hoping for your advice....

    Hi,
    I am sorry you are facing this issue. Is the code that you posted all that you are doing? It is missing a few things:
    1) You are not creating the dbFile and the table tblEmployee. Do they already exist on your desktop? On device, you would need to create them.
    2) dbStatement.SQLConnection property is not set anywhere.
    The following sample code is from http://help.adobe.com/en_US/air/reference/html/flash/data/SQLConnection.html. Could you try and see if it works for you?
    package
         import flash.data.SQLConnection;
         import flash.data.SQLResult;
         import flash.data.SQLStatement;
         import flash.display.Sprite;
         import flash.events.SQLErrorEvent;
         import flash.events.SQLEvent;
         import flash.filesystem.File;
         public class MultipleInsertTransactionExample extends Sprite
              private var conn:SQLConnection;
              private var insertEmployee:SQLStatement;
              private var insertPhoneNumber:SQLStatement;
              private var dbFile:File
              public function MultipleInsertTransactionExample():void
                   // define where to find the database file
                   //var appStorage:File = File.applicationDirectory;
              dbFile = new File(File.documentsDirectory.nativePath + File.separator + "ExampleDatabase.db");
                   // open the database connection
                   conn = new SQLConnection();
                   conn.addEventListener(SQLErrorEvent.ERROR, errorHandler);
                   conn.addEventListener(SQLEvent.OPEN, openHandler);
                   conn.openAsync(dbFile);
              // Called when the database is connected
              private function openHandler(event:SQLEvent):void
                   conn.removeEventListener(SQLEvent.OPEN, openHandler);
                   // start a transaction
                   conn.addEventListener(SQLEvent.BEGIN, beginHandler);
                   conn.begin();
              // Called when the transaction begins
              private function beginHandler(event:SQLEvent):void
                   conn.removeEventListener(SQLEvent.BEGIN, beginHandler);
                   // create and execute the first SQL statement:
                   // insert an employee record
                   var createEmployees:SQLStatement = new SQLStatement();
                   createEmployees.sqlConnection = conn;
                   createEmployees.text =
                        "CREATE TABLE IF NOT EXISTS employees(lastName, firstName, email, birthday) ";
                   createEmployees.execute();
                   insertEmployee = new SQLStatement();
                   insertEmployee.sqlConnection = conn;
                   insertEmployee.text =
                        "INSERT INTO employees (lastName, firstName, email, birthday) " +
                        "VALUES (:lastName, :firstName, :email, :birthday)";
                   insertEmployee.parameters[":lastName"] = "Smith";
                   insertEmployee.parameters[":firstName"] = "Bob";
                   insertEmployee.parameters[":email"] = "[email protected]";
                   insertEmployee.parameters[":birthday"] = new Date(1971, 8, 12);
                   insertEmployee.addEventListener(SQLEvent.RESULT, insertEmployeeHandler);
                   insertEmployee.addEventListener(SQLErrorEvent.ERROR, errorHandler);
                   insertEmployee.execute();
              // Called after the employee record is inserted
              private function insertEmployeeHandler(event:SQLEvent):void
                   insertEmployee.removeEventListener(SQLEvent.RESULT, insertEmployeeHandler);
                   insertEmployee.removeEventListener(SQLErrorEvent.ERROR, errorHandler);
                   // Get the employee id of the newly created employee row
                   var result:SQLResult = insertEmployee.getResult();
                   var employeeId:Number = result.lastInsertRowID;
                   // Add a phone number to the related phoneNumbers table
                   var createTab:SQLStatement = new SQLStatement();
                   createTab.sqlConnection = conn;
                   createTab.text =
                        "CREATE TABLE IF NOT EXISTS phoneNumbers(employeeId, type, number)";
                   createTab.execute();
                   insertPhoneNumber = new SQLStatement();
                   insertPhoneNumber.sqlConnection = conn;
                   insertPhoneNumber.text =
                        "INSERT INTO phoneNumbers (employeeId, type, number) " +
                        "VALUES (:employeeId, :type, :number)";
                   insertPhoneNumber.parameters[":employeeId"] = employeeId;
                   insertPhoneNumber.parameters[":type"] = "Home";
                   insertPhoneNumber.parameters[":number"] = "(555) 555-1234";
                   insertPhoneNumber.addEventListener(SQLEvent.RESULT, insertPhoneNumberHandler);
                   insertPhoneNumber.addEventListener(SQLErrorEvent.ERROR, errorHandler);
                   insertPhoneNumber.execute();
              // Called after the phone number record is inserted
              private function insertPhoneNumberHandler(event:SQLEvent):void
                   insertPhoneNumber.removeEventListener(SQLEvent.RESULT, insertPhoneNumberHandler);
                   insertPhoneNumber.removeEventListener(SQLErrorEvent.ERROR, errorHandler);
                   // No errors so far, so commit the transaction
                   conn.addEventListener(SQLEvent.COMMIT, commitHandler);
                   conn.commit();
              // Called after the transaction is committed
              private function commitHandler(event:SQLEvent):void
                   conn.removeEventListener(SQLEvent.COMMIT, commitHandler);
                   trace("Transaction complete");
              // Called whenever an error occurs
              private function errorHandler(event:SQLErrorEvent):void
                   // If a transaction is happening, roll it back
                   if (conn.inTransaction)
                        conn.addEventListener(SQLEvent.ROLLBACK, rollbackHandler);
                        conn.rollback();
                   trace(event.error.message);
                   trace(event.error.details);
              // Called when the transaction is rolled back
              private function rollbackHandler(event:SQLEvent):void
                   conn.removeEventListener(SQLEvent.ROLLBACK, rollbackHandler);
                   // add additional error handling, close the database, etc.
    Thanks,
    Sanika

  • Adobe air 2.6 gpu font scaled down

    Hi,
    When i use the gpu to publish my adobe air 2.6 ios project, when i run it on iphone the font in the texfields is scale down twice is size, but online on the first time that i run the application, when i enter on differents area the font size is normal.
    Anyone knows why is doing that?
    Thanks,
    Nuno

    another workaround here from some other thread::
    import flash.text.TextFormat;
    import flash.text.TextField;
    import flash.events.FocusEvent;
    var tf: TextField = myText as TextField;
    tf.addEventListener(FocusEvent.FOCUS_IN, onFocusIn);
    tf.addEventListener(FocusEvent.FOCUS_OUT, onFocusOut);
    tf.addEventListener(FocusEvent.MOUSE_FOCUS_CHANGE,  onFocusOut);
    function onFocusIn(e: FocusEvent) {
        var myFormat:TextFormat = myText.getTextFormat();
        myFormat.size = 6;
        myText.defaultTextFormat = myFormat;
        myText.setTextFormat(myFormat);
    function onFocusOut(e: FocusEvent) {  
        var myFormat:TextFormat = myText.getTextFormat();
        myFormat.size = 14;
        myText.defaultTextFormat = myFormat;
        myText.setTextFormat(myFormat);}
    I set the textsize smaller than normal, and restore the size when  it lost focus.

  • Porting existing Android native app to Adobe AIR

    I indent to port a existing Android native app to Adobe AIR for android. Reasons: To use my existing AS3 skills, "cost" for native is too high and soon port it to iOS.
    Difficulties I face here:
    Existing app package, say "com.mygame.myapp" has to be retained. By using FB with AIR SDK, we get a "air." prefix to the package name. It becomes "air.com.mygame.myapp".
    Will this solution still solve the problem in AIR SDK removing "air." prefix from package name has any working solution!?.
    The help link http://helpx.adobe.com/air/kb/opt-out-air-application-analytics.html is dead now. iOS specific is found here Opt-out | Adobe AIR app analytics | iOS
    Please suggest me a Mac suitable solution.
    In Android, using a ".keystore" file, we need to export as the ".APK" file. In AIR, if we publish using a new ".p12" signature file would it be compatible with Google Play, and it rules.
    App's existing users should find difficulty in upgrading the app.
    Another unanswered thread Possible to remove "air." appended on package and target a .keystore rather than .p12?
    Thanks a lot.

    I was able to figure it out with the help of Jeff Ward Ooh, I just discovered how to easily remove the 'air.' prefix when packaging…
    Tested and works fine with AIR SDK 15, Mac OSX 10.10 Yosemite. actionscript 3 - Android App ID prefix problem - Stack Overflow
    java -jar /FULL_PATH_TO_AIR_SDK/lib/adt.jar -package -target apk-captive-runtime -storetype jks -keystore <DEVELOPER>.keystore -storepass <PASSWORD> Main.apk Main-app.xml Main.swf -extdir /PATH_TO_ANE_DIRECTORY

  • Adobe AIR Team - please stop trolling us and start fixing critical bugs.

    Hi there,
    i didn't intend to get offensive at anyone, but you at adobe give us, the developers and therefore your customers, not any choice.
    Please see these critical bugs which are filed almost 2 years ago:
    https://bugbase.adobe.com/index.cfm?event=bug&id=3496074
    https://bugbase.adobe.com/index.cfm?event=bug&id=3077653
    It is one example where you making us the fools and behave like a troll by telling us a "workaround" and close the ticket. Again.
    Giving us a workaround which affects the overall app experience and freezes the UI is not a solution to this problem. Why do you not care about stuff like that? File Operations are one of the most recent showstoppers to me in doing Adobe AIR Applications for iOS and you give me no chance but to search an alternate development platform. And I am not the only developer who is thinking like that.
    Please be more developer friendly and try to fix as many bugs as you can before thinking about new features which aren't really important to us.

    Hey , it's  adobe ..OK.  It's very very very  normal . Just  waiting ,just be  patient , we will fix it  several years  later ,because we have more bugs important than it.
    OK ,let me tell you  another funny thing.
    Refer to this article :  http://help.adobe.com/en_US/air/extensions/air_extensions.pdf  , Adobe  said in  page 49
    Resources on Android devices
    For the Android-ARM platform, put the resources in a subdirectory called res,relative to the directory containing the
    native code library. Populate the directory with resources as described at Providing Resources on
    developer.android.com. When ADT packages the ANE file, it puts the resources in the Android-ARM/res directory
    of the resulting ANE package.
    When accessing a resource from the extension’s Java native code library, use the getResourceID() method in the
    FREContext class. Do not access the resources using the standard Android resource ID mechanism. For more
    information on the getResourceID() method, see “Method details” on page 125.
    The method getResourceId() takes a String parameter that is the resource name. To avoid resource name conflicts
    between extensions in an application, provide a unique name for each resource file in an extension. For example, prefix
    the resource name with the extension ID, creating a resource name such as
    com.sample.ext.MyExtension.myImage1.png.
    SO ..I follow they says to do.  OK ,i got an  ANE  successfull .  Then  ,i  Add the  ANE into my mobile project . And Click  "release"  button(or  debug ).
    THat  is the  funny  thing .I actually got an error message:
    java.lang.Exception:
    aapt tool failed:invalid resource directory name: D:\LocalProfile\Localtemp\8d438362-8178-429a-858f-715c1e176235\res/values-sw600dp
    invalid resource directory name: D:\LocalProfile\Localtemp\8d438362-8178-429a-858f-715c1e176235\res/values-sw720dp-land
              at com.adobe.flexide.multiplatform.android.launching.ADBLaunchHandler.doPackage(ADBLaunchHan dler.java:454)
              at com.adobe.flexide.multiplatform.android.launching.ADBLaunchHandler.launch(ADBLaunchHandle r.java:350)
    I've test it on windows 7 32bit + FB4.7+AIR3.7 SDK ,and i  also asked my  friend test it  on  Mac OS + FB4.7+3.6SDK  ....cann't package APK too. but error message is diffrent .
    I wonder if anyone of adobe  actually fully tested what they said . But I spent a few days checking my approach. And i responsible for my words.
    I'm tired of reporting BUG.No matter what happens, i  tell myself ,"it's product by adobe".

  • Adobe Air Auto Turned Off Smoothing?!!!!

    Hi,
    I am using Adobe Air to create a media player. To have better video quality, I have added video smoothing enabled. However, recently I installed it on an ATOM PC, the video playback is lagging due to the performance of PC hardware. But, during the video playback, the video seems to be displayed without smoothing applied.
    Here I want to ask is Adobe Air will automatically turn off video smoothing on certain condition? If so, how can I prevent it to auto turn off? Thanks.

    How about first blit your image to a small bitmapData, then draw it on a large bitmapData (9X larger)?
    Like,
    var small_bmd:BitmapData = new BitmapData(SMALL_WIDTH, SMALL_HEIGHT, false);
    var large_bmd:BitmapData = new BitmapData(SMALL_WIDTH * 9, SMALL_HEIGHT * 9, false);
    var bm:Bitmap = new Bitmap(large_bmd, PixelSnapping.NEVER, false);
    var blitRect:Rectangle = new Rectangle(0, 0, 9, 9);
    var i:uint, j:uint, blitColor:uint;
    small_bmd.draw(SOURCE_IMAGE);
    large_bmd.lock();
    for(j = 0; j < SMALL_HEIGHT; j++){
         for(i = 0; i < SMALL_WIDTH; i++){
              blitColor = small_bmd.getPixel(i, j);
              blitRect.x = i * 9;
              blitRect.y = j * 9;
              large_bmd.fillRect(blitRect, blitColor);
    large_bmd.unlock();
    Not sure if the code works or not, but hopefully this helps.

  • Adobe AIR stream publish breaks on iOS devices

    Hi All
    I am using Adobe Air 13.0 to upload a streaming video to Flash Media Server.
    This works fine on all Android devices, but on iOS devices (both iPad and iPhone) the publish stream breaks after several time (could be 10 seconds, could be 5 minutes).
    Here are my relevant code segments:
    private function CreateConnection():void
      netconn = new NetConnection();
      netconn.client = this;
      netconn.objectEncoding = flash.net.ObjectEncoding.AMF3;
      netconn.connect(rtmpPath);
      netconn.addEventListener("netStatus", netConnection_eventHandler);
    netStream = new NetStream(netconn, NetStream.CONNECT_TO_FMS); 
    metaSniffer=new Object();
    netStream.client=metaSniffer;
    metaSniffer.onMetaData=getMeta;
    netStream.addEventListener(NetStatusEvent.NET_STATUS,netConnection_eventHandler);
    netStream.attachCamera(cam);
    netStream.attachAudio(mic);
    netStream.publish(InterviewID, "record");
    Thanks,
    Koby.

    Hi All
    I am using Adobe Air 13.0 to upload a streaming video to Flash Media Server.
    This works fine on all Android devices, but on iOS devices (both iPad and iPhone) the publish stream breaks after several time (could be 10 seconds, could be 5 minutes).
    Here are my relevant code segments:
    private function CreateConnection():void
      netconn = new NetConnection();
      netconn.client = this;
      netconn.objectEncoding = flash.net.ObjectEncoding.AMF3;
      netconn.connect(rtmpPath);
      netconn.addEventListener("netStatus", netConnection_eventHandler);
    netStream = new NetStream(netconn, NetStream.CONNECT_TO_FMS); 
    metaSniffer=new Object();
    netStream.client=metaSniffer;
    metaSniffer.onMetaData=getMeta;
    netStream.addEventListener(NetStatusEvent.NET_STATUS,netConnection_eventHandler);
    netStream.attachCamera(cam);
    netStream.attachAudio(mic);
    netStream.publish(InterviewID, "record");
    Thanks,
    Koby.

Maybe you are looking for

  • Need some help in ARCHITECTURE level for upgrading SAP BW 3.5 to SAP BI 7.0

    HI all, I am a consultant in a small company, i am curently handling upgradation project i need some help in ARCHITECTURING this complete project, please share me your knowledge, like process flows what information i need to get from clients before s

  • When i try to open a pdf, i am told that i must sing the end users agreement. I cannot find out how.

    It tells me when i update the adobe reader that by checking install i am accepting the terms and agreement. However when i try to use the program i am told that i must go to the web site and accept the user agreement . I cannot find out where to do t

  • Getting Widescreen on IDVD

    Hello, I have a movie I made in FCE, which I've saved as a Quicktime file, which is the only option I've found to preserve my chapter markers for the movie I created. After watching a preview in IDVD I noticed the movie was 4:3 and not 16:9 which was

  • Simplest Windows solution to run Quicken and Quickbooks

    I need to figure out how to run Windows on either my Mac Pro (currently 10.6.8, but upgrading to Mountain Lion very soon) or an old MacBook Pro (late 2006 Intel, core 2 Duo) that I'm hoping I can get to run Lion on. The only software I plan to run on

  • N8 contacts update from Facebook

    I have a number of my contacts linked to their facebook profile, this was done from within the contact so I think before belle maybe? I've noticed that the profile pictures aren't updating, what's going on? Looking in the social app they're still lin