Cirrus fallback to RTMP

We've deployed an application that uses Cirrus, but have found that a number of people are having issues connecting (I believe it's to do with their routers blocking the UDP packets). Is there a way we can get the application working for the users without changing settings on their router? If not, is there a service we can fall back on that speaks RTMP that can be implemented easily?
Cheers!

you can use Adobe Media Server (formerly Flash Media Server) for RTMP fallback.  you can run AMS on Amazon Web Services, too.
http://www.adobe.com/products/flash-media-server-family.html

Similar Messages

  • Is fallback to rtmfp via server a valid approach?

    Hi,
    We are in the process of moving from Cirrus to own FMS 5 server ( upgraded from 3.5 ).
    Would love to reap UDP related benefits even in case we have to fallback to server due to NAT issues.
    I see this work in general, however, one client is behind a symmetric NAT, hence cannot connect peer-to-peer, but also is he not able to connect to server using rtmfp.
    I tested the fallback by closing down UDP in the firewall between peers, but didn't test specifically with symmetric NAT routers.
    Is this expected behaviour?
    I didn't expect a relationship between the NAT hole punching capability and the use of UDP as a streaming protocol.
    The VideoMeeting sample app does fallback to rtmp, as we had it before ( on 3.5 ), be we were hoping for the lower UDP related latency by using rtmfp instead.
    Do you think this is a valid approach?
    The cc.rtmfp.net server show this result:
    Kind regards,
    Frans Maas

    Hi Mark,
    Thanks for your answer.
    I have read the RTMFP section in my Adapter.xml file forward and backward, but I have no clue how to configure the translation you refer to.
    Two specs that comes close are:
    <ForwardIHelloMode>rhello</ForwardIHelloMode>
    and
    <Core>
    <HostPortList>
    <HostPort>:19350-65535</HostPort>
    </HostPortList>
    </Core>
    Please hold my hand, Thanks!
    Frans

  • RTMFP standalone - RTMFP with RTMP fallback integration with FMS

    Hello,
    I have written a current application using stratus (cirrus) (peer to peer webcam connections). I was wondering what is involved technically and how time intensive it is in integrating flash media server into my current application to use RTMP as a fallback to RTMFP?
    Thanks,
    Rob

    Can you just check this link: http://help.adobe.com/en_US/flashmediaserver/configadmin/WSdb9a8c2ed4c02d261d76cb3412a40a4 90be-8000.html#WS829c643386b9152167c57eb5131f88a5f28-7fff and make sure you are doing or have set everything properly. If you have already done that - please ignore. Do let me know if you have already gone through this link and have set up everything properly and its still not working.
    Also have you checked http://cc.rtmfp.net/ - this is RTMFP connectivity checker - try it out - you will know if things are set up properly.

  • Im getting better p2p vs RTMP rates. Any changes made in cirrus last few days ?

    Hi,
    I have p2p application using cirrus and RTMP fallback for streaming.
    Last day Im getting much better p2p vs RTMP results, peer is connected in very large percent of the cases.
    Were there improvements in the system I can refer these changes to?
    Thanks,
    Gadi

    Hello! Could you tell me please, what percentage of users can use RTMFP connection in your project?

  • Implementing a fallback mechanism for RMTFP to RTMP

    Hi folks,
    So I've run into several of the oft-discussed NAT problems with an RTMFP app I've written in Flex. (borrowing heavily from the VideoPhone sample) What I'd like to do is write a fallback mechanism for the app to use RTMP if RTMFP fails. Now, both users have registered with stratus, but when I get to the placeCall function, even though it completes successfully for the caller, the callee never actually receives anything.
    Can someone point me in the right direction for discovering if the callee's media stream is actually active? Also, since the callee may have to "allow" flash to access their webcam is there a way of distinguishing between those 3 states? i.e. 1) not connected, no way. 2) just waiting on the callee to click allow and 3) yup, connected.
    I've also read that its possible to start the two connections simultaneously. (both RTMP and RTMFP) In that case presumably you would be sending twice as much data as needed and would cut the RTMP connection once you have detected the active RTMFP stream. Is this the correct approach in general terms?
    Any hints at all would be much appreciated.

    you can use Adobe Media Server (formerly Flash Media Server) for RTMP fallback.  you can run AMS on Amazon Web Services, too.
    http://www.adobe.com/products/flash-media-server-family.html

  • Cirrus has a bug for a long time

    [ Before start a discussion, I tell you that my English is not good. If you read kindly, I appreciate you ]
    I found a bug from Cirrus network connection in AS3.
    But I liked Cirrus very very much, because It needs no AIR Runtime for Server and has UTP Hole punching and etc...
    So I just waited and waited that the bug will fixed by ADOBE.
    I wanted it very very much.
    But a few years laters, the bug still exists.
    I explain the bug on this post.
    [Server] Netstream.publish('name')
    [Cient] Netsteram.play('name')
    This methos makes Cirrus connection between Two peers finally.
    I followed example code sincerely in Adobe document.
    It succeed.
    But It failed sometimes.( This is the bug! )
    ## FEATURE ##
    1. There is about 40% probability of fail to make a connection.
    2. There is no event of disconnection.
    3. There are no error messages and any no response of failure of connecting.
    4. If server's IP address and client's IP address are same, It succed 100% to make a connection.
    5. If a client fails to connect a server once, the client will never succed to connect same server even though It tries again and again.
       If the client has to connect the server, the client needs to refresh the program to gets a new Netconnection ID.
    6. If a client fails to connect a server, another clients have some probablities to connect to same server.
    I made many online games with Cirrus and a lot of users are playing with that.
    They need safe connecting method very much.
    Please help them and me.
    Thank you.

    1. P2P connections are not always possible depending on the configuration of NATs and firewalls.  for an explanation, please see this posting:
      https://forums.adobe.com/message/1064983#1064983
    to understand what's really happening, please see
      http://tools.ietf.org/html/rfc7016#section-3.5.1.6
    2, 3. there should be an event after a timeout, around 2 minutes.
    4. that's expected.  the "behind NAT" local addresses should be reachable on the same computer.
    5. that's expected.  the failure to connect is because a P2P path can't be found.  see answer 1 above.  however, you don't need to reload the SWF -- you just need to make a new NetConnection to get a new peer ID.
    6. that's expected, see answer 1 above.
    since P2P connections aren't always possible, you might need to provide a server for client-server-client fallback when P2P doesn't work.

  • FMS 4, Can't mak make NetStream to work remotely with RTMP

    Hi,
    We are working with FMS 4 server for a while for a 2 directions video application, and it works great with rtmp.
    We now want to use its rtmfp abilities after we used Cirrus for testing in the last few days and it also worked well.
    Locally - everything is working fine, but when we try the application on the remote server - we have some problems.
    Each side get the NetStatusEvent code "NetConnection.Connect.Success" and "NetStream.Publish.Start" when publish starts.
    However, when we are trying to play the stream, nothing happens. (Locally, we are getting "NetStream.Play.Start" and "NetStream.Play.Reset" - remotely: nothing).
    I did open ports 1024-65535 UDP on the server and since we are able to connect Cirrus, I believe the clients are fine.
    I also changed the Adaptor.xml HostPort element to
    <HostPort public="xxx.xxx.xxx.xxx:19350-65535">:19350-65535</HostPort> where xxx.xxx.xxx.xxx is the same public IP of our FMS Server as the one used by the client.
    Again, it is working beautifully both locally and with Cirrus. RTMP also works well with the remote server.
    What am I missing?

    Can you just check this link: http://help.adobe.com/en_US/flashmediaserver/configadmin/WSdb9a8c2ed4c02d261d76cb3412a40a4 90be-8000.html#WS829c643386b9152167c57eb5131f88a5f28-7fff and make sure you are doing or have set everything properly. If you have already done that - please ignore. Do let me know if you have already gone through this link and have set up everything properly and its still not working.
    Also have you checked http://cc.rtmfp.net/ - this is RTMFP connectivity checker - try it out - you will know if things are set up properly.

  • Detecting when to fall back to RTMP with NetGroup's

    I am currently trying to create a 4-way 'random' chat type thing, with a php central server and using NetGroup's to connect all the users together (and Cirrus), each publishing one stream and playing all the others. It works, unless the connection can not be established with a neighbour in the NetGroup. In this case from what I understand, there are actually two separate NetGroup's with the same name and properties. Both connections receive the NetGroup.Connection.Success, etc and neither receive the NetGroup.Neighbor.Connect as they aren't connected (which is what I am expecting), but this does make it difficult to a) detect that there are two separate NetGroup's and b) who is behind a firewall or other device that stops the connection from working.
    I guess the first one could be solved by waiting a certain time and then realising the new user isn't connected. However, this would complicate the server greatly, as it would have to check who is actually in the "real" NetGroup as well as dealing with situations were it's not sure who is or can. This would also not usually identify with two users wanting to be in the same group where the problem lies.
    The only worthwhile solution I can think of is a server that connects using RTMFP to the NetGroup and then uses RTMP to the clients who can't, however I don't think such a server exists (except maybe FMS Enterprise 4, but not sure and it's probably way too expensive) and obviously can't create one as RTMFP isn't open source. So would the only solution be to force all the users to send their webcam feeds to the RTMP server, then it would send the feeds of those not in the group to a user(s) in the group and then all the other feeds to those who aren't in the group?
    I'll state the questions now, as reading that back it's not all that obvious what I'm asking and sorry if some of these are obvious:
    1. Is there anyway to detect that two NetGroup's with the same name exist, apart from that the neighbourCount's etc don't tally after a certain amount of time?
    2. Is there anyway to detect which client(s) are unable to connect to NetGroup's so only they can be prevented from using the system, so that RTMP isn't necessary?
    3. Are there any servers that can connect to a RTMFP NetGroup almost like a normal user and then offer the content over RTMP to send the streams from the group to the clients who can't and the from the clients that can't into the group? If so, how expensive?
    4. Also, if trying to avoid the above route and just use a normal RTMP server. From the NetStream documentation, wouldn't I have to send the feeds for the webcams to all the users in the group, as no client could receive a NetStream over RTMP (or RTMFP for that matter) and then copy it to publish it to the NetGroup (or the RTMP server)? Seems like there are no methods to do this from the documentation

    I am currently trying to create a 4-way 'random' chat type thing, with a php central server and using NetGroup's to connect all the users together (and Cirrus), each publishing one stream and playing all the others. It works, unless the connection can not be established with a neighbour in the NetGroup. In this case from what I understand, there are actually two separate NetGroup's with the same name and properties. Both connections receive the NetGroup.Connection.Success, etc and neither receive the NetGroup.Neighbor.Connect as they aren't connected (which is what I am expecting), but this does make it difficult to a) detect that there are two separate NetGroup's and b) who is behind a firewall or other device that stops the connection from working.
    I guess the first one could be solved by waiting a certain time and then realising the new user isn't connected. However, this would complicate the server greatly, as it would have to check who is actually in the "real" NetGroup as well as dealing with situations were it's not sure who is or can. This would also not usually identify with two users wanting to be in the same group where the problem lies.
    The only worthwhile solution I can think of is a server that connects using RTMFP to the NetGroup and then uses RTMP to the clients who can't, however I don't think such a server exists (except maybe FMS Enterprise 4, but not sure and it's probably way too expensive) and obviously can't create one as RTMFP isn't open source. So would the only solution be to force all the users to send their webcam feeds to the RTMP server, then it would send the feeds of those not in the group to a user(s) in the group and then all the other feeds to those who aren't in the group?
    I'll state the questions now, as reading that back it's not all that obvious what I'm asking and sorry if some of these are obvious:
    1. Is there anyway to detect that two NetGroup's with the same name exist, apart from that the neighbourCount's etc don't tally after a certain amount of time?
    2. Is there anyway to detect which client(s) are unable to connect to NetGroup's so only they can be prevented from using the system, so that RTMP isn't necessary?
    3. Are there any servers that can connect to a RTMFP NetGroup almost like a normal user and then offer the content over RTMP to send the streams from the group to the clients who can't and the from the clients that can't into the group? If so, how expensive?
    4. Also, if trying to avoid the above route and just use a normal RTMP server. From the NetStream documentation, wouldn't I have to send the feeds for the webcams to all the users in the group, as no client could receive a NetStream over RTMP (or RTMFP for that matter) and then copy it to publish it to the NetGroup (or the RTMP server)? Seems like there are no methods to do this from the documentation

  • Adobe cirrus crashes after 30 minutes?

    Hi,
    I'm using adobe cirrus with a fallback to red5 for a videochatting website I have. It seems though that after 30 minutes, the video chat crashes and the user has to call again. Anyway to fix this?
    Thanks!

    1st, Premiere Pro questions go to http://forums.adobe.com/community/premiere
    2nd, what you need to provide when you get there PPro Information FAQ http://forums.adobe.com/message/4200840
    3rd, does your laptop have DUAL graphics adapters?
    -http://helpx.adobe.com/premiere-pro/kb/error---preludevideo-play-modules.html
    -http://forums.adobe.com/thread/1001579
    -Use BIOS http://forums.adobe.com/thread/1019004?tstart=0
    -link to why http://forums.adobe.com/message/4685328
    -http://www.anandtech.com/show/4839/mobile-gpu-faceoff-amd-dynamic-switchable-graphics-vs-n vidia-optimus-technology/2
    4th, For Windows, do NOT rely on Windows Update to have current driver information
    -you need to go direct to the vendor web site and check updates for yourself
    ATI Driver Autodetect http://support.amd.com/en-us/download/auto-detect-tool
    nVidia Driver Downloads http://www.nvidia.com/Download/index.aspx?lang=en-us
    Last... do not reply here... you need the Premiere Pro forum

  • Cirrus RTMFP traffic. Why?

    Hi,
    I've created a simple videochat app and have noticed there is some small traffic between a client machine and the Cirrus server. If it is P2P, why does app need to be connected to Cirrus during video call? What kind of data are transfered between the Cirrus and a client machine? I've tried to disable access to the Cirrus during a test video call and connection dropped. I thought the Cirrus is necessary only for the first time to connect clients, and its job is done. But my understanding of these things seems wrong. Could someone please explain how actually it works?
    Thank you.

    the traffic you're seeing between you and Cirrus is just keepalive pings, which keep any NAT/firewall translations/holes open and fresh.  this mechanism can also signal your application if (for whatever reason) your connection to the server is abruptly lost.  the keepalive mechanism is also leveraged to help Cirrus notice any IP address change your client might have (example: switching from wireless to wired) in a timely manner.
    your connection to the server must be kept up in order to make the semantics of the API and networking model make sense.  your peerID is only reachable with help from your server.  the NetConnection is where your RTMFP endpoint lives, and NetStreams and NetGroups operate over/within it.  closing the NetConnection destroys the network endpoint, so any resources using it must also be destroyed.  additionally, exactly the same thing happens if you close an RTMP NetConnection; we decided that maintaining consistency would make the most sense to developers.

  • How to Disable RTMP Locally?

    Hi all --
    I'm trying to test Flash's fallback-to-RTMPT functionality, and I'm having a hard time figuring out how Adobe expects me to do that.  I've set up an FMS instance, and I'm able to connect to it with an rtmpt:// url, which is great, but a number of my users won't be able to do that (because of firewalls, proxies, etc.), and it appears Flash handles that scenario by first attempting to connect over RTMP on port 1935, then RTMP on 443, then RTMP on 80, and finally RTMPT over port 80.
    This is great, because it means no code changes for us, but at the same time, it's not something we can figure out how to witness in action, since all connection attempts happen against the same host, and with a simple firewall app (e.g., Windows Firewall), it's only possible to disable outbound TCP (for example) to a given port, not RTMP specifically.  Since we want to be able to see the Flash player failing to connect on 1935, then failing on 443, then failing on 80 but ultimately succeeding over RTMPT on port 80 -- again, its published behavior -- we can't run tests against our player to be sure we understand how it'll react in that sitation.
    How does Adobe expect this functionality to be tested?  Is there a prescribed way of doing so (e.g., some Flash-config setting somewhere that says, "disable RTMP out, but enable RTMPT out"), or are we supposed to set up proxy servers to do all this manually?
    Thanks in advance --
    Chris

    Exception Details.
    oracle.apps.fnd.framework.OAException: Application: FND, Message Name: FND_GENERIC_MESSAGE. Tokens: MESSAGE = oracle.apps.jtf.cache.CacheLoaderNotFoundException; (Could not lookup message because there is no database connection) at oracle.apps.fnd.framework.OAException.wrapperException(OAException.java:888) at oracle.apps.fnd.framework.webui.OAPageErrorHandler.prepareException(OAPageErrorHandler.java:1064) at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:1794) at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:463) at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:384) at OA.jspService(OA.jsp:40) at com.orionserver.http.OrionHttpJspPage.service(OrionHttpJspPage.java:56) at oracle.jsp.runtimev2.JspPageTable.compileAndServe(JspPageTable.java:537) at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:272) at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:465) at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:379) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:727) at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:306) at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:767) at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:259) at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:106) at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:803) at java.lang.Thread.run(Thread.java:534)
    ## Detail 0 ##
    oracle.apps.jtf.cache.CacheLoaderNotFoundException at oracle.apps.jtf.cache.CacheManager.getInternal(CacheManager.java:3237) at oracle.apps.jtf.cache.CacheManager.get(CacheManager.java:3204) at oracle.apps.jtf.cache.CacheManager.get(CacheManager.java:3145) at

  • ISE 1.1.1 (Fallback to local Vlan if radius server is found to be dead) not working

    We have configured following commands on switch to fallback to local Vlan if both radius server (policy persona's) is found dead. For test purpose we shutdown both servers (policy persona's) but fallback didn't work. We have 3750 switch running image 12.2(55)SE6 having following configuration.
    We do not know whether we configured switch in proper way or do we need to modify it.
    aaa new-model
    aaa authentication dot1x default group radius
    aaa authorization network default group radius
    aaa authorization auth-proxy default group radius
    aaa accounting update periodic 5
    aaa accounting auth-proxy default start-stop group radius
    aaa accounting dot1x default start-stop group radius
    aaa accounting system default start-stop group radius
    aaa server radius dynamic-author
    client 10.10.10.10 server-key 7 12345678 (Policy Persona 1)
    client 10.10.10.11 server-key 7 12345678 (Policy Persona 2)
    server-key 7 12345678
    ip device tracking
    epm logging
    radius-server attribute 6 on-for-login-auth
    radius-server attribute 6 support-multiple
    radius-server attribute 8 include-in-access-req
    radius-server attribute 25 access-request include
    radius-server dead-criteria time 30 tries 3
    radius-server host 10.10.10.10 auth-port 1812 acct-port 1813 key 7 12345678 (Policy Persona 1)
    radius-server host 10.10.10.11 auth-port 1812 acct-port 1813 key 7 12345678 (Policy Persona 2)
    radius-server vsa send accounting
    radius-server vsa send authentication
    Port Configuration
    interface GigabitEthernet0/1
    switchport access vlan 305
    switchport mode access
    ip access-group ACL-DEFAULT in
    authentication event fail action next-method
    authentication event server dead action reinitialize vlan 305
    authentication event server alive action reinitialize
    authentication host-mode multi-auth
    authentication open
    authentication order mab dot1x
    authentication priority dot1x mab
    authentication port-control auto
    authentication periodic
    authentication timer reauthenticate server
    mab
    dot1x pae authenticator
    dot1x timeout tx-period 10
    spanning-tree portfast
    Please help....
    Thanks

    Tabish-
    The pre-auth ACL that you have on your port is used for what's called a "Low-Impact" mode type of setup. With Low-Impact mode you are allowing services defined in the pre-auth ACL until the user/devices is authenticated. Once authenticated the pre-auth ACL gets replaced with the dACL/authorization policy that you have defined in the authorization profile. As a result, it is not possible to use "fail-open" configuration with low-impact as there is nothing to replace that pre-auth ACL since your NAD device(s) are unavailable.
    If you want to use the "fail-open" features you will have to use the "High Securty/Closed Mode." In that mode you cannot utilize the pre-auth ACL and essentially only EPoL traffic is allowed on port until authenticated.
    For more info you should reference the TrustSec design guide located at:
    http://www.cisco.com/en/US/solutions/ns340/ns414/ns742/ns744/landing_DesignZone_TrustSec.html
    Thank you for rating!

  • FMS 3.5 says 'Bad network data': error in handling RTMP extended timestamps / chunkSize?

    Hello all,
    For a client, I am working on a project where a live RTMP stream is published to an Adobe FMS 3.5.6 server from a java application, using Red5 0.9.1 RTMPClient code.
    This works fine, until the timestamp becomes higher than 0xFFFFFF after 4.6 hours, and the RTMP extended timestamp field starts being used. I have already found: when the extended timestamp was written after the header, the last 4 bytes of the data were being cut off. I have fixed this locally, and now the data being sent seems to me to be conformant to the spec. However, FMS still throws an error message in the core log and then kills the connection from the Red5 client. Here is the error message:
    This is the error message:
    2011-06-03     14:28:02     13060     (e)2611029     Bad network data; terminating connection : chunkstream error:message length 11893407 is longerthan max rtmp packet length     -
    2011-06-03     14:28:02     13060     (e)2631029     Bad network data; terminating connection : (Adaptor: _defaultRoot_, VHost: _defaultVHost_, IP: 127.0.0.1, App: live/_definst_, Protocol: rtmp, Client: 5290168480216205379, Handle: 2147942405) : 05 FF FF FF 00 13 = 09 01 00 00 00 01 00 01 01 ' 01 00 00 00 00 00 13 4 09 0 00 00 01 ! 9A & L 0F FA F6 12 , B4 A6 CE H 8A AB DC G BB d k 1B 9F ) 13 13 D2 9A E5 t 8 B8 8D 94 ! 8A AE F6 AF } " U 0 D3 Q EF FF ~ 8D 97 D9 FF BE A3 F3 C9 97 o 9D # F9 7F h A4 F7 } / FB & F1 DC 9C BF   BD D3 E7 CA 97 FE E2 B9 E4 F7 9E 1A F6 BA } C9 w FC _ / / w FE n EF D7 P 9C F4 BE 82 8E F7 | BE 97 B4 BB D7 FE ED I / FB D1 93 9A F9 X \ 85 BD DD I E3 4 E8 M 13 D3 " ) BE A9 92 E5 83 D4 B4 12 DE D5 A3 E6 F4 k DE BF Q 3 A0 g r A4 f D9 BD w * } F7 r 8A S 2 . AB BD EE ^ l f AF E1 0B $ AF 9D D7 - BF E8 ! D3 } D3 i E3 B8 F2 M A8 " B1 A5 EF s ] A5 BC 96 E5 u e X q D2 F1 r F9 i 92 b EE Z d F9 * A6 BB FD 17 w 4 DD 3 o u EB ] ] EF FE B5 B1 0A F2 A0 DD FD B2 98 DF E8 e F6 CB FD 96 V % A5 D5 k ] FD w EF AF k v AA E8 ! 9F / w BE FA 9A _ E F2 D3 , ? 17 } AD 7 EC B3   } 07 B5 | z { { A5 = 11 90 CF BF ; 4 FE EF 95 F7 E7 DF B9 , AF z 91 CF C9 BD DE CB { F5 17 } F2 E5 D7 DF z E6 [ 96 > Y m 9F EB AF DD D8 E8 v B9 A8 E9 % A7 | 1 CF 8B D Z k N DF F8 N FA S R FE . ~ CB A 9 E1 ) 8F 8E BB EC c 6 13 F1 AC FD FD FC 8A F7 F3 K B9 FA ^ / A4 FC B9 AA F6 DE C2 [ 1A E c r B3 BF E5 EC B5 x 94 FD . A9 t I Q % EA EC DE | K FE z A4 97 F9 " 1 0F CA FB F5 F5 p 9E 99 3 - ; B8 F4 F1 FF t A3 EC BC # DE AC 91 13 19 o < 06 F5 FD 7F 7 _ $ D B t B5 0D 8A C1 C1 BA 0B FE DB B7 83 _ } BD z F7 CB { FC M A9 8D = D5 B1 < 85 = EF E1 ; BA H y FC BC B4 C A2 D9 ` e E4 94 H 5 13 ' 93 93 8E E C2 1C R 97 9 X B7 FF 10 9F { ) F1 CF AB AC ] EE H A2 DE D3 C5 m F6 K A2 A7 A2 89 D2 z EB DF 97 ^ k 9E 99 BB E7 B6 97 w { ~ + C7 B2 } FE ' C4 | B6 o H DD r A8 9F DC FF F9 Q b l 93 T B6 EE FF 11 j CD s P C F1 3 R I F8 D8 R 9D 93 AA D5 + DE FC BE " B9 E1 ` CB BD 0F F5 C7 AA w CF 8D p 9A F7 g f N FF 84 B7 K Q 93 g E1 - D3 s } w v AE 96 98 ED CF BA E9 2 . f 99 95 97 o 13 CA F7 s e $ F4 B5 15 C4 A8 DE M F7 w \ 8D 00 C6 C2 b D3 / 7 w F2 ' BF CD 89 FF > D7 FB BC A2 S N FB A5 CD AF D3 F9 9D DF AE B5 17 CF 9D B7 , B9 9 ^ 7F [ 93 84 F7 } _ EA DF u \ 99 Z t E CA M EF 7 " AD FE 92 9E n 7F EB D8 C { 99 8B 9E w H BF B1 | g 9F F3 FA E1 - E5 CB BB x CF p 8B D2 w v EF w FA E2 F7 s C5 AC $ FC B4 DB BE G E4 DC F0 A0 96 F3 ! t DC FF % A5 CB A4 ^ AB D2 BD E7 9A E ' 08 + AF U 17 EB 8A w A7 N E4 A5 x 93 12 _ - ; 09 DD DF m 11 BE w \ } BA D3 t BC D9 97 9B C5 7F D8 H F1 D 7 8A ^ FA n F0 B8 W E6 84 5 - 8 B5 h o C4 F7 83 P 88 CB AE m t BB L 95 A9 s 90 A2 Y o DF K _ / l D2 D1 C9 91 ' E4 BD / / D 97 m BB E7 14 93 % C5 ; DD CF D8 : ~ B5 4 F FA U F0 8F w w DC FD 83 FC 13 EF w p DA A5 07 _ * - 1D 14 9D D5 84 F E6 F0 FF E4 15 w n A5 9F DE d AE F5 " - f D2 AE 96 1F # FA F1 x C1 L DF l M 06 8A E4 z DB 17 BA l DA e 15 CD 85 86 1F 09 82 h ] C6 { E7 C5 AF Z C5 B0 83 v D9 03 FC / ~      -
    The message for which the hex dump is displayed, is a video message of size 4925 bytes. Below is the basic logging in my application:
    *** Event sent to RTMP connector: Video - ts: 16777473 length: 4925. Waiting time: -57937, event timestamp: 16777473
    14:28:02.045 [RtmpPublisher-workerThread] DEBUG o.r.s.s.consumer.ConnectionConsumer - Message timestamp: 16777473
    14:28:02.045 [RtmpPublisher-workerThread] DEBUG o.r.s.n.r.codec.RTMPProtocolEncoder - Channel id: 5
    14:28:02.045 [RtmpPublisher-workerThread] DEBUG o.r.s.n.r.codec.RTMPProtocolEncoder - Last ping time for connection: -1
    14:28:02.045 [RtmpPublisher-workerThread] DEBUG o.r.s.n.r.codec.RTMPProtocolEncoder - Client buffer duration: 0
    14:28:02.046 [RtmpPublisher-workerThread] DEBUG o.r.s.n.r.codec.RTMPProtocolEncoder - Packet timestamp: 16777473; tardiness: -30892; now: 1307104082045; message clock time: 1307104051152, dropLiveFuturefalse
    14:28:02.046 [RtmpPublisher-workerThread] DEBUG o.r.s.n.r.codec.RTMPProtocolEncoder - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!12b Wrote expanded timestamp field
    14:28:02.046 [NioProcessor-22] DEBUG o.r.server.net.rtmp.BaseRTMPHandler - Message sent
    I have captured the entire frame containing this message with wireshark, and annotated it a bit. You can find it here:
    http://pastebin.com/iVtphPgU
    The video message of 4925 bytes (hex 00 13 3D) is cut up into chunks of 1024 bytes (chunkSize 1024 set by Red5 client and sent to FMS). Indeed, after the 12-byte header and the 4-byte extended timestamp, there are 1024 bytes before the 1-byte header for the next chunk (hex C5). The chunks after that also contain 1024 bytes after the chunk header. This appears correct to me (though please correct me if I'm wrong).
    When we look at the error message in the core log, the hex dump displayed also contains 1024 bytes, but it starts from the beginning of the message header. The last 16 bytes of the message chunk itself are not shown.
    My question is this: is the hex dump in the error message always capped to 1024 bytes, or did FMS really read too little data?
    Something that may be of help, is the reported 'too long' message length 11893407. This corresponds to hex B5 7A 9F, which can also be found in the packet, namely at row 0c60 (I've annotated it as [b5 7a 9f]. This location is exactly 16 bytes after the start of the 4th chunk data, not really a place to look for timestamps.
    My assumptions during this bug hunting session were the following (would be nice if someone could validate these for me):
    - message length, as specified in the RTMP 12 and 8-bit headers, defines the total number of data bytes for the message, NOT including the header of the first message chunk, its extended timestamp field, or the 1-byte headers for subsequent chunks. The behaviour is the same whether or not the message has an extended timestamp.
    - chunk size, as set by the chunkSize message, defines the total number of data bytes for the chunk, not incuding the header or extended timestamp field. The behaviour is the same whether or not the message has an extended timestamp.
    I believe I've chased this problem as far as I can without having access to the FMS 3.5 code, or at least being able to crank up the debug logging to the per-message level. I realize it's a pretty detailed issue and a long shot, but being able to publish a stream continuously 24/7 is critical for the project.
    I would be very grateful if someone could have a look at this hex dump to see if the message itself is correct, and if so, to have a look at how FMS3.5.6 handles this.
    Don't hesitate to ask me for more info if it can help.
    Thanks in advance
    Davy Herben
    Solidity

    Hello,
    It took a bit longer than expected, but I have managed to create a minimal test application that will reproduce the error condition on all machines I've tested on. The application will simply read an H264 file and publish it to an FMS as a live stream. To hit the error condition faster, without having to wait 4.6 hours, the application will add a fixed offset to all timestamps before sending it to the FMS.
    I have created two files:
    http://www.solidity.be/publishtest.jar : Runnable java archive with all libraries built in
    http://www.solidity.be/publishtest.zip : Zip file containing sources and libraries
    You can run the jar as follows:
    java -jar publishtest.jar <inputFile> <server> <port> <application> <stream> <timestampOffset>
    - inputFile: path to an H264 input video file
    - server: hostname or IP of FMS server to publish to
    - port: port number to publish to (1935)
    - application: application to publish to (live)
    - stream: stream to publish to (output)
    - timestampOffset: nr of milliseconds to add to the timestamp of each event, in hexadecimal format. Putting FFFFFF here will cause the server to reject the connection immediately, while FFFF00 or FFF000 will allow the publishing to run for awhile before the FMS kills it
    Example of a complete command line:
    java -jar publishtest.jar /home/myuser/Desktop/movie.mp4 localhost 1935 live output FFF000
    Good luck with the bug hunting. Let me know if there is anything I can help you with.
    Kind regards,
    Davy Herben

  • Problems with RAC and XA: Fallback

    Hello,
    we are seing problems with RAC and XA (Tuxedo 11, DB 11.2), specifically encountering "ORA-24798: cannot resume the distributed transaction branch on another instance".
    The first scenario relates to fallback after a RAC node failure. There are two servers, S1 and S2. S1 makes an ATMI call to S2. Both servers are in the same Tuxedo group, using TMS_ORA. RAC is set up for failover (BASIC), no load balancing.
    The sequence is:
    - S1 and S2 are connected to the same RAC node n1. All is well.
    - RAC node n1 fails. S1, S2 and the TMS_ORA all fail over to RAC node n2. After the failover has happened, all is well.
    - RAC node n1 recovers. All is still well (as there is no automatic fallback).
    - S1 (or S2) is restarted (either intentionally or because of a crash). Since n1 is up again, S1 connects to n1. Now we get ORA-24798. Permanently.
    S1 is connected to n1 and S2 is connected to n2. Since both are in the same group, both use the same XA transaction branch. When called, S2 attempts to JOIN the transaction branch that S1 started. But the DB (11.2) does not allow the same branch to span more than one node. Hence the ORA-24798.
    This seems to be a severe limitation in the combination of Tuxedo, XA and RAC. It basically means we still have to use DTP services, even with Tuxedo 11 and DB 11.2. Or are we missing something?
    We could put S1 and S2 into different groups, but that seems to be inefficient, and not practical for a real application (10s of servers).
    I am extrapolating from this that RAC load balancing would also not work, as S1 and S2 could be connected to different RAC nodes.
    Roger

    Roger,
    When using an external transaction manager such as Tuxedo you should still declare Oracle services as DTP services when using Oracle Database 11g. The Tuxedo documentation is not clear about this. The relevant 11gR2 RAC documentation is at http://download.oracle.com/docs/cd/E11882_01/rac.112/e16795/hafeats.htm and states
    "An XA transaction can span Oracle RAC instances by default, allowing any application that uses the Oracle XA library to take full advantage of the Oracle RAC environment to enhance the availability and scalability of the application.
    "GTXn background processes support global (XA) transactions in an Oracle RAC environment. The GLOBAL_TXN_PROCESSES initialization parameter, which is set to 1 by default, specifies the initial number of GTXn background processes for each Oracle RAC instance. Use the default value for this parameter clusterwide to allow distributed transactions to span multiple Oracle RAC instances. Using the default value allows the units of work performed across these Oracle RAC instances to share resources and act as a single transaction (that is, the units of work are tightly coupled). It also allows 2PC requests to be sent to any node in the cluster.
    "Before Release 11.1, the way to achieve tight coupling in Oracle RAC was to use Distributed Transaction Processing (DTP) services, that is, services whose cardinality (one) ensured that all tightly-coupled branches landed on the same instance—regardless of whether load balancing was enabled. Tightly coupled XA transactions no longer require the special type of singleton services to be deployed on Oracle RAC databases if the XA application does not join or resume XA transaction branches. XA transactions are transparently supported on Oracle RAC databases with any type of service configuration.
    A"n external transaction manager, such as Oracle Services for Microsoft Transaction Server (OraMTS), coordinates DTP/XA transactions. However, an internal Oracle transaction manager coordinates distributed SQL transactions. Both DTP/XA and distributed SQL transactions must use the DTP service in Oracle RAC."
    This issue came up earlier this year in another newsgroup thread at https://forums.oracle.com/forums/thread.jspa?threadID=2165803
    Regards,
    Ed

  • How can i sync a RTMP audio and RTMP video?

    Hi,
    Im trying to make a player i as3 that allow me to play a  livestream RTMP video and audio.
    I use two NetStream, but i do not get to sync both.
    how can i do it
    Thanks.

    please, i need to do it, can someone help me?

Maybe you are looking for

  • How do I setup Active Directory and Group Policy on Windows Server 2012?

    I work for a school district that uses a Windows 2012 server with about 400 Windows 7 PCs and 150 Mac PCs. We are set up with Roaming Profiles on the PCs and would like to be able to setup Active Directory, Group Policy, and Roaming Profiles on our m

  • Windows 7 no load

    iTunes doesn't load on Windows 7 - - it "rolls back"  any hints?

  • Time machine won't back up after Maverick install

    Installed Maverick today on macbook pro, then have been unable to back up to Time Machine to my Western Digital 3TB drive.  Last back up was successful just before install earlier today.  Time Machine Error "Files can't be copied onto the backup disk

  • I can't seem to power off

    After charging, my new iphone 4 sometimes gets funky. the screen locks and if I tap an icon, a fast voice identifies the icon and nothing else. I've tried to both shut down and reset to no avail. What am I doing wrong? btw...63 yeas old and first i P

  • How do I find the URL?

    If I do an Aperture Web Page published to Mobile Me (not the Mobile Me Web Gallery feature - I'm talking about the web page from within Aperture, with "Stock" themes etc), how do I find the URL later? If I don't "Visit site now" upon publication and