我的命令的最佳参数

我的命令的最佳参数

注:我用的是win10。

我的命令: ffmpeg -y -rtbufsize 200M -f gdigrab -thread_queue_size 1024 -probesize 10M -r 10 -draw_mouse 1 -video_size 1920x1080 -i desktop -f dshow -channel_layout stereo -thread_queue_size 1024 -i audio="Stereo mix (Realtek High Definition Audio)" -f dshow -channel_layout stereo -thread_queue_size 1024 -i audio="Microphone (Realtek High Definition Audio)" -c:v libx264 -r 10 -preset ultrafast -tune zerolatency -crf 25 -pix_fmt yuv420p -c:a aac -strict -2 -ac 2 -b:a 128k -filter_complex "[0]pad=ceil(iw/2)*2:ceil(ih/2)*2[v]; [1][2]amix=inputs=2[a]" -map [v] -map [a] recording.mp4

在将此命令添加到我的应用程序之前,我必须知道是否有办法改进我的命令。如果您可以使我的命令更好(更改/添加一些参数),请写信给我。谢谢。

答案1

仅提供一些小建议:

  • 使用捕获设备时,在输入级别设置帧速率。否则,它将尝试使用默认值 25 进行捕获,然后丢弃帧以达到所需的 10 fps。因此,删除-r 10输出选项并添加-framerate 10输入选项展示

  • 自 2015 年起不再需要-strict -2AAC 编码。

  • 我个人的偏好是使用格式过滤器(format=yuv420p),而不是-pix_fmt我已经在进行的过滤,这样它就可以准确地应用到我想要的位置。

  • 添加-movflags +faststart输出选项以启用快速启动播放。

  • 您设置了-video_size 1920x1080,所以您知道您的输出将是 1920x1080。因此,您的 pad 过滤器什么也不做,因为该特定表达式是为了确保输出可以被 2 整除(这是 libx264 在输出 YUV 4:2:0 色度二次采样时的要求)。1920x1080 已经可以被 2 整除。

例子:

ffmpeg -y -rtbufsize 200M -f gdigrab -thread_queue_size 1024 -probesize 10M -framerate 10 -draw_mouse 1 -video_size 1920x1080 -i desktop -f dshow -channel_layout stereo -thread_queue_size 1024 -i audio="Stereo mix (Realtek High Definition Audio)" -f dshow -channel_layout stereo -thread_queue_size 1024 -i audio="Microphone (Realtek High Definition Audio)" -c:v libx264 -preset ultrafast -tune zerolatency -crf 25 -c:a aac -ac 2 -b:a 128k -filter_complex "[0]format=yuv420p[v];[1][2]amix=inputs=2[a]" -map [v] -map [a] -movflags +faststart recording.mp4

相关内容