ffmpeg in:h264 out:yuv to stdout - 数据格式?

问题描述 投票:0回答:1

我(像许多人一样)试图从连接到树莓派的相机中获得连续的一系列静止图像。由于所有常见的原因,我想在java中执行此操作,并使用Runtime exec命令将raspivid的输出通过管道输出到以下ffmpeg命令,然后通过stdout收集结果---注意xxx.h264是一个测试文件由于没有容器而不能播放的相机产生,但我得到的图像非常好。

ffmpeg -i xxx.h264 -vcodec rawvideo -r 2 -pix_fmt yuv420p -f nut -

我有一些显示帧的代码,但是它们从左到右“穿过”显示区域,并且图像顶部的垃圾似乎越来越多。我通过运行相同的命令并将其重定向到文件,然后使用vi / xxd并查找有headder材料(“nut / multimedia container ...”)来查看它输出的字节。

我猜我的ffmpeg命令插入了更多元数据,我在处理原始yuv420p数据时无法删除,如下所述:https://en.wikipedia.org/wiki/YUV#Y%E2%80%B2UV420sp_%28NV21%29_to_RGB_conversion_%28Android%29

对于我的生活,我无法以可读的格式在任何地方找到坚果文档,无论如何,似乎这不是我应该寻找的。关于如何识别字节流中的帧边界的任何指针?

ffmpeg
1个回答
0
投票

-f nut代表NUT容器。看起来你不想要任何封装,所以使用-f rawvideo。此外,wiki链接代码适用于nv21,它是4:2:0数据的不同布局。 yuv420p是所有Y样本,然后是所有U样本,接着是所有V样本。 U / V是半宽和半高。如果Y宽度或高度为奇数,则相应的U / V维度为int(Y / 2)+ 1

© www.soinside.com 2019 - 2024. All rights reserved.