black screen ios and logs error

Gabriel T

Member
hello
since recently, most of the time when a stream start playing on ios device, there is a black screen and no sound instead of video (broadcast from windows 10, chrome latest version).
here are error logs when ios start to play:

03:44:57,834 INFO ultLoadEventListener - RMI TCP Connection(44)-xxx HHH000327: Error performing load command : org.hibernate.exception.SQLGrammarException: could not prepare statement
03:44:57,834 WARN agerRemoteRmiService - RMI TCP Connection(44)-xxx Exception at stream info service, playStream 1-Gabdroid^5b358d5003981^ok^fr-18c8
javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not prepare statement
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1763)
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1694)
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:1141)
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:1068)
at sun.reflect.GeneratedMethodAccessor164.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:289)
at com.sun.proxy.$Proxy94.find(Unknown Source)
at com.flashphoner.server.manager.data_access.GenericDataAccess.get(GenericDataAccess.java:61)
at com.flashphoner.server.manager.data_access.GenericDataAccess.getAndDelete(GenericDataAccess.java:73)
at com.flashphoner.server.manager.data_access.GenericDataAccess$$FastClassBySpringCGLIB$$fd4ad8b.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:708)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:98)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:262)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:644)
at com.flashphoner.server.manager.data_access.GenericDataAccess$$EnhancerBySpringCGLIB$$80419faa.getAndDelete(<generated>)
at com.flashphoner.server.manager.service.stream.StreamInfoService.addStream(StreamInfoService.java:205)
at com.flashphoner.server.manager.service.stream.StreamInfoService.playStream(StreamInfoService.java:103)
at com.flashphoner.server.manager.rmi.operations.impl.ManagerRemoteRmiService.playStream(ManagerRemoteRmiService.java:266)
at sun.reflect.GeneratedMethodAccessor234.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357)
at sun.rmi.transport.Transport$1.run(Transport.java:200)
at sun.rmi.transport.Transport$1.run(Transport.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.hibernate.exception.SQLGrammarException: could not prepare statement
at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:123)
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:126)
at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:196)
at org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareQueryStatement(StatementPreparerImpl.java:160)
at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.prepareQueryStatement(AbstractLoadPlanBasedLoader.java:257)
at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeQueryStatement(AbstractLoadPlanBasedLoader.java:201)
at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:137)
at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:102)
at org.hibernate.loader.entity.plan.AbstractLoadPlanBasedEntityLoader.load(AbstractLoadPlanBasedEntityLoader.java:186)
at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:4126)
at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:503)
at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:468)
at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:213)
at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:275)
at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:151)
at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1070)
at org.hibernate.internal.SessionImpl.access$2000(SessionImpl.java:176)
at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.load(SessionImpl.java:2551)
at org.hibernate.internal.SessionImpl.get(SessionImpl.java:955)
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:1110)
... 37 more
Caused by: org.h2.jdbc.JdbcSQLException: Column "STREAM0_.MAX_BITRATE" not found; SQL statement:
select stream0_.media_session_id as media_se1_19_0_, stream0_.app_key as app_key2_19_0_, stream0_.audio_codec as audio_co3_19_0_, stream0_.bitrate as bitrate4_19_0_, stream0_.create_date as create_d5_19_0_, stream0_.end_date as end_date6_19_0_, stream0_.has_audio as has_audi7_19_0_, stream0_.has_video as has_vide8_19_0_, stream0_.height as height9_19_0_, stream0_.info as info10_19_0_, stream0_.max_bitrate as max_bit11_19_0_, stream0_.media_provider as media_p12_19_0_, stream0_.min_bitrate as min_bit13_19_0_, stream0_.name as name14_19_0_, stream0_.node_id as node_id15_19_0_, stream0_.parent_media_session_id as parent_16_19_0_, stream0_.published as publish17_19_0_, stream0_.quality as quality18_19_0_, stream0_.record as record19_19_0_, stream0_.record_name as record_20_19_0_, stream0_.rtmp_url as rtmp_ur21_19_0_, stream0_.sdp as sdp22_19_0_, stream0_.session_id as session23_19_0_, stream0_.status as status24_19_0_, stream0_.video_codec as video_c25_19_0_, stream0_.width as width26_19_0_ from stream_info_3 stream0_ where stream0_.media_session_id=? [42122-184]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
at org.h2.message.DbException.get(DbException.java:179)
at org.h2.message.DbException.get(DbException.java:155)
at org.h2.expression.ExpressionColumn.optimize(ExpressionColumn.java:147)
at org.h2.expression.Alias.optimize(Alias.java:51)
at org.h2.command.dml.Select.prepare(Select.java:834)
at org.h2.command.Parser.prepareCommand(Parser.java:247)
at org.h2.engine.Session.prepareLocal(Session.java:446)
at org.h2.engine.Session.prepareCommand(Session.java:388)
at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1189)
at org.h2.jdbc.JdbcPreparedStatement.<init>(JdbcPreparedStatement.java:72)
at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:277)
at com.zaxxer.hikari.pool.ProxyConnection.prepareStatement(ProxyConnection.java:309)
at com.zaxxer.hikari.pool.HikariProxyConnection.prepareStatement(HikariProxyConnection.java)
at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$5.doPrepare(StatementPreparerImpl.java:162)
at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:186)
 

Gabriel T

Member
yes its working with your demo...strange thing is logs say "not enough bandwidth" but it works perfectly on all my devices, i have big internet connection...in the logs it says "-1" for available bandwith...stream is only 320x240...
 

Gabriel T

Member
its very strange...in my app i also have screen sharing using extension, and the screen is displayed properly on ios...only webcam/audio not working...could it be a codec setting issue ?
 

Gabriel T

Member
i would like to test the demo on my server, but since i went to the paid version, my credentials are not recognized to access the admin...i didnt change them though...where can i ifind/setup admin credentials ?
 

Gabriel T

Member
bon...its working with the demos on my server...its very strange as it was working before...

here is my command to start playing the stream:
participant.getStreams()[0].play("targetDiv").on(STREAM_STATUS.PLAYING, function (playingStream) {

this is working as expected on chrome, android etc...but black screen and no sound on ios :/
 

Max

Administrator
Staff member
could it be a codec setting issue ?
yes it can be a codec issue
you can gather logs, we will check
https://forum.flashphoner.com/threads/gathering-debug-logs-and-sending-reports.11429/

what are the video_reliable and audio_reliable settings in server.properties ?
These two properties are related to RTMFP (Flash Player) protocol and not used in your case.

where can i ifind/setup admin credentials
Try admin admin
If it does not work, you can reset admin credentials removing database
1. Stop server.
2. Backup db files
WCS_HOME/database
3. Start server.
 

Gabriel T

Member
ha...some new infos: do the demo is working on ios if i publish and play from ios.
if i publish from chrome/windows 10 and play from ios, i have this black Screen and no sound
 

Gabriel T

Member
more and more strange:
on firefox, the screensharing extension stopped to ask for screen to share but instead pick up the webcam automatically...and if starting the "screensharing" (in fact the webcam),then the webcam is played properly on ios...so to summarize:
webcam published normal way (im using the conference example in my app), i have a blackscreen on ios
if webcam is published (somehow by mistake) by the "screensharing" extension, ,then webcam is played properly on ios
confusing...any idea ?
 

Gabriel T

Member
the mistery continues: found out that:
if i start publishing from ios, then ios can play published streams...if ios havent been publishing, then black screen when playing a stream published from another location... !
 

Gabriel T

Member
ok i confirm:
if i comment this line:
navigator.mediaDevices.getUserMedia(constraints).then(handleSuccess).catch(handleError);
then on ios playback is black screen
if i comment so the page access mediadevices on load, then streamed are played properly
not sure about the reason of this behavior, as i updated both ios and wcs at the same time before this behavior started...
 
Last edited:

Max

Administrator
Staff member
Hello
It is bit confusing.
1. Does this work with our demo samples without tweaks?
Streamer
https://demo.flashphoner.com/client...ming/two_way_streaming/two_way_streaming.html
Screen Sharing
https://demo.flashphoner.com/client2/examples/demo/streaming/screen-sharing/screen-sharing.html
Player
https://demo.flashphoner.com/client2/examples/demo/streaming/player/player.html
If it does not work, please provide a way to reproduce the issue.
2. Does this work with your tweaks?
If it does not work, please provide code of modified code sample based on one of our samples. We will test.
 

Gabriel T

Member
yes i know its super confusing...again what i noticed is that on ios, if there are not been a "navigator.mediaDevices.getUserMedia" before trying to play a stream, the stream is black.
how you could maybe try to reproduce the issue: on your two ways streaming,open a tab with chrome on pc or mac (this will be the broadcaster) and start publishing. then edit your script so there is not "navigator.mediaDevices.getUserMedia" on startup, and open the demo from your ios. type the publishing code in the player textfield and try toplay the stream published from your chrome window. you should get a black screen
 
Top