php - 使用 PHP-FFMpeg 调整视频大小并保留编解码器
问题描述
我正在尝试使用 PHP-FFMpeg 调整几个视频(使用不同的编解码器)的大小。官方文档给出了以下示例(参见https://github.com/PHP-FFMpeg/PHP-FFMpeg)
$ffmpeg = FFMpeg\FFMpeg::create();
$video = $ffmpeg->open('video.mpg');
$video
->filters()
->resize(new FFMpeg\Coordinate\Dimension(320, 240))
->synchronize();
$video
->frame(FFMpeg\Coordinate\TimeCode::fromSeconds(10))
->save('frame.jpg');
$video
->save(new FFMpeg\Format\Video\X264(), 'export-x264.mp4')
->save(new FFMpeg\Format\Video\WMV(), 'export-wmv.wmv')
->save(new FFMpeg\Format\Video\WebM(), 'export-webm.webm');
由于我不想指定编解码器(与源文件相同),因此我试图创建一个复制格式并将此格式用于save
命令。
class MOVFormat extends FFMpeg\Format\Video\DefaultVideo
{
public function __construct($audioCodec = 'copy', $videoCodec = 'copy')
{
$this
->setAudioCodec($audioCodec)
->setVideoCodec($videoCodec);
}
public function supportBFrames()
{
return false;
}
public function getAvailableAudioCodecs()
{
return ['copy'];
}
public function getAvailableVideoCodecs()
{
return ['copy'];
}
}
这导致Filtergraph '[in]scale=320:240 [out]' was defined for video output stream 0:0 but codec copy was selected.
和Filtering and streamcopy cannot be used together.
从技术上讲,如果我查看此回复,应该可以在不指定编解码器的情况下调整大小:https ://superuser.com/a/624564
任何帮助表示赞赏!
解决方案
推荐阅读
- .net - IdentityServer4 声明没有显示我给 IDS 服务器的任何声明
- python - 用python调用alexa的定时器api不起作用
- android - 为什么文件访问方法 getExternalStorageDirectory() 在 Android 10 (API 29) 上不起作用
- python - 完成按熊猫中另一列分组的日期系列并填充缺失的行
- android - android.permission.ACTIVITY_RECOGNITION 在尝试请求用户权限时未被识别
- grpc - grpc_out:protoc-gen-grpc:插件失败,状态码为 1
- python - 只有最后一页的输出被写入 CSV
- python - K-Means 聚类的局限性
- c - 在C中将十进制转换为具有数十亿数字的二进制
- c - 为什么 %p,%x 用字母值给出地址,为什么 %p 用这么多的零(x86)给出任何值;还有为什么 %d 和 %u 说明符不像它们那样工作