コード例 #1
0
ファイル: Player.cs プロジェクト: JustOxlamon/TwoRatChat
        public bool PlayUri(string RadioUri)
        {
            try {
                lock (LockObject) {
                    if (TempUpPlayer != null)
                    {
                        lock (TempUpPlayer) {
                            TempUpPlayer.OnStartPlay     -= TempUpPlayer_OnStartPlay;
                            TempUpPlayer.OnStoped        -= TempUpPlayer_OnStoped;
                            TempUpPlayer.OnNewTrack      -= TempUpPlayer_OnNewTrack;
                            TempUpPlayer.OnError         -= TempUpPlayer_OnError;
                            TempUpPlayer.OnFftCalculated -= TempUpPlayer_OnFftCalculated;
                            TempUpPlayer.Stop();
                        }
                    }

                    TempUpPlayer                  = new StreamPlayer();
                    TempUpPlayer.OnStartPlay     += TempUpPlayer_OnStartPlay;
                    TempUpPlayer.OnStoped        += TempUpPlayer_OnStoped;
                    TempUpPlayer.OnNewTrack      += TempUpPlayer_OnNewTrack;
                    TempUpPlayer.OnError         += TempUpPlayer_OnError;
                    TempUpPlayer.OnFftCalculated += TempUpPlayer_OnFftCalculated;
                    TempUpPlayer.Volume           = MasterVolume;
                    TempUpPlayer.Play(RadioUri);
                    IsPlaying = true;
                }

                return(true);
            } catch (Exception e) {
                // Console.WriteLine(e.Message);
                return(false);
            }
        }
コード例 #2
0
        public void PlayRadio(string url)
        {
            if (_oldPlayer != null)
            {
                _oldPlayer.VolumeDownAndStop();
                _oldPlayer = null;
            }

            if (!string.IsNullOrEmpty(url))
            {
                _oldPlayer = _temp;

                _temp              = new StreamPlayer(this);
                _temp.OnError     += _temp_OnError;
                _temp.OnStartPlay += _temp_OnStartPlay;
                _temp.OnStoped    += _temp_OnStoped;
                ShoutcastStream s = new ShoutcastStream(url);
                s.StreamTitleChanged += (a, b) => {
                    if (OnTrack != null)
                    {
                        OnTrack(((ShoutcastStream)a).StreamTitle);
                    }
                };
                _temp.Play(s);

                //OnTrack
            }
            _radioUrl = url;
        }
コード例 #3
0
ファイル: Player.cs プロジェクト: JustOxlamon/TwoRatChat
        void TempUpPlayer_OnError(StreamPlayer obj)
        {
            lock (LockObject) {
                if (VolumeDownPlayer == null)
                {
                    if (VolumeUpPlayer != null)
                    {
                        VolumeDownPlayer = VolumeUpPlayer;
                        VolumeDownPlayer.VolumeDown();
                    }
                }
                else
                {
                    if (VolumeUpPlayer != null)
                    {
                        VolumeUpPlayer.Stop();
                        //VolumeUpPlayer.Dispose();
                        VolumeUpPlayer = null;
                    }
                }

                VolumeUpPlayer = null;
                TempUpPlayer   = null;
            }

            IsPlaying = false;

            if (OnError != null)
            {
                OnError();
            }
        }
コード例 #4
0
ファイル: Player.cs プロジェクト: JustOxlamon/TwoRatChat
 void TempUpPlayer_OnNewTrack(StreamPlayer arg1, TrackInfo arg2)
 {
     if (OnTrack != null)
     {
         OnTrack(arg2);
     }
 }
コード例 #5
0
 private void _filePlayer_OnStartPlay(StreamPlayer obj)
 {
     lock ( _lockObject ) {
         StopRadio();
         obj.VolumeUp();
     }
 }
コード例 #6
0
            public static StreamPlayer Create(MusicStream Wave)
            {
                var Return = new StreamPlayer();

                Return.Init(Wave);
                return(Return);
            }
コード例 #7
0
ファイル: Player.cs プロジェクト: JustOxlamon/TwoRatChat
        void TempUpPlayer_OnStartPlay(StreamPlayer obj)
        {
            lock (LockObject) {
                if (VolumeDownPlayer == null)
                {
                    if (VolumeUpPlayer != null)
                    {
                        VolumeDownPlayer = VolumeUpPlayer;
                        VolumeDownPlayer.VolumeDown();
                    }
                }
                else
                {
                    if (VolumeUpPlayer != null)
                    {
                        VolumeUpPlayer.Stop();
                        //VolumeUpPlayer.Dispose();
                        VolumeUpPlayer = null;
                    }
                }

                VolumeUpPlayer = obj;
                VolumeUpPlayer.VolumeUp();
                TempUpPlayer = null;
            }

            if (OnStart != null)
            {
                OnStart();
            }
        }
コード例 #8
0
 /// <summary>
 /// 关闭并删除一个Session
 /// </summary>
 /// <param name="session"></param>
 public static void DeleteSession(ref StreamPlayer session)
 {
     session.DestructorStreamPlayer();
     Native.Invoke <StreamDecoder.DeleteSession>(StreamDecoder.streamDecoder_dll, session.session);
     session.session = IntPtr.Zero;
     session         = null;
 }
コード例 #9
0
            public static StreamPlayer Create(Stream Content, bool Loop = false, float Volume = 1)
            {
                var Return = new StreamPlayer();

                Return.Init(Content, Loop, Volume);
                return(Return);
            }
コード例 #10
0
 public PlatformPlayer(AvService avService, SharpDX.Direct2D1.Device d2DDevice, SharpDX.WIC.ImagingFactory factory)
 {
     underlyingPlayer = avService.GetStreamPlayer(gpu: true);
     Playback         = underlyingPlayer.Duration
                        .Select(duration => new StreamPlayback(d2DDevice, factory, underlyingPlayer, duration))
                        .DisposeCurrentOnNext();
 }
コード例 #11
0
ファイル: Scrcpy.cs プロジェクト: uustt/StreamDecoder4dotNet
    // Use this for initialization
    void Start()
    {
        rimg.transform.parent.gameObject.SetActive(false);
        mat = rimg.material;
#if UNITY_EDITOR
        StreamDecoder.dllPath = Application.streamingAssetsPath + "/../../../../bin/";
#else
        StreamDecoder.dllPath = Application.streamingAssetsPath + "/../../../../../bin/";
#endif
        adbController.adbPath = StreamDecoder.dllPath + "adb.exe";

        //启动ADB
        adbController.AdbStartServer();


        StreamDecoder.LoadLibrary();
        player = StreamPlayer.CreateSession();
        player.SetOption(OptionType.DataCacheSize, 2000000);
        player.SetOption(OptionType.DemuxTimeout, 2000);
        //player.SetOption(OptionType.PushFrameInterval, 0);
        player.SetOption(OptionType.AlwaysWaitBitStream, 1);
        //player.SetOption(OptionType.WaitBitStreamTimeout, waitBitStreamTimeout);
        player.SetOption(OptionType.AutoDecode, 1);
        player.SetOption(OptionType.DecodeThreadCount, 0);
        //player.SetOption(OptionType.UseCPUConvertYUV, 0);
        //player.SetOption(OptionType.ConvertPixelFormat, (int)PixelFormat.RGBA);
        //player.SetOption(OptionType.AsyncUpdate, 0);
        player.SetPlayerCb(null, OnFrame);
    }
コード例 #12
0
 bool isDeleted(StreamPlayer sp)
 {
     if (sp == null)
     {
         return(true);
     }
     return(sp.IsDeleted);
 }
コード例 #13
0
        //void DowloadAndPlayYoutube(string code) {
        //    MemoryStream ms = new MemoryStream();
        //    VideoInfo audio;
        //    try {
        //        string link = "http://www.youtube.com/watch?v=" + code;
        //        IEnumerable<VideoInfo> videoInfos = DownloadUrlResolver.GetDownloadUrls( link, false );

        //        audio = (from b in videoInfos
        //                           orderby b.AudioBitrate descending
        //                           where b.CanExtractAudio
        //                           select b).First();

        //        if ( audio.RequiresDecryption )
        //            DownloadUrlResolver.DecryptDownloadUrl( audio );

        //        var downloader = new MemoryAudioDownloader( audio, ms );
        //        downloader.Execute();
        //        // ms.Position = 0;

        //        ms = new MemoryStream( ms.ToArray() );
        //    } catch ( Exception erer) {
        //        _currentYoutubeThread = null;

        //        nextFile();
        //        return;
        //    }

        //    lock ( _lockObject ) {
        //        if ( _filePlayer != null ) {
        //            _filePlayer.VolumeDownAndStop();
        //            _filePlayer = null;
        //        }

        //        _filePlayer = new StreamPlayer( this );
        //        _filePlayer.OnError += _filePlayer_OnStoped;
        //        _filePlayer.OnStartPlay += _filePlayer_OnStartPlay;
        //        _filePlayer.OnStoped += _filePlayer_OnStoped;

        //        if ( OnTrack != null )
        //            OnTrack( audio.Title );
        //        _filePlayer.Play( ms );
        //    }
        //}

        public void CancelCurrentTrack()
        {
            if (_filePlayer != null)
            {
                _filePlayer.VolumeDownAndStop();
                _filePlayer = null;
            }
        }
コード例 #14
0
ファイル: MusicEntry.cs プロジェクト: Magicianred/ChayaBot
        // Constructor
        public MusicEntry(ulong guildId, IVoiceChannel voiceChannel, IAudioClient audioClient, ISocketMessageChannel messageChannel, List <Stream> streams)
        {
            MessageChannel = messageChannel;
            VoiceChannel   = voiceChannel;

            MusicPlayer  = new MusicPlayer(guildId, audioClient);
            StreamPlayer = new StreamPlayer(guildId, audioClient, streams);
        }
コード例 #15
0
    public void DeleteSession()
    {
        if (player == null)
        {
            return;
        }

        StreamPlayer.DeleteSession(ref player);
    }
コード例 #16
0
        public StreamPlayback(SharpDX.Direct2D1.Device device, SharpDX.WIC.ImagingFactory factory, StreamPlayer player, TimeSpan?duration)
        {
            this.player = player;
            context     = new DeviceContext(device, DeviceContextOptions.EnableMultithreadedOptimizations);
            Duration    = duration;

            CurrentFrame = player.CurrentTime.Select(time => CreateFrame(player.Surface, time)).DisposeCurrentOnNext();
            this.factory = factory;
        }
コード例 #17
0
        private async void StreamPlayer_PlayerStarted(StreamPlayer player, Stream currentStream)
        {
            if (!entries.TryGetValue(player.GuildId, out MusicEntry entry))
            {
                return;
            }

            await entry.MessageChannel.SendEmbedMessageAsync("Stream Player", $"Currently streaming: **{currentStream.Title}**.", Colors.GREEN);
        }
コード例 #18
0
        public override Playable CreatePlayable(PlayableGraph graph, GameObject owner)
        {
            var playable = ScriptPlayable <AlembicShotPlayable> .Create(graph);

            var behaviour = playable.GetBehaviour();

            m_stream = StreamPlayer.Resolve(graph.GetResolver());
            behaviour.streamPlayer = m_stream;
            return(playable);
        }
コード例 #19
0
    public void DeleteSession()
    {
        isInSendThread = false;
        if (player == null)
        {
            return;
        }

        StreamPlayer.DeleteSession(ref player);
    }
コード例 #20
0
        private void _temp_OnStartPlay(StreamPlayer obj)
        {
            if (_oldPlayer != null)
            {
                _oldPlayer.VolumeDownAndStop();
                _oldPlayer = null;
            }

            obj.VolumeUp();
        }
コード例 #21
0
 public PlatformFramebufferPlayer(AvService avService)
 {
     underlyingPlayer = avService.GetStreamPlayer(gpu: false);
     Playback         = underlyingPlayer.Duration
                        .Select(duration => new FramebufferStreamPlayback(underlyingPlayer, duration));
     Playback.Subscribe(playback =>
     {
         currentPlayback?.Dispose();
         currentPlayback = playback;
     });
 }
コード例 #22
0
ファイル: Player.cs プロジェクト: JustOxlamon/TwoRatChat
 public void VolumeUp()
 {
     ThreadPool.QueueUserWorkItem(new WaitCallback((a) => {
         StreamPlayer ip = a as StreamPlayer;
         for (float v = 0; v < 1.0f; v += 0.01f)
         {
             ip.volumeProvider.Volume = MasterVolume * v;
             LocalVolume = v;
             Thread.Sleep(15);
         }
     }), this);
 }
コード例 #23
0
ファイル: Scrcpy.cs プロジェクト: uustt/StreamDecoder4dotNet
    private void OnDestroy()
    {
        CloseServer();

        if (player != null)
        {
            StreamPlayer.DeleteSession(ref player);
        }

        StreamDecoder.FreeLibrary();

        isExit = true;
    }
コード例 #24
0
ファイル: Player.cs プロジェクト: JustOxlamon/TwoRatChat
        void TempUpPlayer_OnStoped(StreamPlayer obj)
        {
            lock (LockObject) {
                if (VolumeDownPlayer == obj)
                {
                    VolumeDownPlayer = null;
                }

                if (VolumeUpPlayer == obj)
                {
                    VolumeUpPlayer = null;
                }
            }
        }
コード例 #25
0
        public void StopRadio()
        {
            if (_oldPlayer != null)
            {
                _oldPlayer.VolumeDownAndStop();
                _oldPlayer = null;
            }

            if (_temp != null)
            {
                _temp.VolumeDownAndStop();
                _temp = null;
            }
        }
コード例 #26
0
 public void VolumeUp()
 {
     ThreadPool.QueueUserWorkItem(new WaitCallback((a) => {
         StreamPlayer ip = a as StreamPlayer;
         for (float v = 0; v < 1.0f; v += 0.01f)
         {
             if (ip.volumeProvider != null)
             {
                 ip.volumeProvider.Volume = (float)CommandFactory.GlobalVolume * v;
             }
             LocalVolume = v;
             Thread.Sleep(15);
         }
     }), this);
 }
コード例 #27
0
        private async void StreamPlayer_PlayerStopped(StreamPlayer player)
        {
            if (!entries.TryGetValue(player.GuildId, out MusicEntry entry))
            {
                return;
            }

            if (plannedStop)
            {
                plannedStop = false;
                return;
            }

            await entry.MessageChannel.SendEmbedMessageAsync("Stream Player", "Player stopped.", Colors.BLACK);
        }
コード例 #28
0
        private void _filePlayer_OnStoped(StreamPlayer obj)
        {
            lock ( _lockObject ) {
                if (_filePlayer != null)
                {
                    _filePlayer.VolumeDownAndStop();
                    _filePlayer = null;
                }
                // check next mp3*

                if (nextFile())
                {
                    PlayRadio(_radioUrl);
                }
            }
        }
コード例 #29
0
        public void PlayFile(string filePath)
        {
            lock ( _lockObject ) {
                if (_filePlayer != null)
                {
                    _filePlayer.VolumeDownAndStop();
                    _filePlayer = null;
                }

                _filePlayer              = new StreamPlayer(this);
                _filePlayer.OnError     += _filePlayer_OnStoped;
                _filePlayer.OnStartPlay += _filePlayer_OnStartPlay;
                _filePlayer.OnStoped    += _filePlayer_OnStoped;

                _filePlayer.Play(new FileStream(filePath, FileMode.Open, FileAccess.Read));
            }
        }
コード例 #30
0
    public void CreateSession()
    {
        if (player != null)
        {
            return;
        }

        player = StreamPlayer.CreateSession();
        player.SetOption(OptionType.DataCacheSize, bitStreamCacheSize);
        player.SetOption(OptionType.DemuxTimeout, demuxTimeout);
        player.SetOption(OptionType.PushFrameInterval, pushFrameInterval);
        player.SetOption(OptionType.AlwaysWaitBitStream, alwaysWaitBitStream ? 1 : 0);
        player.SetOption(OptionType.WaitBitStreamTimeout, waitBitStreamTimeout);
        player.SetOption(OptionType.AutoDecode, autoDecode ? 1 : 0);
        player.SetOption(OptionType.DecodeThreadCount, decodeThreadCount);
        player.SetOption(OptionType.UseCPUConvertYUV, useCPUConvertYUV ? 1 : 0);
        player.SetOption(OptionType.ConvertPixelFormat, (int)PixelFormat.RGBA);
        player.SetOption(OptionType.AsyncUpdate, 0);
        player.SetEventCallBack(OnEvent, OnDrawFrame, this);
    }