将FFmpeg输出管道输出到Unity纹理

时间:2016-12-13 14:57:28

标签: unity3d encoding ffmpeg textures pipeline

我正在开发一个网络组件,其中服务器提供纹理并将其发送到FFmpeg进行编码(h264_qsv),并通过网络发送。 客户端接收流(可能是mp4),再次使用FFmpeg对其进行解码并将其显示在纹理上。

目前这种方法工作非常缓慢,因为我在将纹理编码到mp4文件(也保存到磁盘)之前将纹理保存到磁盘,而在客户端,我将.png纹理保存到磁盘后解码它以便我可以在Unity中使用它。

服务器端FFmpeg流程目前由process.StartInfo.Arguments = @" -y -i testimg.png -c:v h264_qsv -q 5 -look_ahead 0 -preset:v faster -crf 0 test.qsv.mp4";启动,客户端启用process.StartInfo.Arguments = @" -y -i test.qsv.mp4 output.png";

由于这需要非常快(至少30 fps)和实时,我需要将纹理直接传递给FFmpeg进程。在客户端,我需要直接将解码数据传输到显示的纹理(与保存它然后从磁盘读取相反)。

几天的研究表明,FFmpeg支持各种流水线选项,包括使用 bmp_pipe (管道bmp序列), bin (二进制文本)等数据格式, 数据(原始数据)和 image2pipe (管道图像2序列)但是有关如何使用这些选项的文档和示例非常缺乏。

请帮帮我:我应该使用哪种格式(以及如何使用)?

0 个答案:

没有答案