繁体   English   中英

PHP-FFMpeg视频输出被截断

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM