小编The*_*eer的帖子

sprop-parameter-sets或profile-level-id是解码H264所需的SDP参数?

我试图了解SDP中所需的参数是什么,能够从RTP数据包中解码H264.

这与这个问题有关,因为答案仅适用于少数情况.

我使用以下命令从VLC流式传输.

vlc -vvv sample_video/big_buck_bunny_480p_h264.mov --sout '#transcode{vcodec=h264,vb=700,fps=20,scale=0.25,acodec=none}:rtp{dst=10.5.110.117,port=5004,ttl=1}'
Run Code Online (Sandbox Code Playgroud)

这会将视频转码为:

  • 比特率:700kbps
  • 帧速率:每秒20帧
  • 分辨率:原始的25%

接收器使用以下SDP文件正确接受和解释流(删除第一行,它只是一个名称).

//test.sdp
c=IN IP4 10.5.110.117
m=video 5004 RTP/AVP 96
a=rtpmap:96 H264/90000
a=fmtp:96 profile-level-id=640014;sprop-parameter-sets=Z2QAFKzZQ0R+f/zBfMMAQAAAAwBAAAAKI8UKZYA=,aOvssiw=;
Run Code Online (Sandbox Code Playgroud)

要运行的命令: vlc test.sdp

此处提供的文档在第7.2章中针对profile-level-id状态命名为SIP Video Profile Best Practices:

型材级-ID

虽然在RFC 6184中指定为可选(与所有参数一样),但'profile-level-id'参数是编解码器设置的基础,并且还需要指定任何其他参数.因此,所有实现都应在其SDP中包含此参数,并在接收时应解释它.如果未包含,则默认值为420010,如RFC 6184中所指定.

对于sprop-parameter-sets,同一文档声明了以下内容:

sprop参数集

H.264允许在带内和带外发送序列和图像信息.SIP视频实现应该在带内发信号通知该信息,符合H.323中普遍存在的模型以及绝大多数现有SIP视频实现中的模型,因此不应包括该参数.

问题1

即使profile-level-id被移除,视频也会在接收器上正确解释.

//test.sdp
c=IN IP4 10.5.110.117
m=video 5004 RTP/AVP 96
a=rtpmap:96 H264/90000
a=fmtp:96 sprop-parameter-sets=Z2QAFKzZQ0R+f/zBfMMAQAAAAwBAAAAKI8UKZYA=,aOvssiw=;
Run Code Online (Sandbox Code Playgroud)

没有工作sprop-parameter-sets.

问题2

我一直在线路不同的RTCP,SIP和SAP,而且SDP 通常不 包含sprop-parameter-sets.

问题

  • 请解释两个参数之间的含义和差异
  • 根据上述问题的答案,解释问题中出现的对比

video sip vlc h.264 sdp

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

Django链接被附加到URL

我正在使用Django进行项目,我正在尝试建立一个名为"index"的页面的链接,这是一个带有url的页面的起始页面

http://localhost:8000/index/result
Run Code Online (Sandbox Code Playgroud)

我添加了这样的链接:

<a href="index">Start over </a>
Run Code Online (Sandbox Code Playgroud)

因此,该链接指向:

http://localhost:8000/index/result/index
Run Code Online (Sandbox Code Playgroud)

而不是要求:

http://localhost:8000/index
Run Code Online (Sandbox Code Playgroud)

我在urls.py和views.py中设置了所有页面.

任何帮助表示赞赏.TNX

django django-templates

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

python 套接字服务器超时

我正在实现一个简单的服务器,如果 3 秒内没有收到任何消息,它应该打印一条消息。

处理程序

class SingleTCPHandler(SocketServer.StreamRequestHandler):
    def handle(self):
        while True:
            message = self.rfile.readline().strip()
            print message
Run Code Online (Sandbox Code Playgroud)

服务器

class SimpleServer(SocketServer.TCPServer):
    timeout = 3

    def handle_timeout(self):
        print "Timeout"

    def __init__(self, server_address, RequestHandlerClass):
        SocketServer.TCPServer.__init__(self, server_address, RequestHandlerClass)
Run Code Online (Sandbox Code Playgroud)

这里我扩展了TCPServer测试超时方法。我已将timeout属性设置为3. 根据文档,如果时间过去了并且没有消息发送到客户端,handle_timeout()则调用它,在我的情况下,只打印“超时”。

BaseServer.timeout

超时持续时间,以秒为单位测量,如果不需要超时,则为“无”。如果handle_request()在超时时间内没有收到传入请求,则调用handle_timeout()方法。

我启动服务器,并观察它的输出。当我连接到它并发送一些消息时,它们通常会被打印出来。但是,如果我 3 秒或更长时间没有发送任何内容,则什么也不会发生。好像timeouthandle_timeout()尚未实施。

这种行为的根源是什么?

python sockets socketserver

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

如何从用 numpy 的 tofile() 编写的原始二进制文件中读取浮点数

我正在float32用 numpy 的tofile().

float_num = float32(3.4353)
float_num.tofile('float_test.bin')
Run Code Online (Sandbox Code Playgroud)

它可以用 numpy's 读取fromfile(),但这不符合我的需要,我必须在bitstring模块的帮助下将其作为原始二进制文件读取。

所以我执行以下操作:

my_file = open('float_test.bin', 'rb')
raw_data = ConstBitStream(my_file)
float_num_ = raw_data.readlist('float:32')

print float_num
print float_num_
Run Code Online (Sandbox Code Playgroud)

输出:

3.4353
-5.56134659129e+32
Run Code Online (Sandbox Code Playgroud)

可能是什么原因?第二个输出也应该是3.4353或关闭。

python numpy bitstring

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

:=或+ =编译Linux内核模块时?

编译Linux内核模块的教程,使用不同的Makefile语法.

例1

obj-m += rpi-pwm.o 
Run Code Online (Sandbox Code Playgroud)

例2

obj-m := nothing.o
Run Code Online (Sandbox Code Playgroud)

有什么区别,是否有首选方式?

makefile linux-device-driver linux-kernel

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

对二进制数字符串表示的按位运算

在二进制数的字符串表示上进行逐位操作的最简单的解决方案是什么?

QString a = "001";
QString b = "010";
QString c = "100";

// QString d = a | b | c -> d = "111"
Run Code Online (Sandbox Code Playgroud)

binary qt bit-manipulation

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

将QByteArray附加到QDataStream?

我必须QByteArray使用不同的数据填充a .所以我正在使用QDataStream.

QByteArray buffer;
QDataStream stream(&buffer, QIODevice::WriteOnly);

qint8 dataHex= 0x04;
qint8 dataChar = 'V';

stream << dataHex<< dataChar;
qDebug() << buffer.toHex();  // "0456"  This is what I want
Run Code Online (Sandbox Code Playgroud)

但是,我还想将QByteArray附加到buffer.

QByteArray buffer;
QDataStream stream(&buffer, QIODevice::WriteOnly);

qint8 dataHex= 0x04;
qint8 dataChar = 'V';
QByteArray moreData = QByteArray::fromHex("ff");

stream << dataHex<< dataChar << moreData.data(); // char * QByteArray::data ()
qDebug() << buffer.toHex();  // "045600000002ff00"  I would like "0456ff"
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

c++ qt qbytearray qdatastream

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

"git branch -a"列表标签吗?

git branch -a用来列出我所有的远程分支机构.

remotes/origin/feature1
remotes/origin/feature2
remotes/client/feature1
remotes/client/feature2
Run Code Online (Sandbox Code Playgroud)

我选择了一个并且checkout client/feature2它让我处于一种detached head状态,好像我已经在历史的某个地方检查了一个标签?

git

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

使用 cookiecutter 创建一个 git 版本的项目

我有一个嵌套的 git 存储库结构,如下所示:

outer_repository/
|-- outer_dummy_file
|-- .git 
`-- inner_repository
    |-- .git
    `-- inner_dummy_file
Run Code Online (Sandbox Code Playgroud)

是否可以inner_repository/.git使用外部存储库进行版本控制?

动机

我正在使用cookiecutter为新项目创建一个结构。每个新启动的项目都将有一组预定义的文件和工具。如果要使用 git 对新项目进行版本控制并进行初始提交,则对自动版本控制系统的要求之一。这inner_repository是新项目的结构。

git cookiecutter

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

返回HttpResponse()后在Django视图中调用函数

对于我已经问过的问题,这是一个不同的方法

Django中同时进行多任务处理

所以它将分享介绍.


我在我的web项目中有一个耗时的功能.当函数正在进行计算时,应该呈现一个网页,通知用户一旦计算完成,结果将通过电子邮件发送.

views.py:

def web_function(request):
    ...
    return HttpResponse(results_will_be_sent_by_mail.html)
    time_consuming_function()
Run Code Online (Sandbox Code Playgroud)

由于必须呈现的页面非常简单,并且它不需要来自time_consuming_function()的返回信息,是否有一种方法可以跳过多任务处理,只是以某种方式首先呈现并显示页面而不是调用time_consuming_function()?


可能的方法:

  1. 当在调用"web_function"之前的页面上按下输入按钮时,附加一些将呈现临时页面的javascript代码?

更新

结束使用芹菜.没有成功尝试使用Ajax.

python django

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