本文实例讲述了php使用ffmpeg获取视频信息并截图的方法。分享给大家供大家参考,具体如下:
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
102
|
$movie = new ffmpeg_movie( '4.mp4' );
$width = $movie ->getFrameWidth();
$height = $movie ->getFrameHeight();
$count = $movie ->getFrameCount();
print $count . '' ;
$n = round ( $count /16 );
print $n . '' ;
for ( $i = 1; $i <= 1; $i ++ ) {
$img = 'screencap' . $i . '.png' ;
$x = $n * $i ;
$f = $movie ->getFrame( $x );
$gd_image = $f ->toGDImage();
imagepng( $gd_image , $img );
imagedestroy( $gd_image );
echo "
\n";
}
$extension = "ffmpeg" ;
$extension_soname = $extension . "." . PHP_SHLIB_SUFFIX;
$extension_fullname = PHP_EXTENSION_DIR . "/" . $extension_soname ;
// load extension
if (! extension_loaded ( $extension )) {
dl( $extension_soname ) or die ( "Can't load extension $extension_fullname\n" );
}
if (php_sapi_name() != 'cli' ) {
echo '
';
}
printf( "ffmpeg-php version string: %s\n" , FFMPEG_PHP_VERSION_STRING);
printf( "ffmpeg-php build date string: %s\n" , FFMPEG_PHP_BUILD_DATE_STRING);
printf( "libavcodec build number: %d\n" , LIBAVCODEC_BUILD_NUMBER);
printf( "libavcodec version number: %d\n" , LIBAVCODEC_VERSION_NUMBER);
print_class_methods( "ffmpeg_movie" );
print_class_methods( "ffmpeg_frame" );
// get an array for movies from the test media directory
$movies = getDirFiles(dirname( __FILE__ ) . '/tests/test_media' );
echo "--------------------\n\n" ;
foreach ( $movies as $movie ) {
$mov = new ffmpeg_movie( $movie );
printf( "file name = %s\n" , $mov ->getFileName());
printf( "duration = %s seconds\n" , $mov ->getDuration());
printf( "frame count = %s\n" , $mov ->getFrameCount());
printf( "frame rate = %0.3f fps\n" , $mov ->getFrameRate());
printf( "comment = %s\n" , $mov ->getComment());
printf( "title = %s\n" , $mov ->getTitle());
printf( "author = %s\n" , $mov ->getAuthor());
printf( "copyright = %s\n" , $mov ->getCopyright());
printf( "get bit rate = %d\n" , $mov ->getBitRate());
printf( "has audio = %s\n" , $mov ->hasAudio() == 0 ? 'No' : 'Yes' );
if ( $mov ->hasAudio()) {
printf( "get audio stream id= %s\n" , $mov ->getAudioStreamId());
printf( "get audio codec = %s\n" , $mov ->getAudioCodec());
printf( "get audio bit rate = %d\n" , $mov ->getAudioBitRate());
printf( "get audio sample rate = %d \n" , $mov ->getAudioSampleRate());
printf( "get audio channels = %s\n" , $mov ->getAudioChannels());
}
printf( "has video = %s\n" , $mov ->hasVideo() == 0 ? 'No' : 'Yes' );
if ( $mov ->hasVideo()) {
printf( "frame height = %d pixels\n" , $mov ->getFrameHeight());
printf( "frame width = %d pixels\n" , $mov ->getFrameWidth());
printf( "get video stream id= %s\n" , $mov ->getVideoStreamId());
printf( "get video codec = %s\n" , $mov ->getVideoCodec());
printf( "get video bit rate = %d\n" , $mov ->getVideoBitRate());
printf( "get pixel format = %s\n" , $mov ->getPixelFormat());
printf( "get pixel aspect ratio = %s\n" , $mov ->getPixelAspectRatio());
$frame = $mov ->getFrame(10);
printf( "get frame = %s\n" , is_object ( $frame ) ? 'true' : 'false' );
printf( " get frame number = %d\n" , $mov ->getFrameNumber());
printf( " get frame width = %d\n" , $frame ->getWidth());
printf( " get frame height = %d\n" , $frame ->getHeight());
}
echo "\n--------------------\n\n" ;
}
if (php_sapi_name() != 'cli' ) {
echo '' ;
}
/* FUNCTIONS */
function print_class_methods( $class ) {
echo "\nMethods available in class '$class':\n" ;
$methods = get_class_methods( $class );
if ( is_array ( $methods )) {
foreach ( $methods as $method ) {
echo $method . "\n" ;
}
} else {
echo "No Methods Defined\n" ;
}
}
function getDirFiles( $dirPath )
{
if ( $handle = opendir( $dirPath ))
{
while (false !== ( $file = readdir( $handle ))) {
$fullpath = $dirPath . '/' . $file ;
if (! is_dir ( $fullpath ) && $file != "CVS" && $file != "." && $file != ".." )
$filesArr [] = trim( $fullpath );
}
closedir ( $handle );
}
return $filesArr ;
}
?>
|
运行效果如下图所示:
希望本文所述对大家PHP程序设计有所帮助。