视频流的结构是什么?

Mat*_*att 5 video ffmpeg video-processing

最终目标是处理视频的RGB数据.

我试图读取我使用ffmpeg创建的文件的字节.

ffmpeg -video_size 100x100 -framerate 20 -f x11grab -i :0.0 \
    -c:v rawvideo -pix_fmt rgb24 -video.nut
Run Code Online (Sandbox Code Playgroud)

我写了一个节点脚本,以便在需要时更容易读取二进制数据.我当前文件的输出是:

Hex Binary   Row
47  01000111 0
40  01000000 1
11  00010001 2
10  00010000 3
03  00000011 4
00  00000000 5
00  00000000 6
00  00000000 7
68  01101000 8 
Run Code Online (Sandbox Code Playgroud)

我看到了.nut的规格,但我无法弄明白.我希望能够解析每帧的RGB数据,以便为视频流中的每个"图像"留下RGB矩阵.谢谢!

Gya*_*yan 2

如果您可以解析原始视频,则使用

ffmpeg -video_size 100x100 -framerate 20 -f x11grab -i :0.0
       -c:v rawvideo -pix_fmt rgb24 -f rawvideo video.rgb
Run Code Online (Sandbox Code Playgroud)

输出的结构将是

R G B R G B R G B ...
Run Code Online (Sandbox Code Playgroud)

因此,每个三字节三元组代表一个按从左到右、从上到下的扫描顺序的像素。因此,对于一100x100帧,第 301 个字节是第 2 行第一个像素的 R 值。第 30000 个字节是右下角像素的 B 值。然后接下来的 30K 字节代表下一帧,依此类推。

这是原始视频流,因此不存在容器元数据或帧封装。只是一个无差别的像素通道值流。