×

phpffmpeg并发

phpffmpeg并发(php 并发 解决方案)

admin admin 发表于2023-03-26 11:32:09 浏览40 评论0

抢沙发发表评论

本文目录一览:

windows php怎么使用ffmpeg

Windows下FFmpeg快速入门

FFmpeg简介

FFmpeg是什么?

FFmpeg是用于录制、转换和流化音频和视频的完整解决方案, 包括 libavcodec ,一套领先的音/视频编解码类库。FFmpeg 在Linux上开发,当可以在大多数操作系统下编译,包括Windows。-phpffmpeg并发

Note

FFmpeg对GCC的依赖很强,所以就算是在Windows上, 用VC编译FFmpeg也不是一件轻松的事情。请尽量使用 GCC来编译FFmpeg,比较事半功倍。

FFmpeg的组成结构

FFmpeg主要由一下几个部分组成:

libavcodec: 一个包含了所有FFmpeg音视频编解码器的库。 为了保证最优性能和高可复用性,大多数编解码器从头开发的。

libavformat: 一个包含了所有的普通音视格式的解析器和 产生器的库。

ffmpeg:命令行的视频格式转换程序。

ffplay:视频播放程序。(需要SDL支持)

ffserver:多媒体服务器

三个实例程序,这三个实例较为复杂,基本可以作为API使用手册:

了解完组成结构后,你会发现,如果你在寻找一种视频格式转换 的方式,那FFmpeg绝对是你的第一选择,libavcodec 则又是重 中之重。如果遇上API不会使用的情况,可以参考ffmpeg.c、ffplay.c、 ffserver.c、apiexample.c(解码)和output_example.c(编码)。-phpffmpeg并发

FFmpeg的编译

要使用FFmpeg,第一步就是编译,编译FFmpeg是一个复杂的过程,如果你想加快速度,领略FFmpeg 的风采,则可以跳过这一步,直接进入下一章节。

FFmpeg的SDK

FFmpeg是一个复杂的工程,第一步编译,特别是Windows下的编译 过程,更是复杂。 因此,好心的网友提供了Windows下编译好的 dll和lib库文件,以及相关的头文件。新手们则可直接下载,并开始编写 FFmpeg库的程序了。-phpffmpeg并发

以上两者已经足以完成FFmpeg的入门,最新的SDK版本是3.0, 对应于FFmpeg的版本是 r10087。新手们可以从编译源代码库中的 output_example.c开始,同时参考 SDK入门宝典 。-phpffmpeg并发

编译output_example.c的时候需要注意以下问题:

VC的是不支持C语言中的inline,所以可以把相关的inline删除。

对于snprintf的支持,可以考虑下载 snprintf.h和snprintf.c放入工程中。

怎样在windows下配置ffmpeg-php

首先介绍下我使用的集成环境wamp。

PHP: php5.2.6

Apache: apache2.2.8

1.下载ffmpeg-php

2. 解压ffmpeg-php-win32-all.zip 后有下面几个文件:

avcodec-51.dll

avformat-51.dll

avutil-49.dll

php_ffmpeg.dll

pthreadGC2.dll

3. 将四个文件拷贝到windows\system32文件夹下面(小插曲:之前自己再配置时候按照网上的文章只拷贝两个文件 avcodec-51.dll, avformat-51.dll到这个文件,结果发现并不能配置成功。后来将后面avutil-49.dll, pthreadGC2.dll全部拷贝过去就成功了,很有可能这四个文件是有一定关联使用的。)-phpffmpeg并发

avcodec-51.dll, avformat-51.dll, avutil-49.dll, pthreadGC2.dll

4. 然后需要到apache\bin文件下找到php.ini文件下允许使用dll文件加入extension=php_ffmpeg.dll 并允许 extension=php_gd2.dll, extension=php_gettext.dll这两个-phpffmpeg并发

改动后如下(去掉前面的分号就代表允许执行)

extension=php_gd2.dll

extension=php_gettext.dll

extension=php_ffmpeg.dll

5. 重新启动wamp后使用phpinfo()函数看到一下信息配置: //我两个环境一个apache一个IIS,iis不用重启就生效了,apache没试不知道, add by aboc

ffmpeg

ffmpeg-php version 0.5.2.1

libavcodec version Lavc51.43.0

libavformat version Lavf51.12.2

ffmpeg-php gd support enabled

以上就表明ffmpeg在php环境中配置成功了。

6. 下面我们建立一个php的页面来测试是不是可以使用ffmpeg的一些函数功能。建立testvideo.php文件

代码如下:

?php

extension_loaded('ffmpeg'); //可不要

$ffmpegInstance = new ffmpeg_movie('C:\wamp\www\top10.mp4'); //这里要用绝对路径

echo "getDuration: " . $ffmpegInstance-getDuration()."br" .

"getFrameCount: " . $ffmpegInstance-getFrameCount()."br" .

"getFrameRate: " . $ffmpegInstance-getFrameRate()."br" .

"getFilename: " . $ffmpegInstance-getFilename()."br" .

"getComment: " . $ffmpegInstance-getComment()."br" .

"getTitle: " . $ffmpegInstance-getTitle()."br" .

"getAuthor: " . $ffmpegInstance-getAuthor()."br" .

"getCopyright: " . $ffmpegInstance-getCopyright()."br" .

"getArtist: " . $ffmpegInstance-getArtist()."br" .

"getGenre: " . $ffmpegInstance-getGenre()."br" .

"getTrackNumber: " . $ffmpegInstance-getTrackNumber()."br" .

"getYear: " . $ffmpegInstance-getYear()."br" .

"getFrameHeight: " . $ffmpegInstance-getFrameHeight()."br" .

"getFrameWidth: " . $ffmpegInstance-getFrameWidth()."br" .

"getPixelFormat: " . $ffmpegInstance-getPixelFormat()."br" .

"getBitRate: " . $ffmpegInstance-getBitRate()."br" .

"getVideoBitRate: " . $ffmpegInstance-getVideoBitRate()."br" .

"getAudioBitRate: " . $ffmpegInstance-getAudioBitRate()."br" .

"getAudioSampleRate: " . $ffmpegInstance-getAudioSampleRate()."br" .

"getVideoCodec: " . $ffmpegInstance-getVideoCodec()."br" .

"getAudioCodec: " . $ffmpegInstance-getAudioCodec()."br" .

"getAudioChannels: " . $ffmpegInstance-getAudioChannels()."br" .

"hasAudio: " . $ffmpegInstance-hasAudio();

?

7.执行后如果拿到视频的一些信息如下就表示环境配置成功了,那我们就可以开始开发我们的视频转换了。

执行结果:

getDuration: 811.13336181641

getFrameCount: 12167

getFrameRate: 15

getFilename: C:\wamp\www\top10.mp4

getComment:

getTitle:

getAuthor:

getCopyright:

getArtist:

getGenre:

getTrackNumber: 0

getYear: 0

getFrameHeight: 240

getFrameWidth: 320

getPixelFormat: yuv420p

getBitRate: 269769

getVideoBitRate:

getAudioBitRate:

getAudioSampleRate: 48000

getVideoCodec: mpeg4

getAudioCodec: mpeg4aac

getAudioChannels: 2

hasAudio: 1

视频截图的话如下方法: //add by aboc

$ff_frame = $ffmpegInstance-getFrame(rand(1,$ffmpegInstance-getFrameCount())); //随机截取某一帧

$gd_image = $ff_frame-toGDImage();

imagejpeg($gd_image,'t.jpg');

imagedestroy($gd_image);

echo 'img src="t.jpg" /';

如何在php中实现ffmpeg视频转码

具体代码如下:

?php

$ch = curl_init();

$timeout = 5;

curl_setopt ($ch, CURLOPT_URL, '');

curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);

$file_contents = curl_exec($ch);

curl_close($ch);

echo $file_contents;

?

PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。

它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,

执行效率比完全生成HTML标记的CGI要高许多;

PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。

如何解决php执行exec函数ffmpeg命令不生效的问题

返回值是你所执行的命令的返回值,这个要看你执行的命令是什么了。linux下,一般命令执行成功的返回值是零,非零表示错误代码,你需要查找命令的相关手册。