FFMPeg 2 pass c#

本文关键字:pass FFMPeg | 更新日期: 2023-09-27 17:55:06

我一直在网上搜索,试图找到一个很好的FFMPeg的行走和它的细微差别。

我目前有一个工作设置。它是一个两通道编码。如果我使用cmd窗口并使用以下参数:

ffmpeg -i c:'temp'175663.lbl.mp4。MPS -vcodec mpeg4 -b:v 1300k -s640x360 -宽16:9 -通1 -r 29.970 -an -f rawvideo -y NUL &&Ffmpeg -i c:'temp'175663.lbl.mp4。MPS -vcodec mpeg4 -b:v 1300k -s640x360 -宽16:9 -通2 -r 29.970 -编解码libmp3lame -ab 128k -ar48000 c: ' temp ' ' 175663.编码ntp.mp4

我在ffmpeg.exe目录中得到一个日志文件。我相信这是一个有效的好日志。我也得到了一个有效的好的mp4文件。但是,我不知道是否在pass2上实际使用了日志文件。如果我在cmd窗口中单独运行第二遍(&&之后的所有内容)。我得到一个有效的mp4文件。为什么没有错误?这让我怀疑原来的传递根本没有被用于第二个传递。

其次,我如何通过编程方式删除pass1的日志?有没有我可以输入的命名约定?最终,这个应用程序将在同一/其他机器上的多个线程上运行。所以我不能完全从ffmpeg文件夹中删除*.log。是否有一种方法可以在创建文件时命名它们?

最后,我似乎不能用上面的参数在c#中启动一个新的进程。如果省略ffmpeg(因为进程本身正在启动ffmpeg),则会在&&上出现错误。我认为它不喜欢尝试两次传球。如果我一次执行一次,我甚至没有得到一个日志文件来尝试在第二次执行时使用。

任何信息都将是惊人的。提前感谢您的宝贵时间!

FFMPeg 2 pass c#

首先,如果你正在询问ffmpeg的适当cmdline开关,那么这可能不是StackOverflow的适当问题,它属于SuperUser。

第二,在第二次传递期间使用日志。日志的作用是保持每帧的比特率要求,因此如果指定目标比特率(使用-b:v),可以更好地利用总带宽;作为旁注,如果你使用恒定量化器(也称为"恒定质量"),那么它将不会被使用,但使用恒定量化器,你将不需要多次传递编码。

您应该能够将该命令行作为两个进程启动,一个接一个,在创建日志文件时应该没有区别。如果是,请确保正确设置了进程的当前目录。