簡體   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