[英]PHP-FFMpeg video output is truncated
我正在使用此处找到的PHP-FFMpeg库和“ 基本用法 ”部分中的代码。
输出的视频似乎被截断了。 我使用的是28秒长的源视频,但输出仅为9秒。 怎么了
在这里,我正在检查源视频的持续时间:
$ffprobe = FFMpeg\FFProbe::create();
$duration = $ffprobe
->format('test/source.mp4')
->get('duration');
28.700000
然后生成输出视频:
$ffmpeg = FFMpeg\FFMpeg::create();
$video = $ffmpeg->open('test/source.mp4');
$video->save(new FFMpeg\Format\Video\X264(), 'test/export.mp4');
然后检查输出视频的持续时间:
$ffprobe = FFMpeg\FFProbe::create();
$duration = $ffprobe
->format('test/export.mp4')
->get('duration');
9.234000
感谢slhck提供调查转换日志的建议 。
看来我的源文件已损坏。
我在下面记录了我的过程。
我不知道从PHP-FFMpeg库获取ffmpeg输出的方法。
因此,我使用getFinalCommand()
输出ffmpeg命令:
$video = $ffmpeg->open('test/source.mp4');
echo $video->getFinalCommand(new FFMpeg\Format\Video\X264(), 'test/export.mp4')[0];
-y -i test / source.mp4 -vcodec libx264 -acodec libfaac -b:v 1000k -refs 6 -coder 1 -sc_threshold 40 -flags + loop -me_range 16 -subq 7 -i_qfactor 0.71 -qcomp 0.6 -qdiff 4 -trellis 1 -b:a 128k -pass 1 -passlogfile / tmp / ffmpeg-passes5d108f0d5007cirj2x / pass-5d108f0d500f9 test / export.mp4
我执行命令后收到此错误:
[libx264 @ 0x2395ec0] ratecontrol_init:无法打开统计文件
初始化输出流时出错0:0-打开输出流编码器时出错
#0:0-可能是不正确的参数,例如bit_rate,rate,width或height
该passlogfile
似乎引起了问题,因此我将其删除并得到:
流中损坏的输入数据包0:04.76比特率= 880.0kbits / s速度= 3.15x
[h264 @ 0x7b4500]无效的NAL单位大小(51618> 33287)。
[h264 @ 0x7b4500]将输入拆分为NAL单元时出错。
解码流#0:0时出错:处理输入时发现无效数据
看来我的源视频文件已损坏。
我重新上传了它,错误消失了。
在此过程中,我还发现“音频编解码器libfaac已从ffmpeg中删除 ”( iki789 ),“还有更好的选择”( llogan ),并且音频编解码器可以设置为“ aac”,如下所示:
$format = new \FFMpeg\Format\Video\X264();
$format->setAudioCodec("aac");
$video = $ffmpeg->open('test/source.mp4');
$video->save($format, 'test/export.mp4');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.