如何通过 PHP 实时输出 FFmpeg 视频文件编码——主要是在带有 Nvidia 的 Linux 上?

如何通过 PHP 实时输出 FFmpeg 视频文件编码——主要是在带有 Nvidia 的 Linux 上?

我有一个简单的 FFmpeg 脚本,可以在 Linux 上使用 Nvidia 输出 MP4 格式。处理该脚本大约需要 6 秒钟,然后我才能在 PHP 页面上显示它(在 HTML5 视频播放器中)。我怀疑有办法可以实时显示视频输出(即在编码期间)。有人知道我该怎么做吗?我的目标是将您的解决方案应用于需要更长时间处理(即输出)的脚本,如果可能的话,我非常希望实时显示输出。

  • 下面的脚本通过 Linux 服务器上的 PHP shell_exec 请求运行...

ffmpeg -hwaccel cuda -hwaccel_output_format cuda -i bgVid.mp4 -loop 1 -i mainImg.png -loop 1 -i whtBlk4Txt.png -loop 1 -i logo.png -filter_complex “[1:v]scale=407:-1,fade=st=4:d=2:alpha=1,fade=out:st=13:d=2:alpha=1,format=yuva420p,hwupload[A];[2]scale=960:540,fade=st=4:d=2:alpha=1,fade=out:st=13:d=2:alpha=1,format=yuva420p,hwupload[B];[2]drawtext=fontfile=Arial.ttf:fontsize=70.588235294118:x=(((w/2)-(tw/2)) + (-229.00000381469727)):y=163:fontcolor=black:text='第一行测试',drawtext=fontfile=Arial.ttf:fontsize=35.294117647059:x=(((w/2)-(tw/2)) + (-229.00000381469727)):y=235: fontcolor=black:text='第二行测试',drawtext=fontfile=Arial.ttf:fontsize=70.588235294118:x=(((w/2)-(tw/2)) + (-229.00000381469727)):y=253: fontcolor=black:text='第三行测试',drawtext=fontfile=Arial.ttf:fontsize=35.294117647059:x=(((w/2)-(tw/2)) + (-229.00000381469727)):y=324:fontcolor=black:text='第 4 行测试',fade=st=4:d=2:alpha=1,fade=out:st=13:d=2:alpha=1,格式=yuva420p,hwupload[C];[3]scale=150:-1,格式=yuva420p,hwupload[D];[0:v]scale_npp=格式=yuv420p[main];[main][A]overlay_cuda=515.9861145019531:79.94444274902344[base1t];[base1t][B]overlay_cuda=1:1[base2t];[base2t][C]overlay_cuda=1:1[base3tx];[base3tx][D]overlay_cuda=10:10[out]”-map“[out]”-ss 0-to 15-c:v h264_nvenc -c:a 复制 -flags +global_header -preset fast -y vidOut.mp4

相关内容