public void Init(RobotInfo ifo) { GStreamerCore.Ref(); m_Texture = TargetNode.AddComponent <GstCustomTexture> (); m_Texture.Initialize(); FileName = ifo.URL; _Processor = new OffscreenProcessor(); _Processor.ShaderName = "Image/I420ToRGB"; _needProcessing = false; string path = Application.dataPath + "/" + FileName; m_Texture.SetPipeline("filesrc location=\"" + path + "\" ! qtdemux name=demux " + "demux.video_0 ! queue ! avdec_h264 ! videoconvert ! video/x-raw,format=I420 ! appsink name=videoSink " + "demux.audio_0 ! queue ! decodebin ! audioconvert ! volume volume=5 ! appsink name=audioSink"); m_Texture.OnFrameGrabbed += OnFrameGrabbed; m_Texture.Play(); GameObject audioObj = new GameObject("AudioObject_" + TargetNode.name); audioObj.transform.parent = TargetNode.transform; audioObj.transform.position = Vector3.zero; AudioObject = audioObj.AddComponent <AudioSource> (); AudioObject.loop = true; _player = audioObj.AddComponent <GstAudioPlayer> (); _player.Player = m_Texture.Player.AudioWrapper; _player.TargetSrc = AudioObject; }
void _initAudioPlayers() { _audioCreated = true; _configReceived = false; //Create audio playback if (AudioStream) { string audioPorts = ""; GstAudioPlayer.SourceChannel[] channels; if (!_isSpatialAudio) { channels = new GstAudioPlayer.SourceChannel[1] { GstAudioPlayer.SourceChannel.Both }; for (int i = AudioLocation.Count; i < _audioSourceCount; ++i) { AudioLocation.Add(Vector3.zero); } } else { //check number of audio locations for (int i = AudioLocation.Count; i < 2 * _audioSourceCount; ++i) { AudioLocation.Add(Vector3.zero); } channels = new GstAudioPlayer.SourceChannel[2] { GstAudioPlayer.SourceChannel.Right, GstAudioPlayer.SourceChannel.Left }; /* * // AudioLocation = new Vector3[_audioSourceCount * 2]; * float angle = 0; * float step = Mathf.Deg2Rad* 360.0f / (float)AudioLocation.Count; * float r = 0.1f; * for (int i = 0; i < AudioLocation.Count; ++i) { * AudioLocation [i] = new Vector3 (Mathf.Cos (angle)*r, 0, Mathf.Sin (angle)*r); * angle += step; * }*/ } int idx = 0; for (int i = 0; i < _audioSourceCount; ++i) { GstNetworkAudioPlayer aplayer; GstAudioPacketGrabber grabber; aplayer = new GstNetworkAudioPlayer(); aplayer.SetSampleRate(AudioSettings.outputSampleRate); aplayer.SetUseCustomOutput(true); int audioPort = Settings.Instance.GetPortValue("AudioPort", 0); string ip = Settings.Instance.GetValue("Ports", "ReceiveHost", _ifo.IP); aplayer.SetIP(ip, audioPort, false); aplayer.CreateStream(); aplayer.Play(); _audioPort = aplayer.GetAudioPort(); Debug.Log("Playing audio from port:" + _audioPort.ToString()); audioPorts += _audioPort.ToString(); if (i != _audioSourceCount - 1) { audioPorts += ","; } // next create the audio grabber to encapsulate the audio player grabber = new GstAudioPacketGrabber(); grabber.Player = aplayer.AudioWrapper; _audioGrabbers.Add(grabber); //finally create sound object(s)-- for (int j = 0; j < channels.Length; ++j) { //Create Sound Object GameObject audioObj = new GameObject("AudioObject" + i.ToString() + "_" + TargetNode.name + "_" + channels[j].ToString()); audioObj.transform.parent = TargetNode.transform; audioObj.transform.position = AudioLocation[idx]; AudioSource asrc = audioObj.AddComponent <AudioSource> (); asrc.loop = true; _player = audioObj.AddComponent <GstAudioPlayer> (); _player.Player = aplayer.AudioWrapper; _player.TargetSrc = asrc; _player.grabber = grabber; _player.SupportSpatialAudio = _isSpatialAudio; _player.Channel = channels [j]; grabber.AttachedPlayers.Add(_player); AudioObjects.Add(asrc); ++idx; } _audioPlayer.Add(aplayer); } RobotConnector.Connector.SendData(TxKitEars.ServiceName, "AudioPort", audioPorts, true); } }