首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >php-ffmpeg获取视频时长

php-ffmpeg获取视频时长
EN

Stack Overflow用户
提问于 2017-05-12 02:19:22
回答 3查看 10.4K关注 0票数 5

当我尝试使用php-ffmpeg包装器和huge来获取视频的时长时,我得到了一个巨大的对象,而不仅仅是时长。

$ffprobe = FFMpeg\FFProbe::create();
    $ffprobe->format($this->videoFile)
            ->get('duration'); 

$this->videoFile为/home/admin/........./5422346433.mp4

因此,它指向右侧文件,持续时间列在下面的巨型对象中

[[-show_format-/home/admin/web/admin.simplewebevents.com/public_html/cron/649652027.mp4][1]] => Array
                    (
                        [0] => FFMpeg\FFProbe\DataMapping\Format Object
                            (
                                [properties:FFMpeg\FFProbe\DataMapping\AbstractData:private] => Array
                                    (
                                        [filename] => /home/admin/web/admin.simplewebevents.com/public_html/cron/649652027.mp4
                                        [nb_streams] => 2
                                        [nb_programs] => 0
                                        [format_name] => mov,mp4,m4a,3gp,3g2,mj2
                                        [format_long_name] => QuickTime / MOV
                                        [start_time] => 0.000000
                                        [duration] => 5736.833333
                                        [size] => 668381267
                                        [bit_rate] => 932056
                                        [probe_score] => 100
                                        [tags] => Array
                                            (
                                                [major_brand] => mp42
                                                [minor_version] => 0
                                                [compatible_brands] => mp42mp41isomavc1
                                                [creation_time] => 2016-12-04 18:25:58
                                            )

                                    )

                            )

                        [1] => 
                    )

            )

但显然->get(' duration ')并不返回持续时间。

我也尝试过

$ffprobe
->streams($this->videoFile) // extracts streams informations
->videos()                      // filters video streams
->first()                       // returns the first video stream
->get('duration');
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-05-12 02:45:14

$ffprobe
    ->streams($this->videoFile)
    ->videos()                   
    ->first()                  
    ->get('duration');

返回持续时间。因此,我必须将该命令存储到一个变量中。获取持续时间的正确方法是:

$duration = $ffprobe
           ->streams($this->videoFile)
           ->videos()                   
           ->first()                  
           ->get('duration');
票数 8
EN

Stack Overflow用户

发布于 2018-07-19 04:51:50

在README.md中编写以下代码:

$ffprobe = FFMpeg\FFProbe::create();
$duration = $ffprobe
    ->format('/path/to/video/mp4') // extracts file informations
    ->get('duration');             // returns the duration property

工作得很好。

票数 2
EN

Stack Overflow用户

发布于 2018-03-27 16:13:07

$file='msd.mp4';

$time = exec("$ffmpeg -i ".$file." 2>&1 | grep Duration | cut -d ' ' -f 4 | sed s/,//");

echo getSecondsFromHMS($time);


function getSecondsFromHMS($time) {

    $timeArr = array_reverse(explode(":", $time));    
    $seconds = 0;
    echo '<pre>';print_r($timeArr);echo '</pre>';
    foreach ($timeArr as $key => $value) {
        if ($key > 2)
            break;
        $seconds += pow(60, $key) * $value;
    }
    return (int)$seconds;
}

返回时长,单位为秒。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43922925

复制
相关文章

相似问题

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