我在媒体管理器上工作并使用ffmpeg.exe来提取屏幕截图。 最新大小的ffmpeg.exe超过35MB,我试图在没有大部分功能的情况下构建ffmpeg,只允许保存一帧视频。
我曾想过禁用许多过滤器,音频编解码器等会将ffmpeg的大小缩小到更易于管理的状态。
遵循本指南 https://pracucci.com/compile-ffmpeg-on-windows-with-visual-studio-compiler.html 为了允许使用Visual Studio 2015构建ffmpeg,我已经开始使用./configuration并打了一堵墙。 有这么多的选择,不知道他们所有的意思或做什么,我问的是社区中的某个人是否可以给我外行指示。
我也知道我需要构建x264和可能的x265(HEVC),但我不确定是否还需要其他编解码器。 最后,我和我希望只有一个文件,ffmpeg.exe用于媒体管理器项目。
我用来获取屏幕截图的代码如下
Public Shared Function CreateScreenShot(ByVal FullPathAndFilename As String, ByVal SavePath As String, ByVal sec As Integer, Optional ByVal Overwrite As Boolean = False) As Boolean
If Not File.Exists(SavePath) Or Overwrite Then
Try
IO.File.Delete(SavePath)
Catch
Return False
End Try
If IO.File.Exists(FullPathAndFilename) Then
Dim myProcess As Process = New Process
Try
Dim seconds As Integer = sec
myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
myProcess.StartInfo.CreateNoWindow = False
myProcess.StartInfo.FileName = Utilities.applicationPath & "\Assets\ffmpeg.exe"
Dim proc_arguments As String = "-ss " & seconds.ToString & " -i """ & FullPathAndFilename & """ -vframes:v 1 -an " & """" & SavePath & """"
myProcess.StartInfo.Arguments = proc_arguments
myProcess.Start()
myProcess.WaitForExit()
If File.Exists(SavePath) Then Return True
Catch ex As Exception
Throw ex
Finally
myProcess.Close()
End Try
End If
End If
Return False
End Function
我希望这是足够的信息,并感谢任何帮助或建议。
答案 0 :(得分:0)
有一个选项--disable-everything
将禁用所有组件而不显式启用。
我猜你可能会尝试用它来构建它:
./configure --disable-everything --enable-libx264 --enable-libx265 --toolchain=msvc --enable-yasm --enable-asm
如果还需要其他编解码器,也应将它们添加到选项中。
如果不需要某些ffmpeg库,可以将它们禁用为:
./configure --disable-postproc
请参阅Component options
输出中的./configure --help
部分,了解如何禁用/启用这些库。