精华内容
下载资源
问答
  • android webview 支持WebRTC

    千次阅读 2020-07-09 10:55:40
    如果想让自己的APP支持WebRTC 协议的视频流,解决方案如下: 放弃原生WebView 我们选用腾讯的TBS , 直接上代码 1.XML 文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=...

    如果想让自己的APP支持WebRTC 协议的视频流,解决方案如下:

    放弃原生WebView 我们选用腾讯的TBS , 直接上代码

    1.XML 文件

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context=".MainActivity">
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@android:color/white"
            android:orientation="horizontal"
            android:paddingLeft="8dp"
            android:paddingRight="8dp">
    
            <EditText
                android:id="@+id/et_url"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_gravity="bottom"
                android:layout_weight="1" />
    
            <TextView
                android:id="@+id/tv_go"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="16dp"
                android:text="进入"
                android:textColor="@android:color/holo_blue_dark" />
        </LinearLayout>
    
        <com.tencent.smtt.sdk.WebView
            android:id="@+id/webView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:padding="8dp" />
    
    </LinearLayout>
    
    1. java 逻辑 (设置支持插件 pluginsEnabled )
    @Suppress("UNREACHABLE_CODE")
    class MainActivity : AppCompatActivity() {
    
        var url: String = ""
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
            init()
        }
    
        private fun init() {
            initView()
            initWeb()
        }
    
        private fun initWeb() {
            webView.settings.let {
                it.javaScriptEnabled = true
                it.pluginsEnabled= true
            }
            webView.setWebViewClient(WebViewClient())
            webView.setWebChromeClient(object : WebChromeClient() {
                override fun onPermissionRequest(request: PermissionRequest){
                    request.grant(request.getResources())
                }
            })
        }
    
        private fun initView() {
            url = SPUtils.get(this, "url", "http://wwww.baidu.com") as String
            et_url.setText(url)
    
            tv_go.setOnClickListener(View.OnClickListener {
                url = et_url.text.toString()
                webView.loadUrl(url)
                SPUtils.put(this, "url", url)
            })
        }
    
        override fun onDestroy() {
            super.onDestroy()
            webView.destroy()
        }
    }
    
    
    1. module 的 gradle配置
    apply plugin: 'com.android.application'
    apply plugin: 'kotlin-android'
    apply plugin: 'kotlin-android-extensions'
    
    android {
        compileSdkVersion 29
        buildToolsVersion "30.0.0"
    
        defaultConfig {
            applicationId "com.winspread.browser"
            minSdkVersion 21
            targetSdkVersion 27
            versionCode 1
            versionName "1.0"
        }
    
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            }
        }
    }
    
    dependencies {
        implementation fileTree(dir: "libs", include: ["*.jar"])
        implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
        implementation 'androidx.core:core-ktx:1.3.0'
        implementation 'androidx.appcompat:appcompat:1.1.0'
        implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
        api 'com.tencent.tbs.tbssdk:sdk:43903'
    }
    
    展开全文
  • 正文字数:558 阅读时长:1 分钟在升级iOS最新版本之后,微信浏览器中对WebRTC支持变得更完备。至此WebRTC的跨平台互通更近一步。文 /LiveVideoStackLi...

    正文字数:558  阅读时长:1 分钟

    在升级iOS最新版本之后,微信浏览器中对WebRTC的支持变得更完备。至此WebRTC的跨平台互通更近一步。

     

    文 / LiveVideoStack

    LiveVideoStack发现, 在升级iOS最新版本之后,微信浏览器中对WebRTC的支持变得更完备。不仅在iOS端微信内置浏览器中,还可以在小程序的WebView中使用WebRTC。但支持的前提要求iOS系统达到14.3版本及以上,并且微信版本为6.5及以上,需要同时达到这两项要求才可使用WebRTC。至此WebRTC的跨平台互通更近一步。

     

    另外,关于WebRTC的一些支持情况:

    首先,Safari 11虽然支持了WebRTC,但是其提供的WebView却一直没有完整的支持。但从iOS 14.3开始,苹果为WKWebView增加了WebRTC的支持。这样就可以通过内嵌WebView的方式来使用WebRTC。因此,微信浏览器在iOS端上使用的是WKWebView,也就同样支持了WebRTC。

    除此之外,微信小程序目前也能支持WebRTC了,但是未来的使用情况还是要看微信的态度。(相关阅读:“小程序+直播”怎样搅动音视频技术生态?

     

    在桌面浏览器中WebRTC的支持已经非常好,但移动端浏览器的支持一直广受诟病,微信浏览器作为国内的大型生态平台,微信对WebRTC的支持,将预示着移动端WebRTC的生态会越来越好。

    关于WebRTC的相关阅读:

    WebRTC 2021 流行趋势大赏

    W3C与IETF共同定义WebRTC未来6大应用方向

     

     

    WebRTC Peer-to-peer connections

    想了解WebRTC更多支持情况,请点击:https://caniuse.com/?search=WebRTC%20

    LiveVideoStackCon 2021 上海站

    时间:2021年4月16日-4月17日

    我们准备好全新的内容,在上海欢迎您的到来

    点击【阅读原文】了解更多详情

    展开全文
  • Android WebView加载webrtc视频通话

    千次阅读 2018-08-02 14:50:35
    在android端使用WebView来加载webrtc页面。 Web端发起视频通话请求时,可以使用极光推送来通知移动端,然后移动端做出响应。 注意,在targetSdkVersion版本大于23时,有可能出现移动端视频无法显示的情况(摄像头...

    最近需要做个Web端和移动端视频通话的功能,使用了webrtc来实现。在android端使用WebView来加载webrtc页面。

    Web端发起视频通话请求时,可以使用极光推送来通知移动端,然后移动端做出响应。

    注意,在targetSdkVersion版本大于23时,有可能出现移动端视频无法显示的情况(摄像头不自动打开),这时需要动态授权。

    1.AndroidManifest.xml文件添加以下权限

        <uses-permission android:name="android.permission.INTERNET"/>
        <uses-permission android:name="android.permission.CAMERA" />
        <uses-permission android:name="android.permission.CAPTURE_VIDEO_OUTPUT" />

    2.Activity代码如下:

    import android.annotation.TargetApi;
    import android.content.pm.PackageManager;
    import android.net.http.SslError;
    import android.os.Build;
    import android.support.v4.app.ActivityCompat;
    import android.support.v4.content.ContextCompat;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.text.TextUtils;
    import android.util.Log;
    import android.view.KeyEvent;
    import android.view.View;
    import android.webkit.PermissionRequest;
    import android.webkit.SslErrorHandler;
    import android.webkit.WebChromeClient;
    import android.webkit.WebSettings;
    import android.webkit.WebView;
    import android.webkit.WebViewClient;
    import android.widget.Toast;
    
    
    public class MainActivity extends AppCompatActivity{
        private WebView webView;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.video_player);
        
            webView = (WebView) findViewById(R.id.web_view);
    
            //覆盖WebView默认使用第三方或系统默认浏览器打开网页的行为,使网页用WebView打开
            //如果不调用这个函数,将会打开一个默认的浏览器
    
            WebSettings settings = webView.getSettings();
            settings.setJavaScriptEnabled(true);
            webView.loadUrl("https://192.168.72.216:8085/rtc/webrtc.jsp?roomId=abc");
            webView.setWebViewClient(new WebViewClient() {
                @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    view.loadUrl(url);
                    return true;
                }
                public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
                    handler.proceed();
                }
                public void onPageFinished(WebView view, String url) {
                    super.onPageFinished(view, url);
                }
            });
    
            //判断页面加载的过程
            webView.setWebChromeClient(new WebChromeClient() {
                @Override
                public void onProgressChanged(WebView view, int newProgress) {
                    // TODO Auto-generated method stub
                    if (newProgress == 100) {
                        // 网页加载完成
                        Log.d("加载完成...","success");
                    } else {
                        // 加载中
                        Log.d("加载中...",+newProgress+"");
                    }
                }
                @Override
                public void onPermissionRequest(final PermissionRequest request) {
                    VideoPlayerActivity.this.runOnUiThread(new Runnable(){
                        @TargetApi(Build.VERSION_CODES.LOLLIPOP)
                        @Override
                        public void run() {
                            request.grant(request.getResources());
                        }// run
                    });// MainActivity
                }// onPermissionRequest
    
            });
        }
    
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            if(keyCode==KeyEvent.KEYCODE_BACK)
            {
                if(webView.canGoBack())
                {
                    webView.goBack();//返回上一页面
                    return true;
                }
                else
                {
                    System.exit(0);//退出程序
                }
            }
            return super.onKeyDown(keyCode, event);
        }
    }

    3.界面文件如下:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#ffffff"
        android:orientation="vertical">
    
    
        <WebView
            android:id="@+id/web_view"
            android:layout_margin="20dp"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    
    </LinearLayout>
    

     

    展开全文
  • android 支持webrtc

    千次阅读 2018-11-15 16:06:48
    公司有个项目,需要在webview中加载视频,用到了webrtc技术。Android 4.4以后,浏览器内核采用的chromium,可以支持webrtc。所以基本上对于新出的手机,自动支持webrtc。使用webview时,只需要在代码中实现...

    公司有个项目,需要在webview中加载视频,用到了webrtc技术。Android 4.4以后,浏览器内核采用的chromium,可以支持webrtc。所以基本上对于新出的手机,自动支持webrtc。使用webview时,只需要在代码中实现WebChromeClient的onPermissionRequest方法即可。只是为了针对特定网页申请的权限给予授权或者拒绝。代码如下:

    webView.setWebChromeClient(new WebChromeClient() {
    
                @Override
                public void onPermissionRequest(final PermissionRequest request) {
                    Log.d("MainActivity", "onPermissionRequest");
                    MainActivity.this.runOnUiThread(new Runnable() {
                        @TargetApi(Build.VERSION_CODES.LOLLIPOP)
                        @Override
                        public void run() {
                            if(request.getOrigin().toString().equals("https://janus.conf.meetecho.com/streamingtest.html")) {
                                request.grant(request.getResources());
                            } else {
                                request.deny();
                            }
                        }
                    });
                }
    
            });

    而对于4.4以前的系统,默认的浏览器内核是webkit,对webrtc支持不好。有些手机厂商又喜欢修改rom,如果对chromium内核做了修改,也可能造成webrtc不能正常运行。这时候,可以在应用中集成第三方的浏览器内核,常见的有腾讯的X5,intel的CrossWalk。他们官网都有相应的文档和demo,这里就不赘述了。

    展开全文
  • http://blog.csdn.net/ren65432/article/details/53815832
  • error: b.exports ## detail: "Failed to parse SessionDescription. Failed to parse audio codecs correctly." message: "something wrong with your network , please try late." name: "INTERNAL_ERROR" ...
  • 安卓5.0 WebView 支持WebRTC, 可是老是说需要给web使用摄像头与麦克风时的许可,差了好多天,巨灰心。 今天终于解决了,添加: myWebView.setWebChromeClient(new WebChromeClient(){ //---WebRTC:  @Override  ...
  • 我正在编写一个具有WebView的应用程序,它通过WebRTC处理语音呼叫 . 麦克风工作正常,因为我已授予WebView权限 .webView.setWebChromeClient(new WebChromeClient() {@Overridepublic void onPermissionRequest...
  • CrossWalk WebView添加支持WebRTC及H264编解码

    千次阅读 热门讨论 2019-06-05 22:20:33
    使用:wq保存退出,接着ffmpeg打入增加h264软件编解码的补丁,有了之前WebRTC支持软硬件h264编解码的经验,发现还是有些区别,但是大同小异,可能是因为这里使用的ffmpeg的版本不同的原因,如下: [ lee@CentOS7 ...
  • 原因就是原生webrtc默认支持使用了高通,英特尔和三星CPU等国际大厂的机型,很多小众的机型或者新生的CPU没有开启支持,需要我们手动添加。 修改文件:HardwareVideoEncoderFactory.java和...
  • iOS 支持webrtc的浏览器 bowser

    千次阅读 2015-11-12 18:20:38
    目前在android上面有很多支持 webrtc的浏览器, 比如chrome,crosswalk等等,但是对于iOS这一款封闭的环境, 目前没有能支持webrtc的浏览器, 其根本原因在apple这个水果的武断阻挠, 经过一段时间的探索,发现一款...
  • 安卓webrtc权限问题

    千次阅读 2016-11-02 15:26:14
    在安卓中使用webrtc需要权限。如果没有添加,日志也会说明这些问题。
  • 小编最近在做webrtc的项目,用的是内嵌的X5内核的webview进行语音视频通话,但每次启动app都会弹出权限对话框,原本想在js上解决这个问题,结果是没法解决,因为这对于浏览器来说是一个安全性的问题,防止访问网页时...
  • 用例1_webrtc.chatdemo_demo 用例2_webrtc.io-demo-master_包 用例3_simpleRTC_server
  • 近几年随着人们对网页视频要求的提高,WebRTC被越来越多的人熟知,运行WebRTC需要搭建一个用户界面,并且需要一台服务器来发送信令,WebRTC处理SDP信息的创建和处理,通过拉流库进行拉流,实现WebRTC的网页播放功能...
  • 原因就是原生webrtc默认支持使用了高通,英特尔和三星CPU等国际大厂的机型,很多小众的机型或者新生的CPU没有开启支持,需要我们手动添加。 修改文件:HardwareVideoEncoderFactory.java和...
  • WebRTC 浏览器支持

    2021-05-18 05:03:06
    WebRTC - 浏览器支持互联网正在快速发展,每天都在建立新的标准。浏览器允许在用户不知情的情况下安装更新,因此您应该跟的上Web和WebRTC的进展。下面是主流平台的支持情况Chrome, Firefox, and Opera最新版本的chrome...
  • html,直接就可以打开,不依赖任何插件.html,直接就可以打开,不依赖任何插件.
  • 原生Webview X5webView (腾讯内核) XWalkView(因特尔浏览器内核-----已停止维护) 我的结果 原生Webview(失败) X5webView (失败—但是使用QQ打开后可以使用) XWalkView(成功----目前只是用在Android5.1.1、...
  • 在Android4.1上 播放网页视频,控制条显示在中间,并且 只有声音没有画面,全屏后,就都正常了 在Android6.0上 播放网页视频,声音画面都正常,就是没有控制条,不能全屏 有遇过同样问题的,请加好友 515388151

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 792
精华内容 316
关键字:

webview支持webrtc