Ffmpeg を使用して flv ビデオのサムネイルとビデオ時間を取得するコード_PHP チュートリアル
问题描述;获得flv视频的缩略图和视频时间长度
- 谷歌了半天发现可以使用Ffmpeg获得视频的一些信息,先介绍一下FFMEPG
这里简单说一下:FFmpeg是用于录制、转换和流化音频和视频的完整解决方案,一套领先的音/视频编解码类库。官方正式版ffmpeg不支持rmvb和rm格式. 不过有很多解决方法
FFmpeg的官方网址是 http://ffmpeg.mplayerhq.hu/ 。
中文Wiki是 http://www.ffmpeg.com.cn/ ,资料很多。
㈠安装FFMEPG
操作系统:centos6
找了那么多安装FFMEPG的文章,基本上都是没有注释,需要安装那么多软件包,也不说明一下是干什么用的,纠结。。而且安装上面步骤总是出问题,最后只得寻找官网,认真的看一下,确实官方的资料很好用,以后一定要优先看官网资料。
由于FFMEPG本身就支持flv格式,也就是说目前不需要安装什么插件只需要安装FFMEPG,安装FFMEPG有两种方式:①源码包安装,这个不知道怎么回事老是报错②yum命令安装,centos这个yum是最好的命令,呵呵
下面是安装步骤:
㈠安装编译环境
#yum install -y automake autoconf libtool gcc gcc-c++
㈡安装所需程序库的RPM包到 centos
rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
安装 Install ffmpeg 等模块
yum -y install ffmpeg ffmpeg-devel
***********************************centos下面的安装已经完成!
安装php支持插件:FFMPEG-PHP
安装 FFMPEG-PHP
cd /usr/local/src
wget http://garr.dl.sourceforge.net/sourceforge/ffmpeg-php/ffmpeg-php-0.6.0.tbz2
tar jxvf ffmpeg-php-0.6.0.tbz2
cd ffmpeg-php-0.6.0
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-confi
make
make install
然后修改php.ini文件
vi php.ini
在php.ini文件加上这句
extension=ffmpeg.so
然后重新启动apache
/etc/init.d/httpd restart
*******备注wget链接那个可能失效,估计是被墙了,可以在网上自己找
----------------------------------------------------------------------------------------------------------
但是我打开phpinfo并没有看到FFMPEG,不知道怎么回事,官网上面提供的安装方法是需要重新编译php来支持ffmpeg,我嫌麻烦,考虑到服务都是在centos上运行,既然centos已经可以,
那我使用php的exec函数调用liunx的shell命令不就可以了,也就是说不需要安装FFMPEG-PHP
关于php的exec函数的可以参考:php中使用exec,system等函数调用系统命令
下面是获得缩略图的常用命令:
示例1:
截取一张352x240尺寸大小的,格式为jpg的图片:
ffmpeg -i test.asf -y -f image2 -t 0.001 -s 352x240 a.jpg
示例2:
把视频的前30帧转换成一个Animated Gif :
ffmpeg -i test.asf -vframes 30 -y -f gif a.gif
示例3:这个是我需要的!
在视频的第8.01秒处截取 320*240 的缩略图
ffmpeg -i test.flv -y -f mjpeg -ss 3 -t 0.001 -s 320x240 test.jpg
示例4:
把视频转换成flv文件(这个用得最多,现在Flv基本上已经成了网络视频的标准了)
ffmpeg -i source -s 320×240 -b 700k -aspect 4:3 -y -f flv dest.flv 。
其中:
- source:是原始文件的名字,可以是mov,mpeg,avi,wmv各类格式,ffmpeg基本都支持。
- -s wxh: 指定视频的宽和高
- -b : 设定视频的比特率
- -aspect: 保持视频的比率。如4:3或者16:9
- -y : 如果目标文件存在时,直接覆盖原有的目标文件。
- -f : 指定转换的文件格式,这里是flv格式。(其实如果不指定文件格式,ffmpeg也会按文件的后缀名来进行转换)。
- dest: 转换的目标文件名字,并不一定需要是flv,可以是mov,mpeg以及其他的常用格式。
参数说明:
-L license
-h 帮助
-fromats 显示可用的格式,编解码的,协议的
-f fmt 强迫采用格式fmt
-I filename 输入文件
-y 覆盖输出文件
-t duration 设置纪录时间 hh:mm:ss[.xxx]格式的记录时间也支持
-ss position 搜索到指定的时间 [-]hh:mm:ss[.xxx]的格式也支持
s wxh: 指定视频的宽和高
****************************************************************************
示例3:是针对flv格式的视频获得指定处的缩略图,记住 -f强制转换的格式是mjpeg因为我要获得.jpg的缩略图,网上有很多写成文章都是写成ffmpeg -i test.flv -y -f image2 -ss 08.010 -t 0.001 -s 352x240 b.jpg 这个是错误,不可能输出.
通过上面的截图:我们可以看到输入的flv信息和输出的jpg图片信息,Duration就是本文需要的视频长度,但是我不知道如何取得这个变量
下面是PHP调用shell命令获得缩略图的代码
exec("/usr/bin/ffmpeg -i /usr/local/apache/htdocs/test.flv -y -f mjpeg -ss 3 -t 0.001 -s 320x240 /usr/local/apache/htdocs/test.jpg",$out,$status);
print_r($status);//0是成功 1是失败
*************************************************
如果没有什么图片生成的可能原因:
①对于存储生成图片的文件夹需要有写入权限 #chomd 777 /usr/local/apache/htdocs
②在php.ini中有disable_functions禁用了php调用shell命令函数,
disable_functions = proc_open, popen,exec, system, shell_exec, passthru
解决办法:注释掉disable_functions这一项
#disable_functions = proc_open, popen,exec, system, shell_exec, passthru
或者disable_functions = (把禁言的函数除去)
保存关闭开启就可以了
③php.ini中的安全模式必须关闭 才可以调用exec函数
safe_mode = off
④图片时间截取也很重要,很有可能是无效图片或者是黑屏
建议 增加关键帧,通常第一帧为关键帧,可以使用:vframes:帧参数,舍弃微秒参数,只保留时间参数
/usr/bin/ffmpeg -i /usr/local/apache/htdocs/test.flv -y -f mjpeg -ss 3 -vframes 1 -s 320x240 /usr/local/apache/htdocs/test.jpg
****************************************************************************
上面都是解决获得缩略图的方法,我看到有人在安卓开发中利用ffmpeg获得手机里面视频的缩略图,考虑到安卓的底层是liunx,应该是通用的!下面是如何获得视频的长度,虽然Duration就是需要的视频长度,但是不知道如何去取,如果有人会,可以教一下我,跪求!
下面是使用纯PHP获得视频的时间长度:
你在网上搜一下:php获得flv视频长度
たくさんの結果が見つかりますが、十数ページをめくったところ、tmd のものはすべてコピーされ、再版されており、なぜすべて使用できないことがわかりました。このコードは奇妙です。インターネット上でコードを実行すると、エディターでは構文の強調表示が表示されないため、コードが奇妙であることがわかります。 。 。 。報告されたエラーは非常に奇妙ですので、興味がある方は試してみてください。 仕方なく、海外の Web サイトでコードを見つけました。ははは、外国人のもののほうが便利ですね
間違ったコード:
キーワードは強調表示されません
以下は正しいコードです:
function BigEndian2Int($byte_word, $signed = false) {
$int_value = 0; $byte_wordlen = strlen( $byte_word);
for ($i = 0; $i < $byte_wordlen; $i++) {
$int_value += ord($byte_word{$i}) * pow(256, ($byte_wordlen) - 1 - $i ));
if ($signed) {
$sign_mask_bit = 0x80 $int_value = 0 - ($ int_value & ($sign_mask_bit - 1));
}
}
return $int_value;
//ビデオのデジタル時間を取得する
function getTime($name){
if(!file_exists() $name)){
return ;
$flv_data_length=filesize($name);
$flv_header($fp, 5); $ fp、seek_set); flv_header_frame_length, SEEK_CUR );
}
$duration = 0;
while ((ftell($fp) + 1) $this_tag_header = fread($fp, 16); ($this_tag_header, 5, 3 ));
$timestamp = BigEndian2Int(substr($this_tag_header, 8, 3));
$next_offset = ftell($fp) - 1 + $data_length;
if ($timestamp > $ duration) {
$duration = $timestamp;
fseek($fp, $next_offset, SEEK_SET);
fclose($fp);
return $duration;
// 0 の時間形式に変換します。 :03:56
関数 fn( $time){
$num = $time;
$sec = intval($num/1000);
$m = intval(( $sec%3600)/60) ;
$s = intval(($sec%60));
$tm を返します。 }
$t = getTime(" 22.flv");// 236722 などのデジタル時刻を表示
echo fn($t);// 時刻の形式を 0:03:56 で表示
プレビュー効果:
私のビデオはちょうど 55 秒です! k
http://www.bkjia.com/PHPjc/324240.html
www.bkjia.com
http://www.bkjia.com/PHPjc/324240.html技術記事
問題の説明: flv ビデオのサムネイルとビデオの長さを取得する 長い間 Google を検索した結果、Ffmpeg を使用してビデオに関する情報を取得できることがわかりました。まず FFMEPG について簡単に紹介します。 : ふ…

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











ショートビデオプラットフォームの台頭により、Douyinはみんなの日常生活に欠かせないものになりました。 TikTokでは世界中の面白い動画を見ることができます。他人のビデオを投稿することを好む人もいますが、「Douyin は他人のビデオを投稿することを侵害しているのでしょうか?」という疑問が生じます。この記事では、この問題について説明し、著作権を侵害せずに動画を編集する方法と、著作権侵害の問題を回避する方法について説明します。 1.Douyin による他人の動画の投稿は侵害ですか?私の国の著作権法の規定によれば、著作権者の著作物を著作権者の許可なく無断で使用することは侵害となります。したがって、オリジナルの作者または著作権所有者の許可なしに他人のビデオをDouyinに投稿することは侵害となります。 2. 著作権を侵害せずにビデオを編集するにはどうすればよいですか? 1. パブリックドメインまたはライセンスされたコンテンツの使用: パブリック

全国的なショートビデオプラットフォームであるDouyinは、自由な時間にさまざまな興味深く斬新なショートビデオを楽しむことができるだけでなく、自分自身を示し、自分の価値観を実現するステージも提供します。では、Douyin に動画を投稿してお金を稼ぐにはどうすればよいでしょうか?この記事ではこの質問に詳しく答え、TikTokでより多くのお金を稼ぐのに役立ちます。 1.Douyin に動画を投稿してお金を稼ぐにはどうすればよいですか?動画を投稿し、Douyin で一定の再生回数を獲得すると、広告共有プランに参加できるようになります。この収入方法はDouyinユーザーにとって最も馴染みのある方法の1つであり、多くのクリエイターにとって主な収入源でもあります。 Douyin は、アカウントの重み、動画コンテンツ、視聴者のフィードバックなどのさまざまな要素に基づいて、広告共有の機会を提供するかどうかを決定します。 TikTok プラットフォームでは、視聴者がギフトを送ったり、

1. まず携帯電話で Weibo を開き、右下隅の [Me] をクリックします (図を参照)。 2. 次に、右上隅の [歯車] をクリックして設定を開きます (図を参照)。 3. 次に、[一般設定] を見つけて開きます (図を参照)。 4. 次に、[Video Follow] オプションを入力します (図を参照)。 5. 次に、[ビデオアップロード解像度]設定を開きます(図を参照)。 6. 最後に、圧縮を避けるために [オリジナルの画質] を選択します (図を参照)。

短編ビデオ プラットフォームの台頭により、Xiaohongshu は多くの人々が自分の生活を共有し、自分自身を表現し、トラフィックを獲得するためのプラットフォームになりました。このプラットフォームでは、ビデオ作品の公開が非常に人気のある交流方法です。では、小紅書ビデオ作品を公開するにはどうすればよいでしょうか? 1.小紅書ビデオ作品を公開するにはどうすればよいですか?まず、共有できるビデオ コンテンツがあることを確認します。携帯電話やその他のカメラ機器を使用して撮影することもできますが、画質と音声の明瞭さには注意する必要があります。 2.ビデオを編集する:作品をより魅力的にするために、ビデオを編集できます。 Douyin、Kuaishou などのプロ仕様のビデオ編集ソフトウェアを使用して、フィルター、音楽、字幕、その他の要素を追加できます。 3. 表紙を選択する: 表紙はユーザーのクリックを誘致するための鍵です。ユーザーのクリックを誘致するために、表紙には鮮明で興味深い写真を選択してください。

当社でよく利用するオフィスソフトの一つであるMicrosoft PowerPointプレゼンテーションでは、説明する内容を網羅的かつ詳細に表現するために、ビデオも重要なプレゼンテーション手法の一つです。ご存知のように、ハイパーリンクまたは WindowsMediaPlayer コントロールを介してビデオを PPT に挿入するときは、パスの問題を考慮する必要があります。では、PPT ビデオを埋め込んでファイルに結合したい場合、どのように解決すればよいでしょうか?次に、解決策を見てみましょう!手順は次のとおりです。 1. まず、[Video Embed.pptx] Microsoft PowerPoint プレゼンテーションをダブルクリックして開きます。 ShockwaveFlashOを使用しているため

最近では、特に Baidu Netdisk ソフトウェアに依存する友人が増えていますが、ここの機能が特に豊富であることがわかります。これらの機能により、誰でも無料で選択して使用できます。いくつかの問題を解決するのに非常に優れています。非常に強力で使いやすいです。超大容量のストレージ スペースは、さまざまなリソースを保存するのに非常に役立ちます。これらのファイルを見つけることは決してできません。リソースは、仕事中でも勉強中でも、必要なドキュメント タイプのコンテンツがある場合に使用できます。保存したい、すべての人を満足させることができます。これらのファイル リソースについては、ここでいつでも閲覧または閲覧できます。共有は非常に便利です。とにかく、アカウントに永久に保存されます。その後、あなたは

多くのユーザーはブラウザで動画を視聴することを好みますが、Edge ブラウザで Web 動画を視聴するときに音が出ない場合は、どうすれば問題を解決できますか?この問題は難しいことではありません. 次に、Edge ブラウザの Web 動画で音が出ない問題を解決する方法を説明します。 Edge ブラウザの Web ビデオに音声がありませんか?方法 1: 1. まず、Edge ブラウザの上部タブを確認します。 2. タブの左側に「サウンドボタン」がありますので、ミュートになっていないことを確認してください。方法 2: 1. サウンドがミュートされていないことが確認された場合は、サウンド設定に問題がある可能性があります。 2. 右下隅にあるサウンドデバイスを右クリックし、「ボリュームシンセサイザーを開く」を選択します。 3. 開く

プレイヤーはバトル ダブル パミッシュでプレイするときにルシアのクリムゾン アビスを入手できます。多くのプレイヤーはルシアのクリムゾン アビスの入手方法を知りません。プレイヤーは研究開発を通じて入手するか、ファントム ペイン ケージ ストアで引き換えることができます。バトルダブルパミシュ ルチア クリムゾンアビスのR&D入手方法 1.ベースカードプール、テーマ限定カードプール、デスティニー限定カードプールのR&Dシステムから抽選で入手できます 2.これらのカードプールで公開されますシア・クリムゾン・アビスの基本ドロップ率は1.50%ですが、カードプールからルシア・クリムゾン・アビスを引くとドロップ率が1.90%にアップします。ファントム ペイン ケージ ストアでの引き換え 1. プレイヤーは、ファントム ペイン ケージ ストアでファントム ペイン スカーを使用して、ルシア クリムゾン アビスのフラグメントを引き換えることができます。 2.毎週最大 30 個のフラグメントを引き換えることができます。
