小编wpp*_*wpp的帖子

更改RTCPeerConnection的MediaStream

我想从音频/视频流更改为"屏幕共享"流:

peerConnection.removeStream(streamA) // __o_j_sep... in Screenshots below
peerConnection.addStream(streamB)  // SSTREAM in Screenshots below
Run Code Online (Sandbox Code Playgroud)
  • streamA 是来自我的相机和麦克风的视频/音频流.
  • streamB 是我从我的扩展中获得的屏幕截图.
  • 它们都是MediaStream对象,如下所示:

streamA

streamB

*1备注

但是,如果我删除streamApeerConnectionaddStream(streamB)喜欢上面好像没有什么改变.

以下按预期工作(两端的流被删除并重新添加)

peerConnection.removeStream(streamA) // __o_j_sep...
peerConnection.addStream(streamA) // __o_j_sep...
Run Code Online (Sandbox Code Playgroud)

更多细节

我发现这个例子是"反向"(从屏幕截图切换到带摄像头的音频/视频),但无法发现显着差异.

peerConnection RTCPeerConnection对象实际上是由这创造SIPML库 源可以在这里找到代码.我这样访问它:

var peerConnection = stack.o_stack.o_layer_dialog.ao_dialogs[1].o_msession_mgr.ao_sessions[0].o_pc
Run Code Online (Sandbox Code Playgroud)

(是的,这看起来不正确,但是没有正式的方法来访问Peer Connection,请参阅此处的讨论)和此处.

最初我试图用(视频)改变videoTrack of streamA videoTrack streamB.在这里查看问题.有人向我建议我应该尝试重新协商对等连接(通过删除/添加Streams),因为addTrack不会触发重新协商.

我也在这里寻求帮助,但维护者似乎很忙,没有机会回应.


*1 备注:为什么streamB没有videoTracks财产?流在HTML <video>元素中播放,似乎"有效".我是这样得到的:

navigator.webkitGetUserMedia({
  audio: false, …
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome webrtc sipml

16
推荐指数
1
解决办法
6597
查看次数

Postgresql全文搜索部分单词

postresql是否能够根据'half'一词进行全文搜索?例如,我正在尝试"tree"搜索,但我告诉postgres搜索"tr".

我找不到能够做到这一点的解决方案.

目前我正在使用

 select * from test, to_tsquery('tree') as q where vectors @@ q ;
Run Code Online (Sandbox Code Playgroud)

但是我想做这样的事情:

 select * from test, to_tsquery('tr%') as q where vectors @@ q ;
Run Code Online (Sandbox Code Playgroud)

postgresql full-text-search

14
推荐指数
3
解决办法
2万
查看次数

OSX中的Bash管道有时会提示找不到命令

在OSX终端中:

du -h | sort -nr
-bash:  sort: command not found

which sort
/usr/bin/sort
Run Code Online (Sandbox Code Playgroud)

奇怪的是:我尝试重现错误,它似乎是完全随机的.我的PATH回应道:

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin:/usr/texbin:/Users/sytycs/.rvm/bin
Run Code Online (Sandbox Code Playgroud)

这种情况只发生在管道与发生grep,more,less等任何想法是什么原因造成的?

bash pipe piping osx-lion

13
推荐指数
2
解决办法
4363
查看次数

如何在Chrome for iOS中使用getUserMedia

我正在开发一个简单的应用程序,在此我试图访问相机和麦克风使用getUserMedia.它适用于桌面Chrome和Android Chrome,但在iPhone和iPad Chrome中无效.

navigator.getUserMedia = navigator.getUserMedia
        || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;
var constraints = "";
if (mediaType === "audio,video") {
    constraints = {
        audio : true,
        video : true
    };
} else {
    constraints = {
        audio : true,
        video : false
    };
}
navigator.getUserMedia(constraints, successCallback, errorCallback);
Run Code Online (Sandbox Code Playgroud)

iphone google-chrome ipad ios webrtc

13
推荐指数
4
解决办法
2万
查看次数

如何在NGINX中设置自定义503错误页面?

我学会了如何让NGINX返回503客户错误页面,但我无法了解如何执行以下操作:

示例配置文件:

    location / {
        root   www;
        index  index.php;
        try_files /503.html =503;
    }

    error_page 503 /503.html;
    location = /503.html {
        root   www;
    }
Run Code Online (Sandbox Code Playgroud)

如您所见,根据上面的代码,如果503.html在我的根目录中找到一个被调用的页面,该站点将把该页面返回给用户.

似乎虽然上面的代码可以在有人只是访问我的网站时输入

它不会捕获如下请求:

使用我的代码,用户仍然可以看到配置文件页面或其他任何页面index.php.

问题:

我如何陷阱请求所有页面在我的网站,并转发给503.html503.html出现在我的根文件夹是什么?

nginx

12
推荐指数
3
解决办法
2万
查看次数

停止后无法启动RMI服务器

我在停止后重新启动RMI注册表时遇到问题:

import java.rmi.*;
import java.rmi.registry.*;
import java.rmi.server.UnicastRemoteObject;
import javax.swing.JOptionPane;

public class CinemaServer
{
    private Registry registry;
    ClientImpl clientImple; //remote interface implemented class
    private static String title="Cinema Pvt Ltd";

    public CinemaServer() {
        try {
            clientImple = new ClientImpl();
            registry=LocateRegistry.createRegistry(3311);
            registry.rebind("RMI_INSTANCE", clientImple);
    } catch (RemoteException e) {
            JOptionPane.showMessageDialog(null, "Can't Start RMI Server",title,JOptionPane.ERROR_MESSAGE);
        }
    }

    public void stopServer()
    {
        try {
            registry.unbind("RMI_INSTANCE");
            UnicastRemoteObject.unexportObject(clientImple, true);
        } catch (NotBoundException e) {
            JOptionPane.showMessageDialog(null, "Can't Stop Server",title,JOptionPane.ERROR_MESSAGE);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)
  1. 我启动服务器: CinemaServer ser=new CinemaServer();

  2. 当我打电话给ser.stopServer();它停止. …

java rmi

12
推荐指数
1
解决办法
1万
查看次数

Rails技术在重定向后执行javascript

启用了Rails应用程序(3.2.8)和turbolinks(不确定是否相关).

  1. 我有一些信息,一个link在用户显示页面上.(例如某事发生变化的通知.)
  2. 当用户点击链接时我想将他引导到页面并且
  3. 直观地突出显示已更改的元素.

目前我打算像这样处理它:

创建链接,使它们具有以下形式:

project2/comment.1453

创建一个notifications controller,获取projects2更改类型comment及其ID的内容1453.所以理论上我想重定向projects2并突出显示该页面上id为1453的评论.问题是:重定向后如何突出显示注释?

notificationscontroller.rb(伪代码!)

def show
  project = Project.find(params[:project_id])
  comment = Comment.find(params[:commment_id])
  redirect_to project AND highlight!
end
Run Code Online (Sandbox Code Playgroud)

在我的研究期间,我遇到了Backbone,看起来像Backbones路由器可以通过使用函数响应url来解决这个问题(注释的突出显示).但我对Backbone没有任何经验.

我不确定这种功能的一般方法是什么.并希望避免走错路.如果你可以帮助我,那会很棒.

编辑:一个迷你问题的排序:我不确定使用哪个字符comment.1453#一个更好的选择?(comment#1453)

javascript jquery ruby-on-rails

12
推荐指数
1
解决办法
2992
查看次数

使用nginx + Unicorn + rails的IP地址错误

我检查控制器中的ip-address

request.env['REMOTE_ADDR']
Run Code Online (Sandbox Code Playgroud)

这在我的测试环境中工作正常.但是在使用nginx + unicorn的生产服务器上,我总能得到127.0.0.1.

这是我的网站的nginx配置:

  upstream unicorn {
  server unix:/tmp/unicorn.urlshorter.sock fail_timeout=0;
}

server {
  listen 80 default deferred;
  # server_name example.com;
  root /home/deployer/apps/urlshorter/current/public;

  location ^~ /assets/ {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
  }

  try_files $uri/index.html $uri @unicorn;
  location @unicorn {
    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://unicorn;
  }

  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;
}
Run Code Online (Sandbox Code Playgroud)

nginx unicorn ruby-on-rails-3

11
推荐指数
3
解决办法
8476
查看次数

WebRTC firefox约束

我目前在个人开发中使用WebRTC,一切正常.我从网络摄像头获取流,但现在我想使用约束getUserMedia().

var constraints = {
           audio: false,
           video: {
               mandatory : {
                     minWidth: 1280,
                     minHeight: 720 
               }
           }
};
Run Code Online (Sandbox Code Playgroud)

当我在Firefox中测试它时,它似乎忽略了约束.当我在Chrome或Opera上测试时,我的约束工作正常并且我的质量很好,有谁知道为什么?问题是Firefox?

谢谢你的建议

javascript firefox webrtc

10
推荐指数
2
解决办法
7770
查看次数

为什么没有为此 MediaStreamTrack 触发“结束”事件?

我想知道 aMediaStreamTrack的结束。根据MDN,一个ended事件是

在曲目播放结束时发送(当值readyState变为 时ended)。也可以使用onended事件处理程序属性。

所以我应该能够设置我的回调,如:

const [track] = stream.getVideoTracks();
track.addEventListener('ended', () => console.log('track ended'));
track.onended = () => console.log('track onended');
Run Code Online (Sandbox Code Playgroud)

一旦我通过以下方式停止跟踪,我希望这些被调用:

tracks.forEach(track => track.stop());
// for good measure? See
// https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack/stop#Stopping_a_video_stream
videoElem.srcObject = null;
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是没有调用回调。我构建了以下JSFiddle,其中以 3 种不同方式创建了 3 个 MediaStream:

  1. getUserMedia
  2. getDisplayMedia
  3. getCaptureStream (画布元素)

我还有 3 个按钮可以停止相应MediaStream. 行为如下:

  • 所有 3 个流都是inactive,MediaStream 的oninactive回调被触发(在 Chrome 中,Firefox 似乎不支持这个)。
  • 所有轨道具有 …

javascript webrtc mediastream

10
推荐指数
1
解决办法
2905
查看次数