小编gal*_*arm的帖子

Instant vs LocalDateTime - 何时优先于另一个

我需要以UTC格式保存并显示我的服务器中发生的事件的日期时间.我可以选择使用Instant.now()或LocalDateTime.now(ZoneOffset.UTC)

我什么时候应该更喜欢一个?

java java-8 java-time

21
推荐指数
1
解决办法
4653
查看次数

使用mp4box直播短划线内容

我正在尝试使用媒体源扩展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组合到管道中.

  1. MP4Box可以从非文件源获取输入数据吗?
  2. MP4Box可以在实时到达时逐步(从文件或其他来源)获取这样的内容吗?即如果流停止1秒钟等待并自动恢复.
  3. 同样的问题,但输出:它可以输出到不是文件(如stdout)的东西,并可以逐步这样做,以便每当输出数据准备好,我将能够采取它并将其传输到Web客户端,基本上生成一个永无止境的虚线MP4.

ffmpeg video-streaming html5-video media-source mpeg-dash

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

属性支持领域 - 它有什么用?

一方面,我知道属性的可取用法是有一个支持字段,如下例所示:

    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)

使用支持字段用于常规(非自动实现)属性有什么用处?

c#

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

windbg"自由"对象类型

在程序运行时监视程序的Virtual Bytes使用情况表明,通过执行某种操作,虚拟字节使用量在大约5分钟内上升了大约1GB.该程序处理tcp套接字和它们之间的高数据传输吞吐量(~800Mbps).

在windbg中加载程序的转储文件表明,内存使用率非常高且快速的原因是大约1GB的"免费"对象.实际上,当我从程序的控制台屏幕调用垃圾收集器(gen 0,1和2)时(在达到此状态之后),它释放大约1GB的内存使用量.

我试图了解这些免费对象究竟是什么,为什么它们不是垃圾收集器自动收集的垃圾.

编辑:一个建议是我可能正在创建大对象堆中的对象并且它变得脆弱,但事实并非如此,因为我已经看到所有"自由"对象都位于第2代堆中.

其他建议是,由于固定对象,Gen 2 Heap可能会碎片化,但如果是这种情况,GC.Collect不会解决问题但实际上确实如此,我相信情况并非如此.

我与Paul的讨论怀疑的是内存确实被释放但是由于某些原因很少或仅在我手动调用GC.Collect时返回到操作系统.

.net c# garbage-collection memory-management windbg

8
推荐指数
2
解决办法
5184
查看次数

.Net垃圾收集器 - 查看运行时期间提升为Gen2的内容

我的程序以非常高的速率(大约1MB /秒)向Gen2提升内存,并且当Gen2收集发生时它会导致性能损失.我为了解哪些对象被提升而做出的每一次尝试都失败了 - 主要是因为当我在windbg中打开2个转储时,Gen2大小增加的内存被标记为"Free".这让我怀疑Pinned对象引起了问题,但是perfmon统计数据显示固定对象的数量非常低(大约2-4).

我现在正在考虑的是以某种方式识别哪些对象在运行时被提升为Gen2.有这样做的方法吗?

.net c# debugging garbage-collection windbg

8
推荐指数
1
解决办法
2543
查看次数

将媒体源扩展与原始视频帧一起使用

我正在尝试从服务器到浏览器实时实时传输H264视频.H264流不包含在MP4容器内,而是通过原始H264帧的形式找到它到浏览器(通过Web套接字)的方式.

问题是:是否可以使用原始帧而不是MP4或WebM等文件容器来提供媒体源扩展?

诸如MPEG-DASH之类的mp4解决方案在低延迟,多视频同步和我需要实现的其他元素方面不具备我所需的灵活性.

video video-streaming h.264 html5-video media-source

8
推荐指数
1
解决办法
2933
查看次数

FFMPEG中创建碎片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)
  1. "-i rtsp://172.20.28.52:554/h264"因为源是来自ip camera的rtp数据包流中的h264.为了测试,摄像机的GOP设置为1(即所有帧都是关键帧)
  2. "-vcodec copy"因为我不需要转码,只能转换到mp4.
  3. "-movflags empty_moov + default_base_moof + frag_keyframe"根据媒体源扩展规范创建一个分段的mp4.
  4. " - "最后为了输出mp4到stdout.我抓住了输出并通过网络套接字将其发送到webclient.

一切都运行良好,期待我试图解决的延迟问题.如果我每次从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 …

mp4 ffmpeg video-streaming media-source mpeg-dash

8
推荐指数
1
解决办法
5027
查看次数

了解.NET应用程序内存大小

我正在处理的应用程序在启动后立即占用338MB私有字节和780MB虚拟字节.我试图理解是什么需要所有这些记忆.希望在了解我能够减少它的大小之后.这是一个32位C#应用程序,上面的数字是在Windows7 64位运行时拍摄的.

使用windbg打开转储显示堆大小为47MB.应用程序加载的外部库文件总大小为60MB.

一个空的c#应用程序只需要10MB,那么什么可能导致我的应用程序达到338MB私有字节?为什么windows7会分配780MB虚拟内存?

任何指示都会有帮助.

.net c# memory windows clr

6
推荐指数
1
解决办法
1621
查看次数

无法对'SourceBuffer'执行'appendBuffer':HTMLMediaElement.error属性不为null

我正在尝试通过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)

javascript html5 android android-webview media-source

6
推荐指数
1
解决办法
3666
查看次数

在onDestroy之前调用onActivityResult

在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,但它们会以相反的顺序调用.知道为什么会这样吗?

android android-activity

5
推荐指数
1
解决办法
1548
查看次数