Example #1
0
        private void openButton_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog1 = new OpenFileDialog();

            openFileDialog1.RestoreDirectory = true;
            openFileDialog1.Filter = "All files (*.*)|*.*";
            if (openFileDialog1.ShowDialog() != DialogResult.OK)
                return;

            textBox1.Text = openFileDialog1.FileName;

            if (TeamTalk.GetMediaFileInfo(openFileDialog1.FileName, ref info))
            {
                if (info.audioFmt.nAudioFmt != AudioFileFormat.AFF_NONE)
                    audioLabel.Text = String.Format("{0} Hz, {1}", info.audioFmt.nSampleRate,
                    (info.audioFmt.nChannels == 1 ? "Mono" : "Stereo"));
                else
                    audioLabel.Text = "Unknown";

                if (info.videoFmt.picFourCC != FourCC.FOURCC_NONE)
                {
                    videoLabel.Text = String.Format("{0}x{1} FPS: {2}",
                        info.videoFmt.nWidth, info.videoFmt.nHeight, info.videoFmt.nFPS_Numerator);
                }
                else
                    videoLabel.Text = "Unknown";
            }
            else
            {
                info = new MediaFileInfo();
            }
        }
Example #2
0
 void ttclient_OnUserRecordMediaFile(int nUserID, MediaFileInfo mediafileinfo)
 {
     User user = new User();
     ttclient.GetUser(nUserID, ref user);
     switch (mediafileinfo.nStatus)
     {
         case MediaFileStatus.MFS_STARTED :
             AddStatusMessage("Start audio file for " + user.szNickname);
             break;
         case MediaFileStatus.MFS_FINISHED:
             AddStatusMessage("Finished audio file for " + user.szNickname);
             break;
         case MediaFileStatus.MFS_ERROR:
             AddStatusMessage("Error writing audio file for " + user.szNickname);
             break;
         case MediaFileStatus.MFS_ABORTED:
             AddStatusMessage("Aborted audio file for " + user.szNickname);
             break;
     }
 }
Example #3
0
 void ttclient_OnStreamMediaFile(MediaFileInfo mediafileinfo)
 {
     switch (mediafileinfo.nStatus)
     {
         case MediaFileStatus.MFS_ABORTED:
             AddStatusMessage("Aborted media file stream to channel");
             break;
         case MediaFileStatus.MFS_ERROR:
             AddStatusMessage("Error in media file stream to channel");
             break;
         case MediaFileStatus.MFS_FINISHED:
             AddStatusMessage("Finished media file stream to channel");
             break;
         case MediaFileStatus.MFS_STARTED:
             AddStatusMessage("Started media file stream to channel");
             break;
     }
     streamMediaFileToChannelToolStripMenuItem.Checked = mediafileinfo.nStatus == MediaFileStatus.MFS_STARTED;
 }
Example #4
0
 /**
  * @brief Get the properties of a media file.
  *
  * Use this function to determine the audio and video properties of
  * a media file, so the user knows what can be streamed.
  *
  * @see TeamTalk.StartStreamingMediaFileToChannel() */
 public static bool GetMediaFileInfo(string szMediaFilePath,
     ref MediaFileInfo lpMediaFileInfo)
 {
     return TTDLL.TT_GetMediaFileInfo(szMediaFilePath, ref lpMediaFileInfo);
 }
Example #5
0
        public void TestMediaStreamVideo()
        {
            const string USERNAME = "******", PASSWORD = "******"; string NICKNAME = "TeamTalk.NET - " + GetCurrentMethod();
            const UserRight USERRIGHTS = UserRight.USERRIGHT_TRANSMIT_MEDIAFILE_AUDIO | UserRight.USERRIGHT_TRANSMIT_MEDIAFILE_VIDEO;
            MakeUserAccount(GetCurrentMethod(), USERNAME, PASSWORD, USERRIGHTS);
            TeamTalk ttclient = NewClientInstance();

            InitSound(ttclient);
            Connect(ttclient);
            Login(ttclient, NICKNAME, USERNAME, PASSWORD);
            JoinRoot(ttclient);

            MediaFileInfo mf = new MediaFileInfo();

            Assert.IsTrue(TeamTalk.GetMediaFileInfo(MEDIAFILE_VIDEO, ref mf), "get media file info");
            Assert.IsTrue(mf.uDurationMSec > 0, "media file time");
            Assert.IsTrue(mf.audioFmt.nSampleRate > 0, "sample rate");
            Assert.IsTrue(mf.audioFmt.nChannels > 0, "channels");
            Assert.IsTrue(mf.videoFmt.nWidth > 0, "has video");

            VideoCodec vidcodec = new VideoCodec();
            vidcodec.nCodec = Codec.WEBM_VP8_CODEC;
            vidcodec.webm_vp8.nRcTargetBitrate = 0;

            Assert.IsTrue(ttclient.StartStreamingMediaFileToChannel(MEDIAFILE_VIDEO, vidcodec), "start stream media file");

            TTMessage msg = new TTMessage();
            User user = new User();
            bool video = false, audio = false;
            int videoframes = 0;
            while (ttclient.GetMessage(ref msg, 2000))
            {
                switch (msg.nClientEvent)
                {
                    case ClientEvent.CLIENTEVENT_USER_STATECHANGE:
                        user = (User)msg.DataToObject();
                        audio |= user.uUserState.HasFlag(UserState.USERSTATE_MEDIAFILE_AUDIO);
                        video |= user.uUserState.HasFlag(UserState.USERSTATE_MEDIAFILE_VIDEO);
                        break;
                    case ClientEvent.CLIENTEVENT_USER_MEDIAFILE_VIDEO:
                        {
                            Bitmap bmp;
                            VideoFrame f = ttclient.AcquireUserMediaVideoFrame(msg.nSource, out bmp);
                            videoframes++;
                            Assert.IsTrue(f.nWidth > 0, "acquired video frame");
                            Assert.IsTrue(ttclient.ReleaseUserMediaVideoFrame(f), "release video frame");
                            break;
                        }
                }
            }
            
            Assert.IsTrue(audio, "media audio playback");
            Assert.IsTrue(video, "media video playback");
            Assert.IsTrue(videoframes>0, "got video frames");

            UserStatistics stats = new UserStatistics();
            Assert.IsTrue(ttclient.GetUserStatistics(ttclient.GetMyUserID(), ref stats));
            Assert.IsTrue(stats.nMediaFileAudioPacketsRecv > 0);
            Assert.IsTrue(stats.nMediaFileVideoFramesRecv > 0);
            Assert.IsTrue(stats.nMediaFileVideoPacketsRecv > 0);

            Assert.IsTrue(ttclient.StopStreamingMediaFileToChannel(), "stop stream");
        }
Example #6
0
        public void TestMediaStreamAudio()
        {
            const string USERNAME = "******", PASSWORD = "******"; string NICKNAME = "TeamTalk.NET - " + GetCurrentMethod();
            const UserRight USERRIGHTS = UserRight.USERRIGHT_TRANSMIT_MEDIAFILE_AUDIO;
            MakeUserAccount(GetCurrentMethod(), USERNAME, PASSWORD, USERRIGHTS);
            TeamTalk ttclient = NewClientInstance();

            InitSound(ttclient);
            Connect(ttclient);
            Login(ttclient, NICKNAME, USERNAME, PASSWORD);
            JoinRoot(ttclient);

            MediaFileInfo mf = new MediaFileInfo();

            Assert.IsTrue(TeamTalk.GetMediaFileInfo(MEDIAFILE_AUDIO, ref mf), "get media file info");
            Assert.IsTrue(mf.uDurationMSec > 0, "media file time");
            Assert.IsTrue(mf.audioFmt.nSampleRate > 0, "sample rate");
            Assert.IsTrue(mf.audioFmt.nChannels > 0, "channels");
            
            VideoCodec vidcodec = new VideoCodec();
            vidcodec.nCodec = Codec.NO_CODEC;
            Assert.IsTrue(ttclient.StartStreamingMediaFileToChannel(MEDIAFILE_AUDIO, vidcodec), "start stream media file");

            TTMessage msg = new TTMessage();
            Assert.IsTrue(WaitForEvent(ttclient, ClientEvent.CLIENTEVENT_USER_STATECHANGE, DEF_WAIT, ref msg), "wait for state change, player launch");

            Assert.IsTrue(WaitForEvent(ttclient, ClientEvent.CLIENTEVENT_USER_STATECHANGE, DEF_WAIT, ref msg), "wait for state change, playback");
            User user = (User)msg.DataToObject();
            Assert.IsTrue(user.uUserState.HasFlag(UserState.USERSTATE_MEDIAFILE_AUDIO), "media playback");

            WaitForEvent(ttclient, ClientEvent.CLIENTEVENT_NONE, 5000);

            Assert.IsTrue(ttclient.SetUserAudioStreamBufferSize(ttclient.UserID, StreamType.STREAMTYPE_MEDIAFILE_AUDIO, 5000));

            Assert.IsTrue(ttclient.GetUser(ttclient.UserID, ref user));
            Assert.AreEqual(5000, user.nBufferMSecMediaFile);

            Assert.IsTrue(ttclient.StopStreamingMediaFileToChannel(), "stop stream");

            UserStatistics stats = new UserStatistics();
            Assert.IsTrue(ttclient.GetUserStatistics(ttclient.GetMyUserID(), ref stats));
            Assert.IsTrue(stats.nMediaFileAudioPacketsRecv > 0);

            Assert.IsFalse(ttclient.StartStreamingMediaFileToChannel("sdfsdf", vidcodec), "start stream invalid media file");
        }
Example #7
0
 static void ttclient_OnUserAudioFile(int nUserID, MediaFileInfo mediafileinfo)
 {
     User user = new User();
     if (ttclient.GetUser(nUserID, ref user))
     {
         switch (mediafileinfo.nStatus)
         {
             case MediaFileStatus.MFS_ERROR :
                 Console.WriteLine("Failed to store audio file for #{0} {1}.",
                     user.nUserID, user.szNickname);
                 break;
             case MediaFileStatus.MFS_STARTED :
                 Console.WriteLine("Storing audio from #{0} for {1} to file.",
                     user.nUserID, user.szNickname);
                 break;
             case MediaFileStatus.MFS_FINISHED :
                 Console.WriteLine("Finished storing audio from #{0} {1} to file.",
                     user.nUserID, user.szNickname);
                 break;
             case MediaFileStatus.MFS_ABORTED :
                 Console.WriteLine("Aborted storing audio from #{0} {1} to file.",
                     user.nUserID, user.szNickname);
                 break;
         }
     }
 }