Record RTMFP Transmission

Hello guys, how are you? I'm developing an online meeting system with audio/video sharing, using Adobe Flex 4 and Flash Media Server 4. I'm using the RTMFP protocol to make the transmission of audio/video which increases considerably the performance. The trouble now is that i must record the audio/video transmitted, but i figured out that when using the RTMFP protocol the FMS doesn't operate in the channels. So, how could i make FMS record this channels?
Regards.

Hi Fernando,
First, I would like to say that, you have to install FMS4 on you machine "developer version" and create a DEVELOPER ID  from adobe site and that ID you will use for communication, and you have to create one more  connection, that should be RTMP protocol not RTMFP becouse RTMFP protocol don't have permission to record the video and with RTMP protocol you can record video with FMS4.
Thanks

Similar Messages

  • "NetStream.Codec.Error" record RTMFP

    I record RTMFP Stream. Use this code
    NetGroup ng
    application.recordStream[nick + "multicast"] = Stream.get("mp4:multicast-ingest" + nick +"_record" +".mp4");
    if ( application.recordStream[nick + "ingest"] != null )
              application.recordStream[nick + "ingest"].close();
    application.recordStream[nick + "ingest"] = ng.getMulticastStreamIngest(nick);
    application.recordStream[nick + "multicast"].record("append");
    application.recordStream[nick + "multicast"].playFromGroup(application.recordStream[nick + "ingest"]);
    Video published in H264 format.
    As a result, I get an error : "NetStream.Codec.Error".
    As a result, the sound recording was successful.
    But in place of the video image I see a black screen
    Help me, please/

    do you find the answer i too have problems to play recorded stream from rtmfp connection
    if you do please send me email: [email protected]

  • LCCS recording (RTMFP vs RTMP/S protocols)

    Hey everyone,
    So I've read through all of http://learn.adobe.com/wiki/display/lccs/LiveCycle+Collaboration+Service and been reading through the forums (even in the FMS side which maybe relevant http://forums.adobe.com/message/3345179#3345179 and http://forums.adobe.com/thread/736733 ).  Since LCCS recording is in beta it lacks the right docs for now.
    Could you guys validate/invalidate my assumptions about LCCS recording:
    Note: we are requiring Flash 10.0 and link against LCCS swc (flash 10.0) currently
    1) Setting <rtc:AdobeHSAuthenticator id="auth" userName="{ourUserName}" password="{ourPassword}" protocol="RTMFP" /> will do the following:
      a) cause a P2P multicasting ( which in turn uses UDP and no communication to LCCS service ) between client SWFs, which means no A/V steam recording.
    2) Setting <rtc:AdobeHSAuthenticator id="auth" userName="{ourUserName}" password="{ourPassword}" protocol="RTMPS" /> will do the following:
       a) cause a TCP through LCCS server which will record the A/V streams just fine.
    3) What would I do if we wanted to take advantage of P2P multicasting while recording the LCCS session?  Would we have to do something like: http://forums.adobe.com/message/3345179#3345179 ?
    4) According to this: http://learn.adobe.com/wiki/display/lccs/09+Peer-to-Peer+Data+Messaging+and+AV+Multicastin g we could do P2P multicasting with Flash 10.1
    a) Maybe I'm completely wrong in #1 and #2 and by requiring Flash10.1 for our app, I get recording working while using RTMFP protocol ?
    Thanks,
    Alex G.

    Hi Alex,
    Correct - for right now, when you're doing P2P streaming over RTMFP,
    recording doesn't work. In order to work around this, we've recommended
    either disabling RTMFP or setting StreamManager.maxP2PStreamPublish to 0. In
    the latter case, you'd still be using RTMFP and UDP, and so get most of the
    advantages.
      Answering each of your questions :
    1) Partially correct - RTMFP is required for P2P streaming, but not all
    RTMFP streaming is P2P. For example, once there are more than 3 recipients,
    we automatically switch to hub-and-spoke, since P2P becomes laborious for
    the publisher. You can control this threshold using the
    StreamManager.maxP2PStreamPublish.
    2) Correct. This is one temporary workaround - I'd prefer the 2nd
    workaround, using StreamManager.maxP2PStreamPublish = 0, which still allows
    the benefits of RTMFP without using P2P. In the next release, even if you're
    using RTMFP, once you turn recording on, it will similarly enforce that
    everyone stream over hub-and-spoke (without changing from RTMFP).
    3) For now, there won't be any way to do P2P streaming with recording
    enabled. In the future (likely quite later), we might have time to enable
    this, but it's pretty difficult (maybe not even possible), and it's not high
    in priority.
    4) It's important to separate these issues - RTMFP doesn't require P2P
    streaming. In fact, most of the benefits of RTMFP (primarily the fact that
    it's UDP-based) work over hub and spoke. What we've seen is that Multicast
    P2P (enabled in 10.1, and as opposed to direct P2P) is often not a great
    choice for conversations, since multicast introduces more latency than
    simply using hub-and-spoke.
      hope this helps,
       nigel

  • Recording RTMFP P2P stream by sending simultaneous stream to FMS (and other things...)

    Only just getting started on this whole domain of learning, so go easy!
    If I set up a P2P video/audio chat (similar to the sample VideoPhone thing on the Cirrus site), can I get the stream from both parties to send to a server at the same time so that I can record it? If so, would I have to use a FMS to stream it to and perform the recording (and if so which version could I get away with)? Are there any (preferably free, or just tutorialised) solutions for the recording side of things?
    Currently it seems like the only option for doing the P2P thing is to use Stratus/Cirrus unless I use FMS4 Enterprise. Is that correct? 
    Is there any example code out there that can help? Has anyone got any experience of how effective this kind of situation can be, in terms of quality of the stream and recording? Does any of this make sense?
    The Enterprise version of FMS is "Call for price": can anyone give me ball-park figures?
    Would appreciate any advice or pointers on these very general questions.

    can I get the stream from both parties to send to a server at the same time so that I can record it?
         I really do not know how one can do that - it would be like creating separate stream to server and replicating same data which you send to peer and i do not know how useful it would be - again it will increase the load on server which we are trying to avoid using P2P
    If so, would I have to use a FMS to stream it to and perform the recording (and if so which version could I get away with)?
         I think above answer takes care of this. I am not expert on P2P - so someone can correct me if i am completely off
    Are there any (preferably free, or just tutorialised) solutions for the recording side of things?
         Not something i am aware off.
    Currently it seems like the only option for doing the P2P thing is to use Stratus/Cirrus unless I use FMS4 Enterprise. Is that correct?
         Yes - as of now only FMS4 Enterprise edition supports P2P

  • Use field from file header record in detail records

    Hi,
    I receive a file with different records type (transmission header, file header, detail records, file footer). The fields in each record type are different. The transmission header tells me who the sender of the file is. I need this information, because I am merging data of various senders into one table.
    When processing the files, I need to split each file according to recordtype. (I can not use the same logic for each recordtype). How can I populate an extra column in the detail files with the value from the header record?
    What I tried so far is the following:
    - Populate a global variable using a script: This does not seem to work in the context of dataflows.
    - Create a 'join' between header record and detail record. However there are no fields I can join, so Data Services is not happy with that.
    - Store the field value from the header record in a DS (I chose a cache datastore, memory datastore did not work in batch scenario. I feel I can get this to work, but it seems quite an elaborate and expensive solution: First Filter the header record from the file, write the required field to the cache datastore, then read the same file but now filter the detail records, and join this with the datastore.
    Is there a better way to do this? I was hoping I could just use a script and read the first line of my file and move the value to a global variable....
    It would be great if someone could give me some tips...
    Many thanks,
    Jan.

    Hi Werner,
    I am not sure if I understand you correctly.
    I have declared $State as a global variable, not as a parameter.
    When I check my custom function I do get a warning that a variable is called which is not declared.
    I thought I did not have to worry about this as the variable does exist within the job where the function is called.
    It looks like I can not set a value to a global variable in a custom function.
    Is that correct, or is there something wrong with my syntax?
    Really the only reason I call a custom function is to set the global variable, so I could even make my function as simple as this:
    $State = 'NSW';
    Return 0;
    It still doesn't work...
    Any idea why?
    Thanks,
    Jan.

  • Credit memo IDOC generation !

    My requirement is When a credit memo is generated an idoc will be created.
    How to solve this !

    Maintain partner profiles for the partner in ur system using WE20 transaction. Maintain outbound parameters.Maintain relevant process code and outbound function modules
    Maintain relevant output types and maintain the  Transmission medium as "6" for the output type.
    Maintain relevant output condition records with transmission medum "6".
    Once credit memo is created the output condition record will determine in Credot memo...as per the prcoessing mode it will process.
    U can check the processing log to know the IDOC or go to WE02 transaction to check the IDOC number.
    This could be enough to send an outbound idoc.
    Thanks & regards,
    Shaik Hussain

  • HD Export Help :)

    hello...
    So, i am trying to export from Final Cut Pro to a PC. Here is the issue i am having.
    When i export the movie, it plays great on my mac as a quicktime file, in quicktime. Looks good, etc. When i put it in my work computer (which is a PC) and try to play it through Quicktime, the file is black. I get no picture (not sure about sound as the clip has no sound). Any help? Could it be quicktime on the PC that is not working? Why would i have a black picture on the PC?
    thanks!

    Of course.
    Well, does this PC have the ability to play HDV files? Tehre's no way for us to know from where we sit.
    from wiki:
    *HDV 1080i*
    *When interlaced video is watched on a progressive monitor without proper deinterlacing, it exhibits combing when there is movement between two fields of one frame.*
    *Sony adapted HDV, originally conceived as progressive-scan format by JVC, to interlaced video. Interlaced video has been a useful compromise for decades due to its ability to display motion smoothly while reducing recording and transmission bandwidth. Interlaced video is still being used in acquisition and broadcast, but interlaced display devices are being phased out. Modern flat-panel television sets that utilize plasma and LCD technology are inherently progressive. All modern computer monitors use progressive scanning as well.*
    *Before interlaced video is displayed on a progressive-scan device it must be converted to progressive using the process known as deinterlacing. Progressive-scan television sets employ built-in deinterlacing circuits to cope with interlaced broadcast signal, but computer video players rarely have this capability. As such, interlaced video may exhibit ghosting or combing artifacts when watched on a computer.*
    *Some HDV 1080i camcorders are capable of recording progressive video within an interlaced stream, provided that the frame rate does not exceed half of the field rate. The first HDV 1080i camcorder to implement such Progressive Scanning was the Sony HVR-V1.[9] To preserve compatibility with interlaced equipment the HVR-V1 records and outputs video in interlaced form. 25-frame/s and 30-frame/s progressive video is recorded on tape using progressive segmented frame (PsF) technique, while 24-frame/s recording employs 2-3 pulldown. The camcorder offers two variations of 24-frame/s recording: "24" and "24A". In "24" mode the camera ensures that there are no cadence breaks for a whole tape, this mode works better for watching video directly from the camera and for adding "film look" to interlaced video. In the "24A" mode the camera starts every clip on an A frame with timecode set to an even second margin.[10][11] Several editing tools, including Sony's own Vegas, are capable of processing 24A video as proper 24 frame/s progressive video.[12]*
    *Prior to the HVR-V1, Sony was offering Cineframe, essentially an interlaced-to-progressive converter, to simulate film-like motion. The conversion process involved blending and discarding fields, so vertical resolution of the resulting video suffered. Motion, produced in the 24-frame/s variant of Cineframe was too uneven for professional use.[13] The same or better film look effect can be achieved by converting regular interlaced video into progressive format using computer software.[14]*
    *In 2007 Canon commoditized progressive scanning, releasing the HV20 camcorder. The version for 50 Hz market featured PF25 mode with PsF-like recording, while the version for 60 Hz market had PF24 mode, which utilized 2-3 pulldown scheme. Progressive scan video recorded with the HV20 does not include flags necessary for performing automated film-mode deinterlacing, which is why most editing tools treat such video as interlaced.[15] The HV30, released in 2008, implemented additional PsF-like PF30 mode for 60 Hz markets. Output is performed via component, HDMI and FireWire in interlaced form.[16]*
    *Progressive scan video must be properly deinterlaced to achieve full vertical resolution and to avoid interlace artifacts. 25P and 30P video must be deinterlaced with "weave" or "no deinterlacing" algorithm, which means joining two fields of each frame together into one progressive frame. This operation can be done in most editing tools simply by changing project properties from interlaced to progressive. 24P video must go through film-mode deinterlacing also known as inverse telecine, which throws out judder frames and restores original 24-frame/s progressive video. Many editing tools cannot perform film-mode deinterlacing, requiring usage of a separate converter.*
    Compatibility
    Generally, HDV devices are capable of playing and recording in DV format, though this is not required by HDV specification. Many HDV devices manufactured by Sony are capable of playing and recording in DVCAM format. 1080-line devices generally are not compatible with 720-line devices, though some standalone tape decks accept both HDV flavors. Devices that can play and record native 1080p video can play and record native 1080i video, however the opposite is not always the case.
    HDV camcorders are usually offered with either 50 Hz or 60 Hz scanning rate depending on a region. Some models, like Canon XH-A1/G1 and third-generation Sony models such as HVR-S270, HVR-Z5 and HVR-Z7, can be made switchable for "world" capability.[32] Some JVC ProHD products like the GY-HD250U are world-capable out of the box.[33]
    HDV is closely related to XDCAM and to TOD families of recording formats, which use the same video encoding — MPEG-2. In particular, HDV 720p is equivalent to 19 Mbit/s XDCAM EX recording mode used in tapeless JVC ProHD camcorders, while HDV 1080i is equivalent to 25 Mbit/s XDCAM HD recording mode and to 1440CBR TOD recording mode.
    File-based media
    Type I CompactFlash card
    Since HDV was introduced, tapeless — or file-based — video recording formats such as DVCPRO P2, XDCAM and AVCHD have gained broad acceptance. The trend towards tapeless workflow was accelerated with increased capacity and reduced cost of non-linear storage solutions like hard disk drives, optical discs and solid-state memory.
    Recognizing the need for faster workflow, JVC, Sony and other manufacturers offer on-camera recording units, which convert an HDV camcorder into a hybrid system capable of recording both onto tape and onto file-based media. These recorders connect to a camcorder via FireWire and do not recompress HDV video, offering exactly the same image quality as if video were recorded on tape.
    JVC offers two FireStore recorders made by Focus Enhancements: the HDD-based DR-HD100[34] and MR-HD100[35] on-camera recorders; it also offers the SxS-based KA-MR100G[36] recorder. Canon offers Focus Enhancements FS-CF and FS-CF Pro models, which record onto CompactFlash memory cards.[37] Sony offers the HDD-based HVR-DR60[38] and the CompactFlash-based HVR-MRC1K[39] recorders.
    Recording time depends on capacity of media used. In particular, a 32 GB CompactFlash card is good for 72 minutes of HDV video. The HVR-DR60 can fit over two hours of high definition video, while the FireStore models with 100 GB disk drive can store almost four hours of footage. File-based recorders are invaluable for continuous recording that extends one hour.
    Distributing
    HDV video can be recorded or printed back to tape. Such tapes are often accepted by local television stations, though many organizations prefer the submissions to be delivered in higher-end format like Digital Betacam, HDCAM or D5 HD.[6][48] It is also possible to record M2TS file to any media that offers enough capacity, like a DVD disc, external HDD drive or a memory card.
    For consumer use, HDV-sourced video can be delivered on a Blu-ray Disc without re-encoding, can be converted to AVCHD and delivered on an AVCHD disc, or can be downconverted to DVD-Video.

  • Recording voice for radio transmission

    I want to record interviews for transmission on an FM radio station.  Someone has suggested I purchase iRig and a microphone to use with my iphone 4s.  Does anyone have experience of this please?

    iRig: cheap, works in just about any application, works with just about every iOS device, can be noisy. At its price, try it, not much to lose.

  • Publishing/recording a RTMFP audio chat

    Hi,
    4 people are voice-chatting together, using RTMFP through Stratus for better latency.
    A big amount of other people must to be able to listen at them at the same time - without speaking, only listening. Their conversation must also be recorded.
    I see two possible ways of doing this but both fail :
    1. Tell a FMS server to connect to the 4 peers to "listen" to the conversation, and then record + republish it with RTMP for the other listeners.
    However, it seems that the server-side NetStream class constructor cannot use the FarID argument. Because of this, is FMS just unable to connect and "listen" to a RTMFP/Stratus conversation? And even if it could, would FMS be able to publish a unique NetStream with the four voices mixed in it anyway? Sounds quite difficult to me.
    2. Tell one of the 4 peers to open a connection to the FMS, and then publish the conversation on it. But how to create a NetStream carrying the voices from the 4 people at once? It's easy to attach the microphone of the local peer, but how to mix on top of that the sound received from the other 3 RTMFP NetStreams?
    Any idea? Thank you.

    Hi Becky
    Personally, I'd consider just daisy chaining them together.
    Essentially you configure each one to open the next one in the
    series when it completes.
    Click
    here for information on exactly how to create the Daisy Chain.
    Cheers... Rick

  • How to play/record at same time and save image from video

    i started working on a project and that made my life hell although it was so simple. reason was that i couldnt find small/simple code to understand problems and no proper documents. . finally i have done that. and here is the code (without much complex code of interface). it shows vidoe, records a small part of it at start and takes a snapshot (no buttons or events involved). hope it might help someone starting to learn JMF.
    import java.io.*;
    import java.awt.*;
    import java.net.*;
    import java.awt.event.*;
    import java.util.Vector;
    import javax.media.*;
    import javax.media.rtp.*;
    import javax.media.rtp.event.*;
    import javax.media.rtp.rtcp.*;
    import javax.media.protocol.*;
    import javax.media.protocol.DataSource;
    import javax.media.format.AudioFormat;
    import javax.media.format.VideoFormat;
    import javax.media.Format;
    import javax.media.format.FormatChangeEvent;
    import javax.media.control.BufferControl;
    import javax.media.control.FrameGrabbingControl;
    import javax.imageio.ImageIO;
    import java.util.Date;
    import javax.media.util.BufferToImage;
    import java.awt.image.BufferedImage;
    * AVReceive2 to receive RTP transmission using the new RTP API.
    public class AVReceive2 implements ReceiveStreamListener, SessionListener,
    ControllerListener
    public static DataSource ds2, ds, ds3;
    String sessions[] = null;
    RTPManager mgrs[] = null;
    Vector playerWindows = null;
    boolean dataReceived = false;
    Object dataSync = new Object();
    public AVReceive2(String sessions[]) {
    this.sessions = sessions;
    public static DataSource getData() {
    return ds;
    protected boolean initialize() {
    try {
    InetAddress ipAddr;
    SessionAddress localAddr = new SessionAddress();
    SessionAddress destAddr;
    mgrs = new RTPManager[sessions.length];
    playerWindows = new Vector();
    SessionLabel session;
    // Open the RTP sessions.
    for (int i = 0; i < sessions.length; i++) {
    // Parse the session addresses.
    try {
    session = new SessionLabel(sessions);
    } catch (IllegalArgumentException e) {
    System.err.println("Failed to parse the session address given: " + sessions[i]);
    return false;
    System.err.println(" - Open RTP session for: addr: " + session.addr + " port: " + session.port + " ttl: " + session.ttl);
    mgrs[i] = (RTPManager) RTPManager.newInstance();
    mgrs[i].addSessionListener(this);
    mgrs[i].addReceiveStreamListener(this);
    ipAddr = InetAddress.getByName(session.addr);
    if( ipAddr.isMulticastAddress()) {
    // local and remote address pairs are identical:
    localAddr= new SessionAddress( ipAddr,
    session.port,
    session.ttl);
    destAddr = new SessionAddress( ipAddr,
    session.port,
    session.ttl);
    } else {
    localAddr= new SessionAddress( InetAddress.getLocalHost(),
    session.port);
    destAddr = new SessionAddress( ipAddr, session.port);
    mgrs[i].initialize( localAddr);
    // You can try out some other buffer size to see
    // if you can get better smoothness.
    BufferControl bc = (BufferControl)mgrs[i].getControl("javax.media.control.BufferControl");
    if (bc != null)
    bc.setBufferLength(350);
    mgrs[i].addTarget(destAddr);
    } catch (Exception e){
    System.err.println("Cannot create the RTP Session: " + e.getMessage());
    return false;
    // Wait for data to arrive before moving on.
    long then = System.currentTimeMillis();
    long waitingPeriod = 30000; // wait for a maximum of 30 secs.
    try{
    synchronized (dataSync) {
    while (!dataReceived &&
    System.currentTimeMillis() - then < waitingPeriod) {
    if (!dataReceived)
    System.err.println(" - Waiting for RTP data to arrive...");
    dataSync.wait(1000);
    } catch (Exception e) {}
    if (!dataReceived) {
    System.err.println("No RTP data was received.");
    close();
    return false;
    return true;
    public boolean isDone() {
    //return playerWindows.size() == 0;
    return false;
    * Close the players and the session managers.
    protected void close() {
    for (int i = 0; i < playerWindows.size(); i++) {
    try {
    ((PlayerWindow)playerWindows.elementAt(i)).close();
    } catch (Exception e) {}
    playerWindows.removeAllElements();
    // close the RTP session.
    for (int i = 0; i < mgrs.length; i++) {
    if (mgrs[i] != null) {
    mgrs[i].removeTargets( "Closing session from AVReceive2");
    mgrs[i].dispose();
    mgrs[i] = null;
    PlayerWindow find(Player p) {
    for (int i = 0; i < playerWindows.size(); i++) {
    PlayerWindow pw = (PlayerWindow)playerWindows.elementAt(i);
    if (pw.player == p)
    return pw;
    return null;
    PlayerWindow find(ReceiveStream strm) {
    for (int i = 0; i < playerWindows.size(); i++) {
    PlayerWindow pw = (PlayerWindow)playerWindows.elementAt(i);
    if (pw.stream == strm)
    return pw;
    return null;
    * SessionListener.
    public synchronized void update(SessionEvent evt) {
    if (evt instanceof NewParticipantEvent) {
    Participant p = ((NewParticipantEvent)evt).getParticipant();
    System.err.println(" - A new participant had just joined: " + p.getCNAME());
    * ReceiveStreamListener
    public synchronized void update( ReceiveStreamEvent evt) {
    RTPManager mgr = (RTPManager)evt.getSource();
    Participant participant = evt.getParticipant();     // could be null.
    ReceiveStream stream = evt.getReceiveStream(); // could be null.
    if (evt instanceof RemotePayloadChangeEvent) {
    System.err.println(" - Received an RTP PayloadChangeEvent.");
    System.err.println("Sorry, cannot handle payload change.");
    System.exit(0);
    else if (evt instanceof NewReceiveStreamEvent) {
    try {
    stream = ((NewReceiveStreamEvent)evt).getReceiveStream();
    //DataSource
    ds2 = stream.getDataSource(); // this original cant be used now
    // ds is used to play video
    ds = Manager.createCloneableDataSource(ds2);
    // ds3 is used to record video
    ds3 = ((SourceCloneable)ds).createClone();
    // Find out the formats.
    RTPControl ctl = (RTPControl)ds.getControl("javax.media.rtp.RTPControl");
    if (ctl != null){
    System.err.println(" - Recevied new RTP stream: " + ctl.getFormat());
    } else
    System.err.println(" - Recevied new RTP stream");
    if (participant == null)
    System.err.println(" The sender of this stream had yet to be identified.");
    else {
    System.err.println(" The stream comes from: " + participant.getCNAME());
    // create a player by passing datasource to the Media Manager
    Player p = javax.media.Manager.createPlayer(ds);
    if (p == null)
    return;
    p.addControllerListener(this);
    p.realize();
    PlayerWindow pw = new PlayerWindow(p, stream);
    playerWindows.addElement(pw);
    // Notify intialize() that a new stream had arrived.
    synchronized (dataSync) {
    dataReceived = true;
    dataSync.notifyAll();
    } catch (Exception e) {
    e.printStackTrace();
    return;
    else if (evt instanceof StreamMappedEvent) {
    if (stream != null && stream.getDataSource() != null) {
    DataSource ds = stream.getDataSource();
    // Find out the formats.
    RTPControl ctl = (RTPControl)ds.getControl("javax.media.rtp.RTPControl");
    System.err.println(" - The previously unidentified stream ");
    if (ctl != null)
    System.err.println(" " + ctl.getFormat());
    System.err.println(" had now been identified as sent by: " + participant.getCNAME());
    else if (evt instanceof ByeEvent) {
    System.err.println(" - Got \"bye\" from: " + participant.getCNAME());
    PlayerWindow pw = find(stream);
    if (pw != null) {
    pw.close();
    playerWindows.removeElement(pw);
    * ControllerListener for the Players.
    public synchronized void controllerUpdate(ControllerEvent ce) {
    Player p = (Player)ce.getSourceController();
    if (p == null)
    return;
    // Get this when the internal players are realized.
    if (ce instanceof RealizeCompleteEvent) {
    PlayerWindow pw = find(p);
    if (pw == null) {
    // Some strange happened.
    System.err.println("Internal error!");
    System.exit(-1);
    pw.initialize();
    pw.setVisible(true);
    p.start();
    try {
    // make it wait so that video can start otherwise image will be null. u must call this method with a button
    Thread.sleep(2500);
    catch (Exception e) {
    e.printStackTrace();
    // Grab a frame from the capture device
    FrameGrabbingControl frameGrabber = (FrameGrabbingControl) p.getControl(
    "javax.media.control.FrameGrabbingControl");
    Buffer buf = frameGrabber.grabFrame();
    // Convert frame to an buffered image so it can be processed and saved
    Image img = (new BufferToImage( (VideoFormat) buf.getFormat()).
    createImage(buf));
    BufferedImage buffImg = new BufferedImage(img.getWidth(null),
    img.getHeight(null),
    BufferedImage.TYPE_INT_RGB);
    Graphics2D g = buffImg.createGraphics();
    g.drawImage(img, null, null);
    // Overlay curent time on image
    g.setColor(Color.RED);
    g.setFont(new Font("Verdana", Font.BOLD, 12));
    g.drawString( (new Date()).toString(), 10, 25);
    try { // Save image to disk as PNG
    ImageIO.write(buffImg, "jpeg", new File("c:\\webcam.jpg"));
    catch (Exception e) {
    e.printStackTrace();
    // this will record the video for a few seconds. this should also be called properly by menu or buttons
    record(ds3);
    if (ce instanceof ControllerErrorEvent) {
    p.removeControllerListener(this);
    PlayerWindow pw = find(p);
    if (pw != null) {
    pw.close();
    playerWindows.removeElement(pw);
    System.err.println("AVReceive2 internal error: " + ce);
    * A utility class to parse the session addresses.
    class SessionLabel {
    public String addr = null;
    public int port;
    public int ttl = 1;
    SessionLabel(String session) throws IllegalArgumentException {
    int off;
    String portStr = null, ttlStr = null;
    if (session != null && session.length() > 0) {
    while (session.length() > 1 && session.charAt(0) == '/')
    session = session.substring(1);
    // Now see if there's a addr specified.
    off = session.indexOf('/');
    if (off == -1) {
    if (!session.equals(""))
    addr = session;
    } else {
    addr = session.substring(0, off);
    session = session.substring(off + 1);
    // Now see if there's a port specified
    off = session.indexOf('/');
    if (off == -1) {
    if (!session.equals(""))
    portStr = session;
    } else {
    portStr = session.substring(0, off);
    session = session.substring(off + 1);
    // Now see if there's a ttl specified
    off = session.indexOf('/');
    if (off == -1) {
    if (!session.equals(""))
    ttlStr = session;
    } else {
    ttlStr = session.substring(0, off);
    if (addr == null)
    throw new IllegalArgumentException();
    if (portStr != null) {
    try {
    Integer integer = Integer.valueOf(portStr);
    if (integer != null)
    port = integer.intValue();
    } catch (Throwable t) {
    throw new IllegalArgumentException();
    } else
    throw new IllegalArgumentException();
    if (ttlStr != null) {
    try {
    Integer integer = Integer.valueOf(ttlStr);
    if (integer != null)
    ttl = integer.intValue();
    } catch (Throwable t) {
    throw new IllegalArgumentException();
    * GUI classes for the Player.
    class PlayerWindow extends Frame {
    Player player;
    ReceiveStream stream;
    PlayerWindow(Player p, ReceiveStream strm) {
    player = p;
    stream = strm;
    public void initialize() {
    add(new PlayerPanel(player));
    public void close() {
    player.close();
    setVisible(false);
    dispose();
    public void addNotify() {
    super.addNotify();
    pack();
    * GUI classes for the Player.
    class PlayerPanel extends Panel {
    Component vc, cc;
    PlayerPanel(Player p) {
    setLayout(new BorderLayout());
    if ((vc = p.getVisualComponent()) != null)
    add("Center", vc);
    if ((cc = p.getControlPanelComponent()) != null)
    add("South", cc);
    public Dimension getPreferredSize() {
    int w = 0, h = 0;
    if (vc != null) {
    Dimension size = vc.getPreferredSize();
    w = size.width;
    h = size.height;
    if (cc != null) {
    Dimension size = cc.getPreferredSize();
    if (w == 0)
    w = size.width;
    h += size.height;
    if (w < 160)
    w = 160;
    return new Dimension(w, h);
    public void record(DataSource ds) {
    Format formats[] = new Format[1];
    formats[0] = new VideoFormat(VideoFormat.CINEPAK);
    FileTypeDescriptor outputType =
    new FileTypeDescriptor("video.x_msvideo");
    Processor p = null;
    try {
    p = Manager.createRealizedProcessor(new ProcessorModel(ds,formats,
    outputType));
    } catch (IOException e) {
    e.printStackTrace();
    } catch (NoProcessorException e) {
    e.printStackTrace();
    } catch (CannotRealizeException e) {
    e.printStackTrace();
    // get the output of the processor
    DataSource source = p.getDataOutput();
    // create a File protocol MediaLocator with the location
    // of the file to
    // which bits are to be written
    MediaLocator dest = new MediaLocator("file://vvv.mpeg");
    // create a datasink to do the file writing & open the
    // sink to make sure
    // we can write to it.
    DataSink filewriter = null;
    try {
    filewriter = Manager.createDataSink(source, dest);
    filewriter.open();
    } catch (NoDataSinkException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    } catch (SecurityException e) {
    e.printStackTrace();
    // now start the filewriter and processor
    try {
    filewriter.start();
    } catch (IOException e) {
    e.printStackTrace();
    p.start();
    try {
    Thread.sleep(10000);
    }catch(Exception e) { }
    p.close();
    filewriter.close();
    // stop and close the processor when done capturing...
    // close the datasink when EndOfStream event is received...
    public static void main(String argv[]) {
    //     if (argv.length == 0)
    //     prUsage();
    String[] a = new String[1];
    a[0] = ("192.168.0.45/4002");
    AVReceive2 avReceive = new AVReceive2(a);
    if (!avReceive.initialize()) {
    System.err.println("Failed to initialize the sessions.");
    System.exit(-1);
    // Check to see if AVReceive2 is done.
    try {
    while (!avReceive.isDone())
    Thread.sleep(1000);
    } catch (Exception e) {}
    System.err.println("Exiting AVReceive2");
    static void prUsage() {
    System.err.println("Usage: AVReceive2 <session> <session> ...");
    System.err.println(" <session>: <address>/<port>/<ttl>");
    //System.exit(0);
    }// end of AVReceive2
    so here the code. all messed up. coz i have just completed it and havent worked on interface or formatting this code properly (didnt have much time). but hope it will help. ask me if u have any questions. dont want others to have those basic problems that i had to face.

    u did a good effort for the JMF beginners i appreciate that....thanks i lot....i need you help in a project in
    which i have to connect to a d-link 950G IP camera and process that
    mpeg-4 stream (i know there are some problems in JMF and mpeg4) and show it over applet of JFrame.
    IP is 172.25.35.22
    Edited by: alchemist on Jul 16, 2008 6:09 AM

  • Status record 65 error in ale service

    HI Experts,
                   I have an issue when I tried to send a cost center idoc from one system to another. The company code for the record is 0093 in the sender system; however when the idoc gets created, in the idoc the value of the company code becomes SAH001. I dont know why this happens.
    This is the record to in the corresponing table table- which is to be sent from sender to Receiver. The company code ie company code field value is 0093 .
    The RFC/LS  connections have been done and checked. I am able to send the cost center group data correctly. While sending the cost center I am encountering the following error:-
    For an example
    Content of created Idoc in sender
    Company code field  |   SAH001
    The company code info is now SAH001. I wonder why ?
    So when we send the idoc to recceiver, we get the same company code and I get an error that company code doesn’t exist.
    Content of idoc in receiver
    Company code field  |   SAH001
    I want to display 0093.
    Please tel me what is error and how to rectify?
    Thanks & regards
    Mathi

    hI,
    Testing inbound idoc :
    Once you configured everything then goto WE19 Transaction :
    Give message type or idoc type and execute .
    now here you need to fill the Mandatory data in each segment,once you done then
    idoc->edit control record -> here you need to fill sender and receiver details.
    now you should get green color ,if you get red color then config issue.
    now click on start inbound -> now you will get idoc number.
    if you want to debug then click on inbound function module -> enter FM -> select call in debug mode and enter.
    now cursor will go debug mode
    http://www.photographybykevin.net/sap/idoc_overview.pdf
    Testing Outbound idoc :
    Once you done all configuration ..
    Let me say example like invoice ,you need to send invoice from SAP R/3 to other system.
    create invoice at VF01 -> Here customer should configure in Parter profile ,once you create invoice ,it creates the idoc.
    debugging Outbound IDOC :
    keep the break point in form routine above as i said
    Create invoice or invoice list
    when you maintain output type in invoice or invoice list -
    Now click on Further data ->select peridoc scheduling-> back and save it.
    Run RSNAST00 Program
    Output application : V3
    Object key : Invoice or invoice list number
    Output type : RD00 or LR00
    Medium = 6(EDI) ,A (ALE)
    when you execute the program and it will goto debugging.
    See the below status codes :
    See table TEDS1 for all status codes via SE16 in SAP. Outbound ALE Status Codes
    Successful Transmission:
    03 - Successful outbound transmission
    12 - Dispatch OK
    IDoc being processed:
    01 - IDoc created
    30 - IDoc ready for dispatch (ALE service) (Program RSEOUT00 needs to be executed)
    ALE Error Messages:
    02 - Error passing data to port
    04 - Error within control information on EDI subsystem
    05 - Error during translation
    25 - Processing despite syntax errors (outbound)
    29 - Error in ALE service
    32 - Resubmit edited intermediate document (DO NOT USE)
    Syntax Error Messages:
    26 - Error during syntax check of IDoc (outbound) Inbound ALE Status Codes
    IDoc Processed Successfully:
    50 - IDoc added
    53 - Successful posting
    IDoc ready for processing:
    64 - IDoc ready to be passed to application. The IDoc will be passed to the application by program RBDAPP01.
    Errors in IDoc Processing:
    51 - Error - application document not posted
    56 - IDoc with errors added (You should never see this error code)
    60 - Error during syntax check of IDoc (inbound)
    61 - Processing despite syntax error (inbound)
    63 - Error passing IDoc to application
    65 - Error in ALE service - indicates partner profiles are incorrect
    69 - IDoc was edited
    Regards,
    Nagaraj

  • Output Determination - Transmission medium 5

    Hi All,
    I have a requirement where I need to send a mail to external e-mail address after PGI. I used transmission medium 8 with output type and attached my own program to it to send a mail. which is working fine.
    I was wondering if there is any other way where it can be done using SAP standard output type. I can see transmission medium 5 but not able to make out what is the relevance of it? I would appreciate if anyone can guide me if transmisson meduim 5 can be used in current scenerio and if there is any benefit of using it.
    Thanks in Advance,
    Gagan

    I recently looked into the transmission medium 5 and this is what I got from it.
    Transmission medium 5 can be used to send sapscript documents to external e-mail accounts.  In my situation I was setting this up for a Sales Document Output. To get this to work, I needed to make sure the sold-to customer(XD02) has an e-mail address setup and the user-id issuing the output must also have an e-mail address attached to the user's master record(SU01).  The customer receives the e-mail with the sapscript document as a PDF attachment.  The subject of the e-mail had the sales document number, but I'm not sure if there is a way to change the subject or add text to the body of the e-mail.
    Hope this helps,
    Jerrod Baldauf

  • Disk Utility and fsck report 'missing thread records' and can't repair.

    Hello,
    What first made me realise there was a problem with my iMac was that when I tried to update a application it failed. I then manually download the .dmg of the update and tried replaced the app (Transmission 1.82 being that app in question). This failed, OS X claiming that it could not replace the older version (1.81). I then tried copying the file to the desktop where OS X claimed that there was already a copy of the application and so left a corrupted file on my desktop. This also happened when i attempted to move and copy a couple of pages documents and movie files around. I decided the best thing to do at this point was to reboot my computer; OS X decided it needed to install a couple of security updates at this point. This installation failed.
    My iMac booted up, but only after a progress bar has appeared under the Apple logo and spinner and has done its thing (From what I've read this means that OS X is trying its best to resolve some sort of errors). This happens upon every boot.
    This made me think that something must be going on with the file system of my Mac so I ran all the tests in Disk Utility. Permissions repair ran fine and fixed a few issues, but when I verified the disk this is what it reported:
    "Verifying volume “Macintosh HD”
    Performing live verification.
    Checking Journaled HFS Plus volume.
    Checking extents overflow file.
    Checking catalog file.
    Missing thread record (id = 2045563)
    Missing thread record (id = 2096282)
    Keys out of order
    The volume Macintosh HD was found corrupt and needs to be repaired.
    Error: This disk needs to be repaired. Start up your computer with another disk (such as your Mac OS X installation disc), and then use Disk Utility to repair this disk."
    I booted up from the DVD and tried to repair; this failed. Next I tried using fsck in single user mode; this also failed. Upon rebooting again and waiting for the progress bar to fill I was able to move files around and update Transmission without issue. Disk Utility still reports the same error.
    If I boot into Windows Vista everything works perfectly; as of yet I haven't got around to installing the new Boot Camp update for Windows 7 support incase that changes anything. When running the diagnostic tool on the Windows Vista DVD it reports that everything is fine for Windows.
    I really am at a loss for what to do next. All my data is backed up by Time Machine onto a Time Capsule as well as manually onto a FW external. I also made a clone of the Windows partition using the free app Winclone. Does anyone know anything I can do to fix this problem?
    Thanks so much,
    Sam.

    I have been experiencing exactly the same problem here with my MacPro. Apple replaced the hard disk because it was reporting bad sectors. However even with the replacement hard disk I'm experiencing the "missing thread" issue again. I'm guessing its either a software issue that keeps recurring or a fundamental hardware issue. Is the disk controller part of the hard disk or the motherboard? I've never had hard disk problems like this before.
    Here's my Disk Utility report from earlier today:
    Checking Journaled HFS Plus volume.
    Checking extents overflow file.
    Checking catalog file.
    Missing thread record (id = 1067066)
    Missing thread record (id = 1111528)
    Missing thread record (id = 1196845)
    Missing thread record (id = 1200621)
    Missing thread record (id = 1260154)
    Missing thread record (id = 1277166)
    Missing thread record (id = 1285010)
    Missing thread record (id = 1297257)
    Missing thread record (id = 1316679)
    Missing thread record (id = 1437800)
    Incorrect number of thread records
    Checking multi-linked files.
    Checking catalog hierarchy.
    Invalid volume directory count
    (It should be 155085 instead of 155095)
    Checking extended attributes file.
    Checking volume bitmap.
    Checking volume information.
    Repairing volume.
    Missing directory record (id = 1437800)
    Missing directory record (id = 1316679)
    Missing directory record (id = 1297257)
    Missing directory record (id = 1285010)
    Missing directory record (id = 1277166)
    Missing directory record (id = 1260154)
    Missing directory record (id = 1200621)
    Missing directory record (id = 1196845)
    Missing directory record (id = 1111528)
    Missing directory record (id = 1067066)
    Look for missing items in lost+found directory.
    Rechecking volume.
    Checking Journaled HFS Plus volume.
    Checking extents overflow file.
    Checking catalog file.
    Checking multi-linked files.
    Checking catalog hierarchy.
    Checking extended attributes file.
    Checking volume bitmap.
    Checking volume information.
    Invalid volume directory count
    (It should be 155106 instead of 155096)
    Repairing volume.
    Rechecking volume.
    Checking Journaled HFS Plus volume.
    Checking extents overflow file.
    Checking catalog file.
    Checking multi-linked files.
    Checking catalog hierarchy.
    Checking extended attributes file.
    Checking volume bitmap.
    Checking volume information.
    The volume MacHD was repaired successfully.

  • Short dump error when extracting delta records from R/3

    I am working on BW 3.5 and I am facing some short dump error when extracting delta records from the r/3 to BW.
    Below is the error message
    Kindly do the needful ASAP.
    Job started
    Step 001 started (program SBIE0001, variant &0000000024277, user ID BWREMOTE)
    Asynchronous transmission of info IDoc 2 in task 0001 (0 parallel tasks)
    DATASOURCE = 0ISCM_PAYMENT_01
             Current Values for Selected Profile Parameters               *
    abap/heap_area_nondia......... 2000000000                              *
    abap/heap_area_total.......... 2000000000                              *
    abap/heaplimit................ 40000000                                *
    zcsa/installed_languages...... DE                                      *
    zcsa/system_language.......... E                                       *
    ztta/max_memreq_MB............ 2047                                    *
    ztta/roll_area................ 6500000                                 *
    ztta/roll_extension........... 2000000000                              *
    2,454 LUWs confirmed and 2,454 LUWs to be deleted with function module RSC2_QOUT_CONFIRM_DAT
    ABAP/4 processor: MESSAGE_TYPE_X
    Job cancelled

    Hi,
    I look at the transaction ST22 to see which type of error has given you. Take a look at the notes to correct the error.
    Another option is to look at OSS notes, because the error is giving you a standard extractor.
    Greetings,

  • Oracle Account Receivables Lockbox Error, No ITEM NUM on PAYMENT record type.

    Hi,
    For "Process Lockbox" program. The program completes normally, but receipts are not created and I am getting below error in log file:-  
    "AR-ARLFMT: No ITEM NUM on PAYMENT record type."
    This error message is similar to error message mentioned in note id (Troubleshooting Known Issues In Lockbox (Doc ID 1366298.1)) :-
    2.10. Lockbox ends with error: "AR-ARLFMT: No PAYMENT NUM on PAYMENT record type"
    Symptoms
    You are trying to run lockbox and receive this error message in the log file:
    AR-ARLFMT: No PAYMENT NUM on PAYMENT record type.
    Your lockbox interface program has completed successfully, however,there is No Data Found in the AR_PAYMENTS_INTERFACE table.
    Solution
    Responsibility: Receivables Manager
    Navigation: Setup > Receipts > Lockboxes > Transmission Formats
    For the Transmission Format name that you are using, make sure that there is a 'Transmission Record' defined and that there is a Transmission Field with a Field Type of  'Record Identifier' defined.
      Make sure to include the check number in Transmission Format and Control file
    and item number is:-
    Item Number: A sequence number that your bank assigns to a specific payment. This number associates an invoice with a receipt.
    I am passing item number, but still I am getting this error.
    Can anybody please help.
    Thanks in advance.
    Regards
    Gagan Garg

    Hi,
    For "Process Lockbox" program. The program completes normally, but receipts are not created and I am getting below error in log file:-  
    "AR-ARLFMT: No ITEM NUM on PAYMENT record type."
    This error message is similar to error message mentioned in note id (Troubleshooting Known Issues In Lockbox (Doc ID 1366298.1)) :-
    2.10. Lockbox ends with error: "AR-ARLFMT: No PAYMENT NUM on PAYMENT record type"
    Symptoms
    You are trying to run lockbox and receive this error message in the log file:
    AR-ARLFMT: No PAYMENT NUM on PAYMENT record type.
    Your lockbox interface program has completed successfully, however,there is No Data Found in the AR_PAYMENTS_INTERFACE table.
    Solution
    Responsibility: Receivables Manager
    Navigation: Setup > Receipts > Lockboxes > Transmission Formats
    For the Transmission Format name that you are using, make sure that there is a 'Transmission Record' defined and that there is a Transmission Field with a Field Type of  'Record Identifier' defined.
      Make sure to include the check number in Transmission Format and Control file
    and item number is:-
    Item Number: A sequence number that your bank assigns to a specific payment. This number associates an invoice with a receipt.
    I am passing item number, but still I am getting this error.
    Can anybody please help.
    Thanks in advance.
    Regards
    Gagan Garg

Maybe you are looking for

  • SAX Ouptut non XML Compliant

    I am doing a very simple XSLT transformation, here is the reduced version of the styleshet: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">      <xsl:output method="xml" version="

  • Making CUPC the default Windows SIP Application

    Is it possible to make CUPC the default application when clicking a sip: link? For example, right now I have XLite configured to automatically dial any time a "sip:XXXXXXX" link is clicked. In the registry it is pointed to "C:\Program Files\CounterPa

  • Aurasma Native Extension for AIR

    I'm wondering if anyone can help. Aurasma (the Augmented Reality system) supplies a kernel and XCode/Android template files for including their app within your own. Basically, they provide and interface and a library (.a file) so that you can include

  • Edit Using Photoshop CS4

    I want to edit a .jpg file with PS4 from Lightroom 2.  I have set the external edit preferences to create a PSD/AdobeRGB color space file.  I select the photo in LM and select Edit in PS and select edit a copy.  PS opens the new file as a .jpg and de

  • Creating Colored Bullets w/blk text

    I am so frustrated, and really hope someone can help me. Back when I was using CS2, I created a template for our newsletter.  Now, due to new branding, I need to change the colors of the bullets that are used within the document.  I created a paragra