I have a device, which can't use WebRTC. For real time audio streaming i am using udp socket. This socket is sending audio chunks. I need to create a playable buffer which can append chunks dynamically, any thoughts about that?
I tried to join this chunks and than save it to file and play, but it is not real time at all :(
this.audioSocket.on('message', (data, rinfo) => {
}
Here we get data (Uint8Array) from our device
Is there any playable memory buffer?
Related
Here, Data transfer is for controlling video pause and video record. We are using iMX8Mini Eval board - for streaming video to Android Mobile via USB-OTG. We would like to know, whether video stream does not affected with any command sent over same USB-OTG.
I use getUserMedia to the the audio stream, and pass the stream into web audio using createMediaStreamSource. I then want to stream the raw audio data into a webrtc data channel.
There isn’t a data channel destination node in web audio. I’ve only been able to access the raw audio data from inside an audio worklet, but I don’t know how to get that data into a data channel. How should I go about streaming raw audio from getUserMedia data into a data channel?
Suppose we get an audio stream by using getUserMedia(gUM) API. I am broadcasting this stream to other users using WebRTC.
Is it possible to reduce the volume of the audio getting streamed.
Note : I am not looking to reduce device mic volume, because I understand we cannot control through browser and I dont want to
Try with GainNode from WebAudio. But the best thing will be to do this on the receiving end.
Trying to split HLS TS Stream audio from video, audio is AAC format.
The gole is to have some sort of AVAsset that I can later manipulate and then Mux back to the video.
After searching for a while i cant find a solid lead, can someone give me a educated direction to take on this issue ?
You can use the ffmpeg/libav library for demuxing the ts. To load the audio back as an AVAsset, it might be necessary to load it from a URL, either by writing temporarily to disk or serving with a local http server within your program.
I think you might run into some trouble in manipulating the audio stream, assuming you want to manipulate the raw audio data. That will require decoding the AAC, modifying it, re-encoding, and re-muxing with the video. That's all possible with ffmpeg/libav, but it's not really that easy.
I'm actually making an app which has to play and record streaming audio from internet on ipad. The streaming of the audio is done, I will have to come to the recording part very soon and I don't have any idea on how to proceed.
Could you give me a hint??? Idea? It will have to play while simultaneously recording into AAC or MP3.
Thanks.
You'll need to use the lower-level AudioQueue API, and use the AudioSession API to set up the audio session.
Then you'll need to fill out an AudioStreamBasicDescription struct and create a new input queue with AudioQueueNewInput() and include your callback function for handling input buffers.
And then you'll need to create 3 buffers using AudioQueueAllocateBuffer() and AudioQueueEnqueueBuffer(). And only then will you be ready to call AudioQueueStart(). You should also handle audio session interruptions, and handle stopping the audio queue.
That will just get you a stream of buffers containing uncompressed 16-bit integer PCM audio data. You still need to compress the data, which is another can of worms that involves using the AudioConverter API, which I haven't done on the iPhone OS so I don't know what will work there.
Please Look at this Framework. It provide data for recording while recording Streaming Kit
Play an MP3 over HTTP
STKAudioPlayer* audioPlayer = [[STKAudioPlayer alloc] init];
[audioPlayer play:#"http://www.abstractpath.com/files/audiosamples/sample.mp3"];
And append its data to NSMutabledata to play offline by using this delegate.
Intercept PCM data just before its played
[audioPlayer appendFrameFilterWithName:#"MyCustomFilter" block:^(UInt32 channelsPerFrame, UInt32 bytesPerFrame, UInt32 frameCount, void* frames)
{
...
}];