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;
?>