我是新手!

我正在做一个简单的测试,该测试从ffmpeg读取输出并写入文件。

我知道我可以用不同的方式做到这一点,只需转换即可,但这是项目的开始,我想稍后操纵读取的字节,更改字节,然后将其发送到输出。输入将是UDP,输出也将是UDP,也就是说,我将得到ffmpeg输出,我将按照自己希望的方式处理字节,然后将这些字节作为输入输入到另一个ffmpeg进程中,该输出是UDP好。

通过这个简单的测试,文件的结果无法在VLC中运行,我相信我正在正确地将字节写入输出文件中,但是输出文件总是比输入文件少1MB。

我希望获得一些帮助,以阐明根据我的实际情况编写此测试的最佳方法是什么。我不知道这是完全错误的,但是我有印象。

输入文件是4K,h264格式的视频,我相信输出应该是相同的,因为在此简单测试中,我只是读取cmd写入文件的结果。

按照代码进行分析:


您必须检查stdout.Read的返回值。 请注意,读取的字节数(nr)可能小于缓冲区大小,因此您需要重新切片缓冲区以获取有效内容。 修改阅读循环,如下所示:

另一种解决方案是利用io.Copy将整个输出复制到golang缓冲区中。 该代码段如下所示: