首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP视频输出被截断

PHP视频输出被截断
EN

Stack Overflow用户
提问于 2019-06-24 04:29:37
回答 1查看 1.2K关注 0票数 0

我使用PHP库找到了这里和"基本用法“部分的代码。

输出的视频似乎被截断了。我使用的是一个长28秒的源视频,但是输出只有9秒。出什么问题了?

在这里,我正在检查源视频的持续时间:

代码语言:javascript
复制
$ffprobe = FFMpeg\FFProbe::create();
$duration = $ffprobe
  ->format('test/source.mp4')
  ->get('duration');

28.700000

然后生成输出视频:

代码语言:javascript
复制
$ffmpeg = FFMpeg\FFMpeg::create();
$video = $ffmpeg->open('test/source.mp4');
$video->save(new FFMpeg\Format\Video\X264(), 'test/export.mp4');

然后检查输出视频的持续时间:

代码语言:javascript
复制
$ffprobe = FFMpeg\FFProbe::create();
$duration = $ffprobe
  ->format('test/export.mp4')
  ->get('duration');

9.234000

EN

回答 1

Stack Overflow用户

发布于 2019-06-24 09:13:16

多亏了斯莱克建议才能研究转换日志。

看来我的源文件被破坏了。

我在下面记录了我的过程。

我不知道如何从库获得ffmpeg输出。

因此,我使用getFinalCommand()输出ffmpeg命令:

代码语言:javascript
复制
$video = $ffmpeg->open('test/source.mp4');
echo $video->getFinalCommand(new FFMpeg\Format\Video\X264(), 'test/export.mp4')[0];

-y -i测试/源代码:mp4 -vcodec libx264 -acodec libfaac -b:v 1000 k -refs 6 -coder 1 -sc_threshold 40 -flags +循环-me_range 16 -subq 7 -i_qfactor 0.71 -qcomp 4 -trellis 4-trellis 1-trellis 128k -trellis 1-trellis test/export.mp4

我执行了命令,得到了以下错误:

libx264 @ 0x2395ec0 ratecontrol_init:无法打开stats文件 初始化输出流错误0:0 -打开输出流编码器时出错 #0:0 -可能是不正确的参数,如bit_rate、速率、宽度或高度

passlogfile似乎造成了问题,所以我删除了它,得到了:

流0:04.76 bitrate= 880.0kbit/s speed=3.15x中的输入数据包损坏 h264 @ 0x7b4500无效NAL单元大小(51618 > 33287)。 h264 @ 0x7b4500错误将输入拆分为NAL单元。 解码流#0:0时出错:处理输入时发现无效数据

看来我的原始视频文件被破坏了。

我重新上传了它,错误就消失了。

在此过程中,我还发现“音频编解码器libfaac是来自ffmpeg的删除”(iki789),“有更好的替代方案”(洛根),并且音频编解码器可以设置为"aac“,如下所示:

代码语言:javascript
复制
$format = new \FFMpeg\Format\Video\X264();
$format->setAudioCodec("aac");

$video = $ffmpeg->open('test/source.mp4');
$video->save($format, 'test/export.mp4');
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56729861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档