我真的很难理解使用node.js将ffmpeg的实时输出流式传输到HTML5客户端的最佳方法,因为有很多变量在起作用,我在这个领域没有很多经验,花了很多时间尝试不同的组合.
我的用例是:
1)IP视频摄像机RTSP H.264流由FFMPEG拾取并使用节点中的以下FFMPEG设置重新转换为mp4容器,输出到STDOUT.这仅在初始客户端连接上运行,因此部分内容请求不会再次尝试生成FFMPEG.
liveFFMPEG = child_process.spawn("ffmpeg", [
"-i", "rtsp://admin:12345@192.168.1.234:554" , "-vcodec", "copy", "-f",
"mp4", "-reset_timestamps", "1", "-movflags", "frag_keyframe+empty_moov",
"-" // output to stdout
], {detached: false});
Run Code Online (Sandbox Code Playgroud)
2)我使用节点http服务器捕获STDOUT并在客户端请求时将其流回客户端.当客户端第一次连接时,我生成上面的FFMPEG命令行,然后将STDOUT流传递给HTTP响应.
liveFFMPEG.stdout.pipe(resp);
Run Code Online (Sandbox Code Playgroud)
我还使用了流事件将FFMPEG数据写入HTTP响应,但没有任何区别
xliveFFMPEG.stdout.on("data",function(data) {
resp.write(data);
}
Run Code Online (Sandbox Code Playgroud)
我使用以下HTTP标头(在流式传输预先录制的文件时也使用并工作)
var total = 999999999 // fake a large file
var partialstart = 0
var partialend = total - 1
if (range !== undefined) {
var parts = range.replace(/bytes=/, "").split("-");
var partialstart = parts[0];
var partialend = parts[1];
}
var start = parseInt(partialstart, 10);
var end …Run Code Online (Sandbox Code Playgroud) 我jstring通过使用JNI 将URL字符串从Java传递到C代码作为数据类型.我的库方法需要一个char *url.
我如何转换jstring的char *?
PS:在C中使用jcharArray有什么好处吗?(即char []在本机方法中传递而不是字符串)
我想增加Line2D的宽度.我找不到任何方法来做到这一点.我是否需要为此目的制作一个小矩形?
我想得到一个属于某个包的所有类的列表以及他们所有的孩子.这些类可能已经加载,也可能没有加载到JVM中.
这似乎是一个简单的问题,我想知道为什么谷歌搜索没有提供任何帮助 - 也不是在StackOverflow,也不是在教程中.我只需要使用bash检查条件是否为假.
我发现我试过的
if ! [ 0==2 ]; then echo Hello; fi
Run Code Online (Sandbox Code Playgroud)
和
if [ ! 0==2 ]; then echo Hello; fi
Run Code Online (Sandbox Code Playgroud)
他们都没有打印Hello.
我发现只有两个类似的问题,但两种情况下的最终答案都是重组代码,不使用"错误"条件.
有谁知道我将如何设置将使用打印的字符串的颜色System.out?
这是我目前的代码:
System.out.println("TEXT THAT NEEDS TO BE A DIFFERENT COLOR.");
Run Code Online (Sandbox Code Playgroud) 我的ajax代码是
$.ajax({
type: 'GET',
dataType: "jsonp",
processData: false,
crossDomain: true,
jsonp: false,
url: "http://someotherdomain.com/service.svc",
success: function (responseData, textStatus, jqXHR) {
console.log("in");
},
error: function (responseData, textStatus, errorThrown) {
alert('POST failed.');
}
});
Run Code Online (Sandbox Code Playgroud)
这是一个跨域的ajax请求.
我得到了正确的请求响应,同时用firebug检查我可以看到响应.
这是我在firebug响应中以及通过Web浏览器访问此URL时的响应
{"AuthenticateUserResult":"{\"PKPersonId\":1234,\"Salutation\":null,\"FirstName\":\"Miqdad\",\"LastName\":\"Kumar\",\"Designation\":null,\"Profile\":\"\",\"PhotoPath\":\"\/UploadFiles\/\"}"}
Run Code Online (Sandbox Code Playgroud)
但我收到了错误
SyntaxError: invalid label
{"AuthenticateUserResult":"{\"PKPersonId\":8970,\"Salutation\
Run Code Online (Sandbox Code Playgroud)
我是否需要使用任何其他方法来使其工作.我想在phonegap + jquery移动应用程序中实现这一点.
此外,我没有任何访问Web服务的权限
如果我禁用Chrome网络安全,它工作正常
我最近遇到了这个很棒的MutationObserver功能,它可以跟踪任何dom元素的变化.我使用了mozilla开发人员网络上显示的代码,但似乎无法使其运行.这是我使用的代码(链接):
// create an observer instance
var target = document.querySelector('#something');
console.log(target);
var observer = new WebKitMutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
console.log("Success");
//$('#log').text('input text changed: "' + target.text() + '"');
//console.log(mutation, mutation.type);
});
});
observer.observe(target, { attributes: true, childList: true, characterData: true });
//observer.disconnect(); - to stop observing
// test case
setInterval(function(){
document.querySelector('#something').innerHTML = Math.random();
},1000);
Run Code Online (Sandbox Code Playgroud)
上面的代码似乎不起作用.但是,如果我用一些jQuery修改相同的代码,一切似乎都很好(这里是演示).有没有我在文档中遗漏的东西,或者我只是误解了观察者的特征.