I want to see a client-server dialogue during the RTSP-session, like this:
SETUP rtsp://...... RTSP/1.0
CSeq: 3
User-Agent: ...........
Transport: ........
RTSP/1.0 200 OK
CSeq: 3
Date: Tue, Jan 15 2013 02:02:56 GMT
Transport: .......
Session: .........
Is it possible to watch the session, using VLC player?
If not, how to watch it the most simplest way?
Thanks in advance.
You could set up wireshark and use the rtsp filter to see those messages.
Try enabling debug log before playing the stream (tools -> messages -> verbosity=2) and see if there is enough info for you. I know using libvlc its possible to have this info, not sure about the player app.
Related
Experimenting with Stream's chat service, and we're considering to migrate to it for our iOS app. I'm using version 2.6.2 of their SDK for iOS. I'm getting this error sometimes when the websocket disconnects though:
The image is in Norwegian, but in English it says: The action couldn't be completed (STREAMCHATCLIENT.WEBSOCKETPROVIDERERROR-bug 1).
The list of chats in the ChannelsViewController is purged as part of cleaning the state after a disconnect as is evident in the logs:
[14 Jan 09:36:55.487] [DEBUG] Clearing state after disconnect...
[14 Jan 09:36:55.487] [DEBUG] Cancelling background work...
[14 Jan 09:36:55.489] [DEBUG] :purple_heart: Background mode off
[14 Jan 09:36:55.489] [DEBUG] Disconnecting: Processing finished in background
[14 Jan 09:36:55.491] [DEBUG] Parsing WebSocket disconnect... (error: Cancelled)
[14 Jan 09:36:55.492] [DEBUG] Clearing state after disconnect...
[14 Jan 09:36:55.492] [DEBUG] Cancelling background work...
[14 Jan 09:36:55.492] [ERROR] :x: :broken_heart::rage: Disconnected by error WebSocketProviderError(reason: "Cancelled", code: -1, providerType: StreamChatClient.StarscreamWebSocketProvider, providerError: nil) in websocketDidDisconnect(error:)[304]
The problem is that even though the websocket reconnects shortly, the chat list in the UI is never updated.
How do I prevent errors like these just popping up randomly in the UI, and how do I make sure that the list of chats in the UI is updated after the websocket has reconnected?
It seems that setting the user with Client.shared.set(user:token) multiple times might cause problems. Make sure you don't set a user that has been set already. The error still happens a few times, but not as mugh anymore. I added this check:
guard Client.shared.user.role == .anonymous else {
log("User is already logged in. Aborting chat login process")
return
}
Make note that this check will fail if someone logs in after logging out and the user hasn't been reset properly on logout. In the documentation it says that to log out you have to run Client.shared.disconnect(), but you also have to reset the user with Client.shared.setAnonymousUser(). The ID and everything of the previous user will be removed too.
While testing on the iOS Simulator a vide call with routed sessions the user gets its video disabled with an undocumented reason.
On the latest version of OpenTok 2.15.3 we can see that the possible reasons for video being disabled are:
typedef NS_ENUM(int32_t, OTSubscriberVideoEventReason) {
OTSubscriberVideoEventPublisherPropertyChanged = 1,
OTSubscriberVideoEventSubscriberPropertyChanged = 2,
OTSubscriberVideoEventQualityChanged = 3
};
on the iOS 11 simulator, right after trying to subscribe I'm getting the video enabled with OTSubscriberVideoEventReason == 2, right after it gets disabled with OTSubscriberVideoEventReason == 4 and then I get the following error on subscriberDidDisconnectFromStream:
Internal error -- WebRTC subscriber error.
Failed to set remote offer sdp:
Session error code: ERROR_CONTENT.
Session error description: Failed to set remote video description send
parameters..
kPCFailureSetRemoteDescription
The docs suggested trying to resubscribe, or reconnect... resubscribing didn't work. Furthermore it's only happening on the simulator, which makes me think that there is nothing really wrong with the setup, but the real question here is, what is the OTSubscriberVideoEventReason == 4?
TokBox Developer Evangelist here.
Yes, unfortunately, we didn't publicly document this specific case(sorry about that). We plan on adding this in the 2.16.0 release.
The reason that OTSubscriberVideoEventReason=4 is dispatched is when the video in the subscriber stream was disabled because the stream uses a video codec (such as H.264) that's not supported on the simulator.
I am trying to build a voice calendar app that needs to use live stream from the microphone for speech recognition.
So you have a button that starts listening to the microphone and stops automatically when the user stops speaking.
I have already explored Cordova Media API that allows me to record the data to a wav file. This works but makes the process very slow since I need to wait for the recording to be finished.
I used the https://api.ai as a starting point to build the 1st version of the app which works quite well. It took care of all the "listening" part!
Next phase for me is to integrate with a few different speech recognition APIs.
The major issue for me has been the lack of native development skills, so are there any cordova plugins that can help me do this?
Update 1 - 1st April 2016
Found this https://subvisual.co/blog/posts/39-tutorial-html-audio-capture-streaming-to-node-js-no-browser-extensions
Will be trying to implement this in cordova through webrtc.
Update 2 - 1st April 2016
Installed https://github.com/eface2face/cordova-plugin-iosrtc to utilize webrtc
Update 3 - 2nd April 2016
Stuck at AudioContext.createMediaStreamSource is not a function on iOS!
AudioContext.createMediaStreamSource alternative for iOS?
Update 4 - 6th April 2016
Going Native - Time to learn iOS Development!
Sorry to hear that you gave up on Cordova, but if you still are interested: I've created a cordova plugin for iOS and Android, that enables you to capture microphone data and forward it to the web layer of your application. You can either rely on the Web Audio API to handle the incoming sound, or use any other way to encode and save the raw sound data:
https://github.com/edimuj/cordova-plugin-audioinput
Example usage:
function onAudioInput( evt ) {
// 'evt.data' is an integer array containing raw audio data
console.log( "Audio data received: " + evt.data.length + " samples" );
// ... do something with the evt.data array ...
}
// Listen to audioinput events
window.addEventListener( "audioinput", onAudioInput, false );
// Start capturing audio from the microphone
audioinput.start();
I am developing an iOS application to stream video to wowza media server. I used MediaCommuncation Library for iOS and RTSPStreamPublisher. I am unable to connect to server with following issue:
RTMPStreamPublisher[527:90315] RTMPClient -> eventFailed: code = -7, description = fault code = -1 < Input or/and Output Stream is not opened
You have to check your wowwza Source security setting. By default RTMP Source Authentication is turned on and this RTSPStreamPublisher does not take any username and password from you so wowza rejects connection.
try to go to wows stream engine-> live -> source Authentication -> open RTMP Protocol... and then restart your server....
After that try to run your RTSPStreamPublisher... Enjoy.. :-)
I have implemented the Passbook websevice, and can successfully push to APNs; But I have a problem with the Passbook not requesting the latest version of the pass.
When I push a new notification to a given device, the device gets it and Passbook sends a request the my web service asking for the serial numbers associated with that device. My web service send a response with 200 http status code, whith a JSON payload similar to:
{"lastUpdated":"1424691339", "serialNumbers":["1234567"]}
The device console shows the following:
Feb 23 11:34:54 My-iPhone passd[162] <Warning>: Generating GET request with URL <http://192.168.1.138:8000/api/v1/devices/297f6e6ed478540ccc05e1962cce41e6/registrations/pass.com.example.coupon?passesUpdatedSince=1424690611>
Feb 23 11:34:55 My-iPhone passd[162] <Warning>: Get serial #s task (for device 297f6e6ed478540ccc05e1962cce41e6, pass type pass.com.example.coupon, last updated 1424690611; with web service url http://192.168.1.138:8000/api/) got response with code 200
Feb 23 11:34:55 My-iPhone passd[162] <Warning>: Get serial numbers task completed with update tag 1424691339, serial numbers (
1234567
)
I can't see why Passbook does not proceed and request the latest version of the pass. Instead it stops at that point!
Can someone Help please?
Solved! The Apple docs say that it is required that the serialNumbers entry in the JSON payload must be an array of Strings. This is not enough to make it work. The serial numbers strings must also be quoted for the device to consider them valid. Unfortunately the dumped messages in the device console are of no help to figure this out nor does the documentation. I presume that PassKit converts the string that look like an Integer to NSNumber, when passing the JSON payload, Instead of NSString.
May be if I had other characters than only numbers, this problem wouldn't have occurred.
This is an example of how the JSON payload must look when serial numbers are numbers, duh!
{"lastUpdated":"1424691339", "serialNumbers":["'1234567'"]}