小编Cip*_*ipi的帖子

JavaScript函数可以自行返回吗?

我可以编写一个返回iteself的函数吗?

我正在阅读关于闭包的一些描述 - 参见例6 - 函数返回一个函数,所以你可以调用func()();有效的JavaScript.

所以我想知道一个函数可以以这样的方式返回自己,你可以无限期地将它链接到它自己:

func(arg)(other_arg)()(blah);
Run Code Online (Sandbox Code Playgroud)

使用argumentsobject,callee还是caller?

javascript function self

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

检测RTP流中的MPEG4/H264 I帧(IDR)

我需要检测RTP数据包中的MPEG4 I帧.我知道如何删除RTP标头并获取其中的MPEG4帧,但我无法弄清楚如何识别I帧.

它有特定的签名/标题吗?

rtp rtsp

25
推荐指数
3
解决办法
5万
查看次数

WINSOCK - 为非现有IP上的连接尝试设置超时?

我正在用C++开发一个RTSP源过滤器,我正在使用WINSOCK 2.0 - 阻塞套接字.

当我创建一个阻塞套接字时,我将其设置SO_RCVTIMEO为3秒,如下所示:

int ReceiveTimeout = 3000; 
int e = setsockopt(Socket, SOL_SOCKET, SO_RCVTIMEO, (char*)&ReceiveTimeout, sizeof(int));
Run Code Online (Sandbox Code Playgroud)

我的过滤器尝试连接到IP_ADDRESS:554(554是RTSP服务器端口).如果有一台服务器在端口554上侦听该IP,一切顺利,但是:

  1. 如果我的过滤器创建了一个现有IP地址的套接字,但是在一个没有人监听的随机端口上,connect()等待3秒并返回WSAETIMEDOUT.所以在3秒后,我知道提供的URL很糟糕.

  2. 如果我的过滤器为非现有IP地址创建了一个套接字,并尝试连接它,它会在返回SOCKET_ERROR之前挂起大约10秒.因此,SO_RCVTIMEO如果网络上不存在IP ,则会被忽略...

问题: 在第二种情况下,如何设置非现有IP的超时?我是否需要首先发送ICMP PING以查看IP是否存在,或执行其他类似的检查?

任何帮助将不胜感激.感谢名单.:)

对我的问题的回答

因为我正在使用阻塞套接字,调用connect()块,直到建立连接,或连接失败,因为主机没有响应,或者它拒绝连接.如果我将套接字的超时设置为3秒,并尝试连接到不存在的主机,我的PC(客户端)将发送带有SYN标志设置的TCP数据包,以启动Threeway握手.通常,主机(如果启动)将使用包含ACKSYN设置标志的TCP数据包进行响应,然后,客户端(我)将发送带有ACK标志设置的TCP数据包.然后建立连接.但是,如果主机关闭,并且SYN被发送,客户等待3秒超时,然后再次尝试,又一次,直到TcpMaxConnectRetransmissions(Microsoft文章达到)注册表设置,因为主机可以UP,但SYN数据包可能迷路...我的Windows XP将此设置为4,我猜,所以每次尝试发送时SYN,等待3秒,当第四次尝试失败时,它返回SOCKET_ERROR(12秒后),并设置WSAETIMEDOUT为最后一次WSA错误.

解决这个问题的方法是使用非阻塞套接字,并尝试手动测量连接尝试时间(因为现在connect()不会阻塞),就像Martin James所说的那样.

另一种方法是摆弄注册表,这是最后的手段......

c++ winsock2

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

加载依赖于其他共享库的共享库

问题:

我正在Eclipse中构建Android应用程序,它使用共享库libgstreamer-0.10.so (为Android-8平台编译的GStreamer-android NDK Bundle库).我libs/armeabi在项目根文件夹中创建了新文件夹并将其放在那里.此外,我已将所有其他随附的库(其中158个)放在同一个文件夹中.如果我把它放在我的主要活动代码中:

static{
    System.loadLibrary("gstreamer-0.10");
}
Run Code Online (Sandbox Code Playgroud)

在Android-8模拟器上构建/安装/运行我的应用程序,它会抛出此错误:

06-15 21:54:00.835: E/AndroidRuntime(402): Caused by: java.lang.UnsatisfiedLinkError: Cannot load library: link_image[1962]:    33 could not load needed library 'libglib-2.0.so' for 'libgstreamer-0.10.so' (load_library[1104]: Library 'libglib-2.0.so' not found)
Run Code Online (Sandbox Code Playgroud)

现在,和libglib-2.0.so它在同一个文件夹中libgstreamer-0.10.so,为什么没有加载?我得到链接器试图加载它/system/lib,libglib-2.0.so只是不存在,但为什么不从它的位置加载它libgstreamer-0.10.so

所以我libgstreamer-0.10.so用这个命令去发现哪些lib 依赖:

arm-linux-androideabi-readelf -d libgstreamer-0.10.so
Run Code Online (Sandbox Code Playgroud)

结果:

Dynamic section at offset 0x118b64 contains 29 entries:
  Tag        Type                         Name/Value
 0x00000001 (NEEDED)                     Shared library: [libglib-2.0.so]
 0x00000001 (NEEDED)                     Shared library: [libgobject-2.0.so]
 0x00000001 (NEEDED)                     Shared …
Run Code Online (Sandbox Code Playgroud)

linker android gstreamer android-ndk

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

如何解码H264 SDP中的sprop-parameter-sets?

对于h264流,SDP中sprop-parameter-sets中Base64解码字节的含义是什么?如何从此示例中了解视频大小?

SDP示例:

sprop-parameter-sets=Z0IAKeNQFAe2AtwEBAaQeJEV,aM48gA==
Run Code Online (Sandbox Code Playgroud)

第一部分从Base64解码到Base16:

67 42 00 29 E3 50 14 07 B6 02 DC 04 04 06 90 78 91 15
Run Code Online (Sandbox Code Playgroud)

第二部分(逗号分隔):

68 CE 3C 80
Run Code Online (Sandbox Code Playgroud)

解答: 获取H264Video流的尺寸

base64 h.264 sdp

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

如何强制客户端将RTP传输从UDP切换到TCP?

如果客户端想要观看我的RTSP服务器上的流,它首先尝试通过UDP协议设置流.我怎么能告诉它我的服务器只支持RTP/AVP/TCP并且它应该切换传输?

我要终止我的服务器上的UDP支持,但所有的客户端第一次尝试设置了UDP会话,后来他们通过TCP这样做......我想切换他们尽快在RTSP协议TCP.

我怎样才能做到这一点?

rtp rtsp

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

在运行时更新应用程序的库(DLL)?

有没有办法在 C# 中运行应用程序时更新 DLL?例如,如果有一个 DLL 的函数如下所示:

void write()
{
    Console.WriteLine("LALALA");
}
Run Code Online (Sandbox Code Playgroud)

它是在一个线程中调用的,调用之间有 1 秒的睡眠时间。

现在,我写了新版本:

void write()
{
    Console.WriteLine("LA LA LA\n");
}
Run Code Online (Sandbox Code Playgroud)

我可以在运行时用这个新的 DLL 更新旧的 DLL 吗?重要的是我的应用程序始终启动并运行,无论什么......但我想更新库是一个例外。我错了吗?

c# dll

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

UDP - 我可以发送两个数据报部分,并使接收端将它们组合成一个吗?

这可能是一个愚蠢的问题,但由于我在这里相对较新,所以它...如果我有两个单独的字节数组,我需要接收端作为一个大数组,例如:

byte[] Array1 = {1,1,1}
byte[] Array2 = {2,2,2}
Run Code Online (Sandbox Code Playgroud)

我可以避免创建缓冲区并将每个数组复制到其中,然后发送该缓冲区,如下所示:

byte[] Buffer= new byte[Array1.Length + Array2.Length];
Buffer.BlockCopy(Array1, 0, Buffer, 0, Array1.Length);
Buffer.BlockCopy(Array2, 0, Buffer, Array1.Length, Array2.Length);

udpClient.Send(Buffer, Buffer.Length);
Run Code Online (Sandbox Code Playgroud)

因为如果两者都很大,而且数据速率很高,那么复制会占用很多系统资源......所以我可以告诉udpClient我正在启动UDP碎片,然后这样做:

udpClient.ImStartingOneBigDatagram();

udpClient.Send(Array1, Array1.Length);
udpClient.Send(Array2, Array2.Length);

udpClient.ThatsAllFolks();
Run Code Online (Sandbox Code Playgroud)

并确保接收方获得:

byte[] recv = {1,1,1,2,2,2}
Run Code Online (Sandbox Code Playgroud)

我正在使用C#,我不需要使用UdpClient,我只是在说明我的观点.

c# sockets udp udpclient

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

我怎么知道任何h264文件的持续时间?

我有一个文件,其中只有h264帧以NAL单位的形式存在.所以现在有什么方法可以计算该文件的持续时间吗?

我不知道文件中有多少帧.我只有文件大小.

PS:我想做的就是使用C语言和Linux平台.

c duration ffmpeg h.264 video-codecs

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

Adobe Flash播放RTSP流?

我有一个自制的RTSP服务器,可以将视频流式传输到QuickTime客户端.现在,我需要支持Flash Player客户端,因为QuickTime需要一些配置才能在Windows上运行,并且在Linux发行版中也没有实现它.然后我选择了Flash.

但是: Flash支持RTSP ??? 如果没有,我在哪里可以找到其流媒体协议的文档,以便我可以构建一个?

有关这方面的任何细节将不胜感激... thanx!

flash rtsp

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