使用VidStab进行PHP-FFMpeg视频稳定

我正在使用 PHP-FFMpeg VidStab 。 我已经正确安装了所有依赖项和所有内容,我可以按照VidStab repo上的说明通过命令行稳定我的视频。</ p>

我的问题是我怎样才能做到这一点( Laravel方式)来自PHP内部? 我知道我可以像这样在Video对象中添加一个自定义过滤器:</ p>

  $ video = $ ffmpeg-&gt; open('shaky_video.mp4'); 
$ video - &gt; addFilter(new CustomFilter('vidstabdetect = stepsize = 6:shakiness = 8:accuracy = 9:result = transform.trf'));
</ code> </ pre>

但是 如何在不需要 $ video-save()</ code>的情况下执行此命令,我认为这是为了输出视频/音频文件而不是 trf </ code>分析文件? </ p>

我想我可以运行一个PHP exec()命令,但我想尽可能多地保留这个面向对象的PHP。 有什么建议吗?</ p>

提前致谢!</ p>


我试过这个(添加 -f null - </ code>过滤然后尝试运行 save()</ code>来执行命令),但它仍然创建mp4文件而不是trf文件:</ p>

   $ video = $ ffmpeg-&gt; open('shaky_video.mp4'); 
$ video-&gt; addFilter(new CustomFilter('vidstabdetect = stepsize = 6:shakiness = 8:accuracy = 9:result = transform .trf -f null - '));
$ video-&gt; save(new X264(),'stabilized.mp4');
</ code> </ pre>
</ div>

展开原文

原文

I'm using PHP-FFMpeg in a Laravel 5.2 application to stabilize videos with the help of VidStab. I have all the dependencies and everything installed correctly and I can follow the directions on the VidStab repo to stabilize my videos via the command line.

My question is how could I do this nicely (the Laravel way) from within PHP? I know I can add a custom filter to the Video object like this:

$video = $ffmpeg->open('shaky_video.mp4');
$video->addFilter(new CustomFilter('vidstabdetect=stepsize=6:shakiness=8:accuracy=9:result=transform.trf'));

But how can I execute this command without the need for $video-save(), which I think is designed to output a video/audio file and not the trf analysis file?

I suppose I could just run a PHP exec() command, but I would like to keep this as much object oriented PHP as I can. Any suggestions?

Thanks in advance!


I've tried this (added -f null - to filter and then tried running save() to execute the command), but it still creates the mp4 file instead of the trf file:

$video = $ffmpeg->open('shaky_video.mp4');
$video->addFilter(new CustomFilter('vidstabdetect=stepsize=6:shakiness=8:accuracy=9:result=transform.trf -f null -'));
$video->save(new X264(), 'stabilized.mp4');

dongxun3424
dongxun3424 哈哈......谢谢你的帮助,穆尔维亚。据我所知,PHP-FFMpeg的工作方式是,在执行save()方法之前,它实际上不会运行任何命令。导致这一切的其他一切只是添加到Video对象。因此,最好的办法就是使用exec命令运行我想要的确切命令。它不是OOP或Laravelish。再次感谢!
4 年多之前 回复
duanjian7617
duanjian7617 对不起,不是PHP编码器。我想save会打开一个文件来写。等效命令是ffmpeg-iinput-vfvidstabdetect-fnull-。因此,可以跳过保存并仅使用打开和过滤器。
4 年多之前 回复
duangang3832
duangang3832 我尝试在save方法中添加-fnull-但是我试过的任何方法都会抛出错误。你能告诉我完整的$video->save()命令吗?
4 年多之前 回复
duanchijie2323
duanchijie2323 -fnull-进入保存,而不是过滤器。无需文件名。
4 年多之前 回复
douwei3172
douwei3172 感谢Mulvya的建议。我尝试将-fnull添加到自定义过滤器,然后添加$video->save(newX264(),'stabilized.mp4'),但看起来它仍然输出mp4而不是trf文件。还有其他建议吗?
4 年多之前 回复
duankang5285
duankang5285 您需要输出格式为-fnull-这将丢弃ffmpeg生成的任何文件输出。
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐