我需要以UTC格式保存并显示我的服务器中发生的事件的日期时间.我可以选择使用Instant.now()或LocalDateTime.now(ZoneOffset.UTC)
我什么时候应该更喜欢一个?
我正在尝试使用媒体源扩展API将H.264内容直播到HTML5.
以下方法效果很好:
ffmpeg -i rtsp://10.50.1.29/media/video1 -vcodec copy -f mp4 -reset_timestamps 1 -movflags frag_keyframe+empty_moov -loglevel quiet out.mp4
然后:
mp4box -dash 1000 -frag 1000 -frag-rap out.mp4
我可以使用MP4Box输出(out_dashinit.mp4)并通过Web Sockets(块大块)将其发送到将客户端提供给媒体源API的JavaScript客户端.
但是,这对于实时内容来说不是一个好方法.
我现在要做的是创建一个单独的管道,以便以最小的可能延迟实时完成.使用FFmpeg,可以将输出重定向到stdout而不是out.mp4抓取内容.我无法弄清楚是否可以将MP4Box组合到管道中.
stdout)的东西,并可以逐步这样做,以便每当输出数据准备好,我将能够采取它并将其传输到Web客户端,基本上生成一个永无止境的虚线MP4.一方面,我知道属性的可取用法是有一个支持字段,如下例所示:
private int m_Capacity;
public int Capacity
{
get { return m_Capacity > 0 ? m_Capacity : -666; }
set { m_Capacity = value; }
}
Run Code Online (Sandbox Code Playgroud)
另一方面,使用上面的示例而不是丢弃字段并仅将属性用于所有目的,我可以获得什么好处,如下例所示:
public int Capacity
{
get { return Capacity > 0 ? Capacity : -666; }
set { Capacity = value; }
}
Run Code Online (Sandbox Code Playgroud)
使用支持字段用于常规(非自动实现)属性有什么用处?
在程序运行时监视程序的Virtual Bytes使用情况表明,通过执行某种操作,虚拟字节使用量在大约5分钟内上升了大约1GB.该程序处理tcp套接字和它们之间的高数据传输吞吐量(~800Mbps).
在windbg中加载程序的转储文件表明,内存使用率非常高且快速的原因是大约1GB的"免费"对象.实际上,当我从程序的控制台屏幕调用垃圾收集器(gen 0,1和2)时(在达到此状态之后),它释放大约1GB的内存使用量.
我试图了解这些免费对象究竟是什么,为什么它们不是垃圾收集器自动收集的垃圾.
编辑:一个建议是我可能正在创建大对象堆中的对象并且它变得脆弱,但事实并非如此,因为我已经看到所有"自由"对象都位于第2代堆中.
其他建议是,由于固定对象,Gen 2 Heap可能会碎片化,但如果是这种情况,GC.Collect不会解决问题但实际上确实如此,我相信情况并非如此.
我与Paul的讨论怀疑的是内存确实被释放但是由于某些原因很少或仅在我手动调用GC.Collect时返回到操作系统.
我的程序以非常高的速率(大约1MB /秒)向Gen2提升内存,并且当Gen2收集发生时它会导致性能损失.我为了解哪些对象被提升而做出的每一次尝试都失败了 - 主要是因为当我在windbg中打开2个转储时,Gen2大小增加的内存被标记为"Free".这让我怀疑Pinned对象引起了问题,但是perfmon统计数据显示固定对象的数量非常低(大约2-4).
我现在正在考虑的是以某种方式识别哪些对象在运行时被提升为Gen2.有这样做的方法吗?
我正在尝试从服务器到浏览器实时实时传输H264视频.H264流不包含在MP4容器内,而是通过原始H264帧的形式找到它到浏览器(通过Web套接字)的方式.
问题是:是否可以使用原始帧而不是MP4或WebM等文件容器来提供媒体源扩展?
诸如MPEG-DASH之类的mp4解决方案在低延迟,多视频同步和我需要实现的其他元素方面不具备我所需的灵活性.
我正在使用以下命令为html5流创建一个支离破碎的mp4:
-i rtsp://172.20.28.52:554/h264 -vcodec copy -an -f mp4 -reset_timestamps 1 -movflags empty_moov+default_base_moof+frag_keyframe -loglevel quiet -
Run Code Online (Sandbox Code Playgroud)
一切都运行良好,期待我试图解决的延迟问题.如果我每次从stdout进入数据时都会记录,并且到达时间戳,我得到这个输出:
16/06/2015 15:40:45.239数据大小= 24
16/06/2015 15:40:45.240得到的数据大小= 7197
16/06/2015 15:40:45.241得到数据大小= 32768
2015年6月16日15:40:45.241数据大小= 4941
2015年6月16日15:40:45.241数据大小= 12606
2015年6月16日15:40:45.241数据大小= 6345
16/06/2015 15:40:45.241得到数据大小= 6339
2015年6月16日15:40:45.242得到数据大小= 6336
2015年6月16日15:40:45.242得到数据大小= 6361
2015年6月16日15:40:45.242获得数据大小= 6337
16/06/2015 15:40:45.242得到数据大小= 6331
2015年6月16日15:40:45.242得到数据大小= 6359
16/06/2015 15:40:45.243得到的数据大小= 6346
16/06/2015 15:40:45.243得到的数据大小= 6336
2015年6月16日15:40:45.243数据大小= 6338
2015年6月16日15:40:45.243得到数据大小= 6357
2015年6月16日15:40:45.243得到数据大小= 6357
16/06/2015 15:40:45.243得到的数据大小= 6322
16/06/2015 15:40:45.243得到数据大小= 6359
2015年6月16日15:40:45.244数据大小= 6349
16/06/2015 …
我正在处理的应用程序在启动后立即占用338MB私有字节和780MB虚拟字节.我试图理解是什么需要所有这些记忆.希望在了解我能够减少它的大小之后.这是一个32位C#应用程序,上面的数字是在Windows7 64位运行时拍摄的.
使用windbg打开转储显示堆大小为47MB.应用程序加载的外部库文件总大小为60MB.
一个空的c#应用程序只需要10MB,那么什么可能导致我的应用程序达到338MB私有字节?为什么windows7会分配780MB虚拟内存?
任何指示都会有帮助.
我正在尝试通过socket.io将视频文件流式传输到客户端(当前使用Chrome作为客户端)。我只得到视频的第一帧,然后出现Failed to appendBuffer:
无法对'SourceBuffer'执行'appendBuffer':HTMLMediaElement.error属性不为null
JS代码的一部分:
if (buffer.updating || queue.length > 0) {
console.log("buffer.updating = " + buffer.updating + " queue.length = " + (queue.length));
queue.push(videoData);
} else {
console.log("else buffer.updating = " + buffer.updating + " queue.length = " + (queue.length));
buffer.appendBuffer(videoData);
}
}
};
var play = function() {
//var mimeType = `video/mp4;codecs="${$scope.codec}"`;
var mimeType = 'video/mp4;codecs="' + codec +'"';
console.log("mimetype = " + mimeType + " is supported = " + MediaSource.isTypeSupported(mimeType));
buffer = mediaSource.addSourceBuffer(mimeType);
buffer.addEventListener('update', function () …Run Code Online (Sandbox Code Playgroud) 在MainActivity.java中,我进行以下调用:
Intent activity = new Intent(this, CameraDetectionActivity.class);
startActivityForResult(activity, request);
Run Code Online (Sandbox Code Playgroud)
在CameraDetectionActivity内部的某些时候,我运行以下2行(所有这些都发生在GUI线程中):
setResult(Activity.RESULT_OK);
finish();
Run Code Online (Sandbox Code Playgroud)
我希望在MainActivity中的onActivityResult之前调用onDestroy,但它们会以相反的顺序调用.知道为什么会这样吗?