Пример #1
0
  public static void main(String[] args) throws SdpParseException, SdpException {
    String sdpFields =
        "v=0\r\n"
            + "o=4855 13760799956958020 13760799956958020 IN IP4 166.35.224.216\r\n"
            + "s=nortelnetworks\r\n"
            + "p=+1 972 684 1000\r\n"
            + "c=IN IP4 166.35.224.216\r\n"
            + "t=0 0\r\n"
            + "m=audio 50006 RTP/AVP 0 8 4 18\r\n"
            + "a=rtpmap:0 PCMU/8000\r\n"
            + "a=rtpmap:8 PCMA/8000\r\n"
            + "a=rtpmap:4 G723/8000\r\n"
            + "a=rtpmap:18 G729A/8000\r\n"
            + "a=ptime:30\r\n";
    SdpFactory sdpFactory = new SdpFactory();
    SessionDescription sessionDescription = sdpFactory.createSessionDescription(sdpFields);

    System.out.println("sessionDescription = " + sessionDescription);
    Vector mediaDescriptions = sessionDescription.getMediaDescriptions(true);
    for (int i = 0; i < mediaDescriptions.size(); i++) {
      MediaDescription m = (MediaDescription) mediaDescriptions.elementAt(i);
      System.out.println("m = " + m.toString());
      Media media = m.getMedia();
      Vector formats = media.getMediaFormats(false);
      System.out.println("formats = " + formats);
    }
  }
Пример #2
0
 public MediaDestination getMediaDestination(SessionDescription sessionDescription)
     throws NoCodecException {
   InetAddress destAddress = sessionDescription.getIpAddress();
   List<MediaDescription> mediaDescriptions = sessionDescription.getMediaDescriptions();
   for (MediaDescription mediaDescription : mediaDescriptions) {
     if (RFC4566.MEDIA_AUDIO.equals(mediaDescription.getType())) {
       for (Codec offerCodec : mediaDescription.getCodecs()) {
         if (supportedCodecs.contains(offerCodec)) {
           String offerCodecName = offerCodec.getName();
           if (offerCodecName.equalsIgnoreCase(RFC3551.PCMU)
               || offerCodecName.equalsIgnoreCase(RFC3551.PCMA)) {
             int destPort = mediaDescription.getPort();
             if (mediaDescription.getIpAddress() != null) {
               destAddress = mediaDescription.getIpAddress();
             }
             MediaDestination mediaDestination = new MediaDestination();
             mediaDestination.setDestination(destAddress.getHostAddress());
             mediaDestination.setPort(destPort);
             mediaDestination.setCodec(offerCodec);
             return mediaDestination;
           }
         }
       }
     }
   }
   throw new NoCodecException();
 }
Пример #3
0
 public SessionDescription createSessionDescription(SessionDescription offer, int localRtpPort)
     throws IOException {
   SessionDescription sessionDescription = new SessionDescription();
   sessionDescription.setUsername("user1");
   sessionDescription.setId(random.nextInt(Integer.MAX_VALUE));
   sessionDescription.setVersion(random.nextInt(Integer.MAX_VALUE));
   Config config = userAgent.getConfig();
   InetAddress inetAddress = config.getPublicInetAddress();
   if (inetAddress == null) {
     inetAddress = config.getLocalInetAddress();
   }
   sessionDescription.setIpAddress(inetAddress);
   sessionDescription.setName("-");
   sessionDescription.setAttributes(new Hashtable<String, String>());
   List<Codec> codecs;
   if (offer == null) {
     codecs = supportedCodecs;
   } else {
     codecs = new ArrayList<Codec>();
     for (MediaDescription mediaDescription : offer.getMediaDescriptions()) {
       if (RFC4566.MEDIA_AUDIO.equals(mediaDescription.getType())) {
         for (Codec codec : mediaDescription.getCodecs()) {
           if (supportedCodecs.contains(codec)) {
             codecs.add(codec);
           }
         }
       }
     }
   }
   MediaDescription mediaDescription = new MediaDescription();
   Hashtable<String, String> attributes = new Hashtable<String, String>();
   attributes.put(RFC4566.ATTR_SENDRECV, "");
   mediaDescription.setAttributes(attributes);
   mediaDescription.setType(RFC4566.MEDIA_AUDIO);
   mediaDescription.setPort(localRtpPort);
   mediaDescription.setCodecs(codecs);
   List<MediaDescription> mediaDescriptions = new ArrayList<MediaDescription>();
   mediaDescriptions.add(mediaDescription);
   sessionDescription.setMediaDescriptions(mediaDescriptions);
   return sessionDescription;
 }