我正在尝试使用 h264_qvs 进行视频游戏的直播,但与 libx264 相比,效果不太好。以下是我正在运行的 ffmpeg 命令的一些变体:
变体 1
ffmpeg.exe -y -hwaccel qsv -i pipe:0 -vf "hwdownload,format=nv12" -c:v h264_qsv -video_size 1920x1080 -preset veryfast -global_quality 35 -look_ahead 0 -b:v 9000k -maxrate 12000k -bufsize 9000k -pix_fmt yuv420p -r 60 -g 120 -c:a aac -b:a 256k -ac 2 -ar 44100 -af afftdn -f tee -map 0 "[f=flv]rtmp://endpoint.example.com|[f=mp4]C\:\\Users\\me\\savedFile.mp4"
变化 2:将比例移到 vf 内
ffmpeg.exe -y -hwaccel qsv -i pipe:0 -vf "hwdownload,format=nv12,scale=1920:1080" -c:v h264_qsv -preset veryfast -global_quality 35 -look_ahead 0 -b:v 9000k -maxrate 12000k -bufsize 9000k -pix_fmt yuv420p -r 60 -g 120 -c:a aac -b:a 256k -ac 2 -ar 44100 -af afftdn -f tee -map 0 "[f=flv]rtmp://endpoint.example.com|[f=mp4]C\:\\Users\\me\\savedFile.mp4"
变体 3:使用 scale_qsv 并删除 -pix_fmt yuv420p
ffmpeg.exe -y -hwaccel qsv -i pipe:0 -vf "hwdownload,format=nv12,vpp_qsv=framerate=60,scale_qsv=w=1920:height=1080" -c:v h264_qsv -preset veryfast -global_quality 35 -look_ahead 0 -b:v 9000k -maxrate 12000k -bufsize 9000k -r 60 -g 120 -c:a aac -b:a 256k -ac 2 -ar 44100 -af afftdn -f tee -map 0 "[f=flv]rtmp://endpoint.example.com|[f=mp4]C\:\\Users\\me\\savedFile.mp4"
变体 4:最佳变体,但仍低于 libx264,延迟为 1 分 30 秒
ffmpeg.exe -y -hwaccel qsv -i pipe:0 -vf "vpp_qsv=framerate=60,scale_qsv=w=1920:h=1080" -c:v h264_qsv -preset veryfast -global_quality 25 -look_ahead 1 -b:v 9000k -maxrate 12000k -bufsize 9000k -g 120 -c:a aac -b:a 256k -ac 2 -ar 44100 -f tee -map 0 "[f=flv]rtmp://endpoint.example.com|[f=mp4]C\:\\Users\\me\\savedFile.mp4"
但无论我如何更改它,流媒体都是断断续续的开始/停止。我还应该在这里测试什么性能?