FFmpeg是一个流行的免费开源的跨平台音视频处理框架。而ffmpeg-php则是一个用于在PHP中使用FFmpeg功能的扩展库。但是,随着PHP的不断升级和开发,越来越多的优秀应用需要用到PHP7及以上版本来支持。这时,我们就需要ffmpeg-php支持php7。
早期版本的ffmpeg-php都是基于PHP5构建的,因此在PHP7及以上版本中无法正常使用。不过,好消息是,最新版本的ffmpeg-php已经支持PHP7和PHP8了。通过使用这个最新版本,我们便可以在PHP7及以上版本中使用ffmpeg-php的所有功能,这有利于更好地实现音视频处理等功能。
使用ffmpeg-php在PHP7中开发项目时,比如我们想使用FFmpeg合并两个视频文件,我们可以使用以下的代码:
$ffmpeg = FFMpeg\FFMpeg::create(); $video1 = $ffmpeg->open('/path/to/video1.mp4'); $video2 = $ffmpeg->open('/path/to/video2.mp4'); $output = new FFMpeg\Format\Video\WebM(); $output->setAudioCodec("libvorbis"); $output->setVideoCodec("libvpx"); $video1->concat($video2)->save($output, '/path/to/merged.webm');
又或者我们想使用FFmpeg裁剪视频并保存为不同格式的文件,可以使用以下的代码:
$ffmpeg = FFMpeg\FFMpeg::create(); $video = $ffmpeg->open('/path/to/video.mp4'); $start = $ffmpeg->createFromTimecode('00:00:10'); $duration = $ffmpeg->createFromTimecode('00:00:20'); $video->filters() ->crop(new FFMpeg\Coordinate\Point(0, 0), new FFMpeg\Coordinate\Dimension(320, 240)) ->synchronize(); $format = new FFMpeg\Format\Video\X264(); $format->setVideoCodec('libx264'); $format->setAudioCodec('aac'); $format->setAudioChannels(2); $format->setAudioKiloBitrate(256); $video->save($format, '/path/to/croped.mp4', $start, $duration);
在使用ffmpeg-php时,我们也可以通过自定义命令行参数轻松地掌控FFmpeg的丰富功能。比如,我们可以使用以下代码将视频从MP4格式转换为WebM格式:
$ffmpeg = FFMpeg\FFMpeg::create(); $video = $ffmpeg->open('/path/to/video.mp4'); $encoder = new FFMpeg\Format\Video\WebM(); $encoder->setAudioCodec("libvorbis"); $encoder->setVideoCodec("libvpx"); $format = new FFMpeg\Format\ProgressiveWebM(); $command = $ffmpeg->getFFMpegDriver()->createCommand( $video->get()->getPathfile(), "-f webm -c:v libvpx -quality good -cpu-used 0 -b:v 500k -c:a libvorbis -q:a 5 -y", array(), array("-strict", "experimental"), "-f webm -movflags empty_moov+default_base_moof+frag_every_frame" ); $ffmpeg->getFFMpegDriver()->run($command);
从上面三个例子可以看出,在ffmpeg-php中使用FFmpeg的功能非常方便。而通过支持PHP7及以上版本,ffmpeg-php不仅可以更好地与PHP的各种框架集成,还可以支持更多的用于音视频处理的最新技术和算法。
总之,如果我们需要实现更强大的音视频处理能力,那么及时在我们的PHP项目中移植ffmpeg-php到PHP7及以上版本,就是一个不错的选择,而最新版本的ffmpeg-php已经为此提供了强有力的支持。