本文实例讲述了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程序设计有所帮助。