91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php+ffmpeg怎么獲取視頻縮略圖、視頻分辨率等相關信息

發布時間:2022-03-03 13:38:47 來源:億速云 閱讀:122 作者:小新 欄目:開發技術

小編給大家分享一下php+ffmpeg怎么獲取視頻縮略圖、視頻分辨率等相關信息,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

前言

ffmpeg是一款開源、跨平臺的視頻處理程序,可用在Windows、mac、linux等平臺,可以方便的運用多種語言腳本來調用其執行視頻的操作。

下面介紹使用ffmpeg獲取視頻首幀的方法。

<?php
//待處理視頻
$in_file = 'https://cache.yisu.com/upload/information/20220303/112/303345.jpg';
 
//shell腳本
$shell = "ffmpeg -i $in_file -y -f  image2  -ss 00:00:01 -vframes 1  $out_file 2>&1";
 
//調用php的exec方法去執行腳本
exec($shell, $output, $return_val);
 
//獲取輸出信息
print_r($output);

FFmpeg獲得視頻文件的縮略圖

function getVideoCover($file,$time,$name) {
   if(empty($time))$time = '1';//默認截取第一秒第一幀
   $strlen = strlen($file);
   //exec("ffmpeg -i ".$file." -y -f mjpeg -ss ".$time." -t 0.001 -s 320x240 ".$name."",$out,$status);
   $str = "ffmpeg -i ".$file." -y -f mjpeg -ss 3 -t ".$time." -s 320x240 ".$name;
   $result = system($str);
 }

Fmpeg讀取視頻信息

<?php
define('FFMPEG_PATH', '/usr/local/ffmpeg2/bin/ffmpeg -i "%s" 2>&1');
  
function getVideoInfo($file) {
   
  $command = sprintf(FFMPEG_PATH, $file);
   
  ob_start();
  passthru($command);
  $info = ob_get_contents();
  ob_end_clean();
  
  $data = array();
  if (preg_match("/Duration: (.*?), start: (.*?), bitrate: (\d*) kb\/s/", $info, $match)) {
    $data['duration'] = $match[1]; //播放時間
    $arr_duration = explode(':', $match[1]);
    $data['seconds'] = $arr_duration[0] * 3600 + $arr_duration[1] * 60 + $arr_duration[2]; //轉換播放時間為秒數
    $data['start'] = $match[2]; //開始時間 
    $data['bitrate'] = $match[3]; //碼率(kb)
  }
  if (preg_match("/Video: (.*?), (.*?), (.*?)[,\s]/", $info, $match)) {
    $data['vcodec'] = $match[1]; //視頻編碼格式
    $data['vformat'] = $match[2]; //視頻格式
    $data['resolution'] = $match[3]; //視頻分辨率
    $arr_resolution = explode('x', $match[3]);
    $data['width'] = $arr_resolution[0];
    $data['height'] = $arr_resolution[1];
  }
  if (preg_match("/Audio: (\w*), (\d*) Hz/", $info, $match)) {
    $data['acodec'] = $match[1]; //音頻編碼
    $data['asamplerate'] = $match[2]; //音頻采樣頻率
  }
  if (isset($data['seconds']) && isset($data['start'])) {
    $data['play_time'] = $data['seconds'] + $data['start']; //實際播放時間
  }
  $data['size'] = filesize($file); //文件大小
  return $data;
}
  
//用法
$video_info = getVideoInfo('video.mp4');
print_r($video_info);
?>

Fmpeg獲得視頻文件的總長度時間和創建時間

function getTime($file){
   $vtime = exec("ffmpeg -i ".$file." 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | sed s/,//");//總長度
   $ctime = date("Y-m-d H:i:s",filectime($file));//創建時間
   //$duration = explode(":",$time);
   // $duration_in_seconds = $duration[0]*3600 + $duration[1]*60+ round($duration[2]);//轉化為秒
   return array('vtime'=>$vtime,
   'ctime'=>$ctime
   );
}

另外一種方法

ffprobe -v quiet -print_format json -show_format -show_streams test.mp4

結果

{
    "streams": [
        {
            "index": 0,
            "codec_name": "h364",
            "codec_long_name": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",
            "profile": "High",
            "codec_type": "video",
            "codec_time_base": "1/1200",
            "codec_tag_string": "avc1",
            "codec_tag": "0x31637661",
            "width": 538,
            "height": 888,
            "coded_width": 544,
            "coded_height": 896,
            "has_b_frames": 0,
            "sample_aspect_ratio": "0:1",
            "display_aspect_ratio": "0:1",
            "pix_fmt": "yuv420p",
            "level": 31,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 2,
            "is_avc": "1",
            "nal_length_size": "4",
            "r_frame_rate": "30/1",
            "avg_frame_rate": "30/1",
            "time_base": "1/600",
            "start_pts": 0,
            "start_time": "0.000000",
            "duration_ts": 6040,
            "duration": "10.066667",
            "bit_rate": "1022789",
            "bits_per_raw_sample": "8",
            "nb_frames": "302",
            "disposition": {
                "default": 1,
                "dub": 0,
                "original": 0,
                "comment": 0,
                "lyrics": 0,
                "karaoke": 0,
                "forced": 0,
                "hearing_impaired": 0,
                "visual_impaired": 0,
                "clean_effects": 0,
                "attached_pic": 0
            },
            "tags": {
                "creation_time": "2020-01-01 15:59:27",
                "language": "und",
                "handler_name": "Core Media Video"
            }
        },
        {
            "index": 1,
            "codec_name": "aac",
            "codec_long_name": "AAC (Advanced Audio Coding)",
            "profile": "LC",
            "codec_type": "audio",
            "codec_time_base": "1/44100",
            "codec_tag_string": "mp4a",
            "codec_tag": "0x6134706d",
            "sample_fmt": "fltp",
            "sample_rate": "44100",
            "channels": 1,
            "channel_layout": "mono",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/44100",
            "start_pts": -2112,
            "start_time": "-0.047891",
            "duration_ts": 442368,
            "duration": "10.031020",
            "bit_rate": "45569",
            "max_bit_rate": "48000",
            "nb_frames": "432",
            "disposition": {
                "default": 1,
                "dub": 0,
                "original": 0,
                "comment": 0,
                "lyrics": 0,
                "karaoke": 0,
                "forced": 0,
                "hearing_impaired": 0,
                "visual_impaired": 0,
                "clean_effects": 0,
                "attached_pic": 0
            },
            "tags": {
                "creation_time": "2020-01-01 15:59:27",
                "language": "und",
                "handler_name": "Core Media Audio"
            }
        }
    ],
    "format": {
        "filename": "test.mp4",
        "nb_streams": 2,
        "nb_programs": 0,
        "format_name": "mov,mp4,m4a,3gp,3g2,mj2",
        "format_long_name": "QuickTime / MOV",
        "start_time": "-0.047891",
        "duration": "10.066667",
        "size": "1351439",
        "bit_rate": "1073991",
        "probe_score": 100,
        "tags": {
            "major_brand": "mp42",
            "minor_version": "1",
            "compatible_brands": "isommp41mp42",
            "creation_time": "2020-01-01 15:59:27"
        }
    }
}

看完了這篇文章,相信你對“php+ffmpeg怎么獲取視頻縮略圖、視頻分辨率等相關信息”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

锦屏县| 石渠县| 白玉县| 将乐县| 资源县| 介休市| 类乌齐县| 晋宁县| 楚雄市| 渭源县| 孟村| 东兰县| 江西省| 威海市| 台州市| 临城县| 嘉义县| 长子县| 郑州市| 白河县| 南平市| 岳池县| 福安市| 洱源县| 保亭| 溧水县| 桂东县| 景谷| 安新县| 虹口区| 兖州市| 克山县| 丽水市| 瑞安市| 西城区| 衡水市| 疏附县| 城步| 长沙市| 余干县| 中超|