小编Grz*_*icz的帖子

为什么 ExtractMpegFramesTest 不适用于旋转的输入文件?

我开始为应用程序解码/编码视频,似乎BigFlake 的网站是工作视频代码的权威参考。我已将ExtractMpegFramesTest_egl14.java复制到我的项目中,并将其修改为使用不同的文件路径,但仅此而已。它从我复制到设备中的预先录制的视频中正确提取帧。然而,当尝试将它与从设备相机录制的视频一起使用时,我得到的帧只是水平线:

在此输入图像描述

在测试了不同录制的视频后,我意识到问题来自旋转视频。该设备的摄像头对来自帧缓冲区的帧进行编码,然后在视频上添加旋转标签。这可以从对象中提取MediaFormat

int rotation = format.getInteger("rotation-degrees");
Run Code Online (Sandbox Code Playgroud)

不幸的是,交换已保存图像的宽度/高度不会改变任何内容,图像仍然会损坏。必须对保存代码执行哪些操作才能正确处理旋转帧?

java video android android-mediacodec

4
推荐指数
1
解决办法
171
查看次数

将 Nim Anon 函数导出到 C++

我正在尝试从 C++ 调用 Nim 代码。具体来说,就是一个接受匿名函数的函数。

我在 Nim 中有以下代码:

proc test*(a: proc()) {.exportc.} = a()
Run Code Online (Sandbox Code Playgroud)

我编译成一个静态库。然后我将它链接到我的 C++ 可执行文件并尝试使用

extern "C" test(void a(void);
Run Code Online (Sandbox Code Playgroud)

并调用它

void anon() { printf("hello"); }
...
test(anon)
Run Code Online (Sandbox Code Playgroud)

一切都编译得很好,但是当我运行程序时,它崩溃了。

c++ ffi nim-lang

3
推荐指数
1
解决办法
585
查看次数

nim re,正则表达式模块未填充匹配组

我想使用 nim 库的正则表达式模块:

import re

var s="""<webSettings>
<add key="MyLaborPassword" value="shadowed" />
<add key="MyLaborUserID" value="shadowed" />
<add key="MyLaborUrl" value="shadowed" />
<add key="DebugSoapLoggingEnabled" value="false" />
  </webSettings>
 """


var matches : seq[string] = @[]

echo s.find(re"""MyLaborP(ass)word""",matches)
echo matches
Run Code Online (Sandbox Code Playgroud)

给我

25
@[]
Run Code Online (Sandbox Code Playgroud)

但我除了:

25
@["ass"]
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

regex nim-lang

2
推荐指数
1
解决办法
514
查看次数

调用SurfaceHolder.setFixedSize()有什么用?

我在网上浮动的许多例子都有类似的代码:

mSurfaceHolder = mVideoSurface.getHolder();
mSurfaceHolder.addCallback(this);
mSurfaceHolder.setFormat(PixelFormat.TRANSPARENT);
mSurfaceHolder.setFixedSize(20, 10);
Run Code Online (Sandbox Code Playgroud)

然后在回调中我有:

@Override public void surfaceCreated(SurfaceHolder holder)
{
    Log.d(TAG, "SurfaceCreated");
    mSurfaceHolder.setFixedSize(20, 10);
}

@Override public void surfaceChanged(
    SurfaceHolder holder, int format, int width, int height
)
{
    Log.d(TAG, "SurfaceChanged to " +
        format + " width " + width + " height " + height);
}
Run Code Online (Sandbox Code Playgroud)

从这段代码中我可以预期视频表面被设置为20x10像素的微小尺寸,然后缩小到我正在使用它的任何布局尺寸,显示像素化/模糊版本.但是,正在播放的视频在其完整的原始分辨率下看起来是正确的,它不会缩小到20x10.但我得到这样的日志:

SurfaceChanged to -2 width 20 height 10
Run Code Online (Sandbox Code Playgroud)

因此,如果视频表面设置为这么小的尺寸,但从图形上看,视频看起来仍然是高清晰度,设置表面尺寸有什么用?

完整源代码可在https://github.com/gradha/Stackoverflow38118219获得.

video android surfaceview surfaceholder

2
推荐指数
1
解决办法
3288
查看次数

Nim:包含Posix的C头

我正在尝试使用Nim Posix库,特别是文件系统统计信息:

http://nim-lang.org/docs/posix.html#Stat

从我对其他Nim模块的测试中,导入和使用应该像这样工作:

import posix

var stats: Stat
stat("/", stats)
echo stats.st_blksize
Run Code Online (Sandbox Code Playgroud)

但编译器给了我一个

Error: undeclared identifier: 'Stat'
Run Code Online (Sandbox Code Playgroud)

编译时是否需要添加一些手动包含,或者我是否遗漏了导入的内容?

nim-lang

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

为什么我的自定义 TextView 没有继承字体?

对于一个特定的功能,我需要实现一个TextView使用可跨度来设置文本样式的自定义。一切正常,除了自定义视图使用的字体似乎是默认字体而不是我指定的字体。减少到最少的代码触发我创建这个类的问题:

class DummyTextViewBad : TextView {
    constructor(context: Context?) : super(context)
    constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs)
    constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr)
}
Run Code Online (Sandbox Code Playgroud)

在我的 xml 中,只需将小部件从 更改为TextView即可DummyTextViewBad使字体 (avenir) 消失并使用系统默认值进行渲染。但是,如果我像这样手动设置字体,它会起作用:

class DummyTextViewGood : TextView {
    constructor(context: Context?) : super(context) {
        setAvenir(context)
    }

    constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) {
        setAvenir(context)
    }

    constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) {
        setAvenir(context)
    }

    fun setAvenir(context: Context?) {
        try …
Run Code Online (Sandbox Code Playgroud)

fonts android

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

如何在双向套接字连接上序列化telnet,如通信?

我在同一台机器上运行的VB和VC++程序之间实现了TCP/IP通信.在VC++方面,我产生了一个侦听连接的线程.在VB方面,我使用Winsock API连接到C++服务器.一切似乎都运行良好,特别是当我手动调试并逐步完成通信时.协议是基于文本的,命令在'\n'上终止,可能有也可能没有答案.

这就是问题所在.我正在尝试实现发送到服务器的命令,这需要一些处理,服务器将它们发送回客户端.在简单的条件下,这可以正常工作,但在重负载或不同的机器配置下,有时通信会中断.

客户端可能正在发送命令,但服务器可能正在发送先前命令的答案.在VB客户端以某种方式获得(而不是它得到"EIVED"一个"接收数据"说,)它打破了国家机器,我已经实现跟踪连接一个支离破碎的答案.

所以,是的,客户端和服务器正在同时谈话,这是一个问题.如何序列化或排队此通信?我知道这类似于以太网上的网络数据包冲突问题.

c++ sockets vb6 multithreading telnet

0
推荐指数
1
解决办法
416
查看次数