1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
<?php
/* ------------------------------------------------------------------------------
 *   【ffmpeg_php】と【GD,image】を利用して、動画の指定フレーム画像から取込の例
 *      動画コンテナの映像フレームからサムネール画像の作成
 *    2016.09.08 作成 yoshi of CXMedia Inc.
 * ------------------------------------------------------------------------------ */
/* -----------------
 *    初期設定
 * ----------------- */
//入力フォルダパス
$input_dir 'mv_sample/';
//出力フォルダパス
$output_dir'img_sample/';
//処理する映像ファイル名
$inp_file  'BigBuckBunny_1.mp4';
//サムネール画像ファイル名の拡張子変換(jpg)
$out_file  preg_replace("/\.(.+?)$/",".jpg",$inp_file);
//【絶対パスを設定しないとopen pathエラーとなる】
$movie_path realpath($input_dir.$inp_file);

/* ------------------------------------
 *   動画の情報取得処理:ffmpeg_movie
 * ------------------------------------ */
//[ffmpeg_movie]のインスタンス生成
$movie = new ffmpeg_movie($movie_path);

//動画の入力ファイル名(realpathのもの)
$mv_name   $movie->getFileName();
//動画の幅と高さを取得
$mv_width  $movie->getFrameWidth();
$mv_height $movie->getFrameHeight();
//動画の所要時間
$mv_duration ceil($movie->getDuration());
//動画のフレーム数
$mv_frame  $movie->getFrameCount();
//動画のフレームレート
$mv_framerate $movie->getFrameRate();
//動画の映像コーデック
$mv_vcodec $movie->getVideoCodec();
//動画の音声コーデック
$mv_acodec $movie->getAudioCodec();

//取得するフレームNo指定とGDリソース作成
$frame $movie->getFrame(20);  //getFrameで取得するフレームNoを指定
$image $frame->toGDImage();   //toGDImageでGDのresouseを返す

/* ---------------------------------
 *   フレーム画像の作成:GD,image
 * --------------------------------- */
//縮小サイズ(50%)の設定
$thumb_width  $mv_width 0.5;
$thumb_height $mv_height 0.5;

//空の画像を作る(引数で縮小画像サイズを指定)
$img_rsc Imagecreatetruecolor($thumb_width$thumb_height);

//$imageを縮小画像サイズで$img_rscにコピー
imagecopyresampled($img_rsc,$image,0,0,0,0,$thumb_width,$thumb_height,$mv_width,$mv_height);

//出力用バッファの内容を消去し、出力のバッファリングをオフにする
ob_end_clean();

//---jpgファイルを出力 ---//
/* ---------------------------------------------------------
   imageJpeg($img_rsc,$out_path [,$quality])--
     img_rsc : 画像リソース、
     out_path : ファイルの保存先のパス(NULL を設定した場合は、画像ストリームを直接出力)
     quality : 画像品質(0~100:最高、省略値:75)
 * --------------------------------------------------------- */
imageJpeg($img_rsc,$output_dir.$out_file,100);
//メモリを開放
imageDestroy($image);
imageDestroy($img_rsc);

/* ----------------------------------
 *      処理した動画情報を表示 
 * ---------------------------------- */
echo <<< _EOL_
<video autoplay controls src="{$input_dir}{$inp_file}"></video>
<div width="100%">
<div style="float:left;">
<p>■サムネール画像(50%縮小、20フレーム目):<br>
<img src="
{$output_dir}{$out_file}" alt="{$out_file}"></p>
</div>
<div style="margin-left:20px; float:left;">
<p>----- 動画の情報取得------<br>
■動画のファイル名:
{$input_dir}{$inp_file}<br>
■所要時間:
{$mv_duration} 秒<br>
■フレーム幅:
{$mv_width} ピクセル<br>
■フレーム高さ:
{$mv_height} ピクセル<br>
■フレーム数:
{$mv_frame}<br>
■フレームレート:
{$mv_framerate} fps<br>
■映像コーデック:
{$mv_vcodec}<br>
■音声コーデック:
{$mv_acodec}
</p>
</div>
</div>
_EOL_;

exit;
?>