RTP+ES流方式 jrtplib如何设置视频和音频的两个timestamp?

RTP+ES流方式 jrtplib如何设置视频和音频的两个timestamp?,第1张

1

随便设置一个。主要是再打包时候要同时打时间戳和payload就可以了。

2

和上一个问题的回答一样。不要用增量方式调用。用绝对值方式调用。

注意要同时设置payload和timestamp

在.Net Framework 1.1平台下,从个人体验谈谈如何处理日期时间格式

1. 默认情况下,DateTime.Now.ToString()的输出与Control Panel中Date/Time的设置格式相关。

For example, 当Regional Options中Time设置:

Time format: h:mm:ss tt

AM symbol: 上午

PM symbol:下午

Console.WriteLine(DateTime.Now.ToString())

输出结果:12/6/2004 2:37:37 下午

DateTime.Parse("12/6/2004 2:37:37 下午")

OK

// 将日期和时间的指定 String 表示形式转换成其等效的 SqlDateTime

SqlDateTime.Parse("12/6/2004 2:37:37 下午")

Exception:String was not recognized as a valid DateTime.

SqlDateTime.Parse("12/6/2004 2:37:37 PM")

OK

2. 通过DateTime.ToString(string format)方法,使用指定格式format将此实例的值转换成其等效的字符串表示。

DateTime.Now.ToString("MM/dd/yyyy HH:mm:ss")

输出结果:12/06/2004 14:56:37

此时,DateTime的输出格式由format参数控制,与Regional Options中的Date/Time的设置无关。不过,如果项目中有很多地方需要进行DateTime日期时间格式控制,这样写起来就比较麻烦,虽然可以通过常数const进行控制。

3. 为当前线程的区域性创建 DateTimeFormatInfo。

// Sets the CurrentCulture property to U.S. English.

System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US", false)

Console.WriteLine(DateTime.Now.ToString())

输出结果:12/6/2004 2:37:37 PM

若要为特定区域性创建 DateTimeFormatInfo,请为该区域性创建 CultureInfo 并检索 CultureInfo.DateTimeFormat 属性。

// Creates and initializes a DateTimeFormatInfo associated with the en-US culture.

DateTimeFormatInfo myDTFI = new CultureInfo( "en-US", false).DateTimeFormat

DateTimeFormatInfo 的实例可以针对特定区域性或固定区域性创建,但不能针对非特定区域性创建。非特定区域性不提供显示正确日期格式所需的足够信息。如果试图使用非特定区域性创建 DateTimeFormatInfo 的实例,将发生异常

刚看了下jdk里的代码,通过上面的方式设置的timeout只是保存在java层面的,并且只在调用connect的时候才会把这个超时时间传到jvm里面去创建连接,貌似SO_TIMEOUT是连接超时时间,并不是读数据的超时时间,unix中好像本来是没有SO_TIMEOUT这样的TCP值选项的,但是有SO_SNDTIMEO和SO_RCVTIMEO等TCP选项(但是这两个超时时间在jdk层面没有api来设置),所以比较纳闷,我一直以为SO_TIMEOUT是设置的socket读超时,是我理解有误吗

在SocketInputStream.read中还是把这个timeout传进去了的,

public int read(byte b[], int off, int length) throws IOException {

return read(b, off, length, impl.getTimeout())}

不过又产生一个新的疑问,之前看《unix网络编程》中说过poll系统调用中不要把POLLERR/POLLHUP/POLLNVAL等处理异常的常量在events中进行设置(翻了下书确实是这样说的,见p144),但是我看了jvm中bsd/linux相关代码os_linux.inline.hpp都将POLLERR在events中进行了设置,如下所示

inline int os::timeout(int fd, long timeout) {

julong prevtime,newtime

struct timeval t

gettimeofday(&t, NULL)

prevtime = ((julong)t.tv_sec * 1000) + t.tv_usec / 1000for() {struct pollfd pfd

pfd.fd = fd

pfd.events = POLLIN | POLLERR

int res = ::poll(&pfd, 1, timeout)

if (res == OS_ERR &&errno == EINTR) {

// On Linux any value <0 means "forever"

if(timeout = 0) {

gettimeofday(&t, NULL)

newtime = ((julong)t.tv_sec * 1000) + t.tv_usec / 1000

timeout -= newtime - prevtime

if(timeout <= 0)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11356423.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存