我正在使用WebRTC
从服务器向客户端浏览器发送视频(使用本机WebRTC API
和MCU WebRTC
像Kurento这样的服务器).
在将其发送给客户端之前,视频的每个帧都包含元数据(如字幕或任何其他应用内容).我正在寻找一种方法将这些元数据发送到客户端,使其保持同步(到实际呈现的时间).此外,我希望能够从客户端(通过Javascript)访问此数据.
我想到的一些选项:
timeupdate
事件,但我不知道它是否适用于帧的精确级别,我不确定它在实时视频中的含义与WebRTC中的相同.TextTrack
.然后使用onenter
和onexit
同步读取它:http://www.html5rocks.com/en/tutorials/track/basics/.它仍然需要精确的时间戳,我不知道如何知道什么是时间戳,以及Kurento是否按原样传递它们.getstats
),并希望此API提供的信息是准确的.最好的方法是什么,以及如何解决我提到的问题?
编辑:需要具有适当帧的元数据的精确同步(在不超过单帧的分辨率下).
我很惊讶我找不到任何相关信息...
简而言之,我的问题是是否有办法避免以下两个命令之间的中间文件更改,如果在以下两个命令之后文件内容与之前完全相同?
git checkout dev
git pull
Run Code Online (Sandbox Code Playgroud)
动机是(仅满足其中一个动机的解决方案也比没有好):
当我使用远程源代码控制服务器将 origin/feature 合并到 origin/dev 后从功能分支返回到 master 时,这是一种非常常见的情况。
我希望git fetch origin dev
之前的表演能够解决这个问题,但事实并非如此。我还发现了一些像这样的答案,其中讨论了将命令分组在一起以方便起见,但没有针对文件更改问题。
我必须在WPF控件上显示立体3D图形.
我已经有了创建两个DirectX-9纹理的代码,每个眼睛都有一个纹理.
我想使用3D Vision(不是立体照片).
我考虑了以下方式将两张图片显示为3D立体声:
上述方法存在的问题是:
1-3:前三种方式中的一种似乎是直接的解决方案,但在WPF中是不可能的,因为我无法创建设备/上下文并控制图片的呈现方式.
4:使用CompositionTarget.Rendering我只得到约60Hz而不是120Hz.我想问题是EndScene()被调用两次 - 一次在我的渲染场景中,另一次在WPF渲染机制中,但我不确定.无论如何即使它会起作用 - 该解决方案似乎不稳定.
5:在我的情况下渲染3D场景是不可能的,因为某些技术原因迫使我自己渲染两只眼睛的两张图像.
6:WinFormHost及其朋友的问题是它不是WPF控件,并且在WPF控件方面有意外行为.例如,WinForm控件将隐藏逻辑树上较高的WPF控件,无法使用RotateTransform等旋转.
现在我选择了最后一个解决方案 - 使用WinFormHost.有没有人知道这个坚不可摧的墙的解决方案,在真正的WPF控制中制作立体3D?
我进行了一些基准测试,以比较双打和浮动性能.看到双打比浮球要快得多,我感到非常惊讶.
我看到了一些关于这方面的讨论,例如:
他们中的大多数人表示,由于双精度优化等原因,双重和浮动性能可能相似.但是当我使用双打时我看到了x2的性能提升 !! 这怎么可能?最糟糕的是,我使用的是32位机器,根据一些帖子的说法,这些机器预计会更好地用于花车......
我使用C#来精确地检查它,但我发现类似的C++实现具有类似的行为.
代码我用来检查它:
static void Main(string[] args)
{
double[,] doubles = new double[64, 64];
float[,] floats = new float[64, 64];
System.Diagnostics.Stopwatch s = new System.Diagnostics.Stopwatch();
s.Restart();
CalcDoubles(doubles);
s.Stop();
long doubleTime = s.ElapsedMilliseconds;
s.Restart();
CalcFloats(floats);
s.Stop();
long floatTime = s.ElapsedMilliseconds;
Console.WriteLine("Doubles time: " + doubleTime + " ms");
Console.WriteLine("Floats time: " + floatTime + " ms");
}
private static void CalcDoubles(double[,] arr)
{
unsafe
{
fixed (double* p = arr)
{
for …
Run Code Online (Sandbox Code Playgroud) 我有一个带有单个程序的 mpeg-ts 文件。该节目由一些流组成——一个视频流和一些元数据流。
我想将特定流提取到单独的文件中。然而,元数据是使用 ffmpeg 不知道的编解码器进行编码的。我并不真正关心这个 - 我只想将数据提取为字节,而不需要 mpeg-ts 容器标头。我尝试使用编解码器“复制”但没有成功。
我尝试了以下方法:
ffmpeg -i video.ts -map 0:1 -codec copy stream.txt
Run Code Online (Sandbox Code Playgroud)
但 ffmpeg 说:
Unable to find a suitable output format for stream.txt
Run Code Online (Sandbox Code Playgroud)
上面的错误只是因为 ffmpeg 不知道如何输出文本文件。所以我尝试使用“rawvideo”容器输出:
ffmpeg -i video.ts -map 0:1 -codec copy -f rawvideo stream.txt
Run Code Online (Sandbox Code Playgroud)
但:
Cannot map stream #0:1 - unsupported type
Run Code Online (Sandbox Code Playgroud)
为了确保我可以提取未知编解码器的内容,我尝试了以下操作:
ffmpeg -i video.ts -map 0:1 -codec copy stream.ts
Run Code Online (Sandbox Code Playgroud)
但再说一遍:
Cannot map stream #0:1 - unsupported type
Run Code Online (Sandbox Code Playgroud)
所以我的问题是: