ホームページ バックエンド開発 PHPチュートリアル Ffmpeg を使用して flv ビデオのサムネイルとビデオ時間を取得するコード_PHP チュートリアル

Ffmpeg を使用して flv ビデオのサムネイルとビデオ時間を取得するコード_PHP チュートリアル

Jul 21, 2016 pm 03:24 PM
ffmpeg flv コード 利用 そして 時間 得る ビデオ 質問

问题描述;获得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 这个是错误,不可能输出.

wps_clip_image-30884

通过上面的截图:我们可以看到输入的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 サイトでコードを見つけました。ははは、外国人のもののほうが便利ですね

間違ったコード: wps_clip_image-988

キーワードは強調表示されません


以下は正しいコードです:

コードをコピーします コードは次のとおりです:

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
tru​​e
http://www.bkjia.com/PHPjc/324240.html

技術記事

wps_clip_image-31828問題の説明: flv ビデオのサムネイルとビデオの長さを取得する 長い間 Google を検索した結果、Ffmpeg を使用してビデオに関する情報を取得できることがわかりました。まず FFMEPG について簡単に紹介します。 : ふ…

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

他人の動画をDouyinに投稿することは侵害になりますか?侵害せずにビデオを編集するにはどうすればよいですか? 他人の動画をDouyinに投稿することは侵害になりますか?侵害せずにビデオを編集するにはどうすればよいですか? Mar 21, 2024 pm 05:57 PM

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

Douyin に動画を投稿して収益を得るにはどうすればよいですか?初心者はどうやってDouyinでお金を稼ぐことができますか? Douyin に動画を投稿して収益を得るにはどうすればよいですか?初心者はどうやってDouyinでお金を稼ぐことができますか? Mar 21, 2024 pm 08:17 PM

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

小紅書ビデオ作品を公開するにはどうすればよいですか?動画を投稿する際に注意すべきことは何ですか? 小紅書ビデオ作品を公開するにはどうすればよいですか?動画を投稿する際に注意すべきことは何ですか? Mar 23, 2024 pm 08:50 PM

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

画質を圧縮せずにWeiboに動画を投稿する方法_画質を圧縮せずにWeiboに動画を投稿する方法 画質を圧縮せずにWeiboに動画を投稿する方法_画質を圧縮せずにWeiboに動画を投稿する方法 Mar 30, 2024 pm 12:26 PM

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

クリムゾンアビスオブウォーダブルパミシュ・ルシアの入手方法 クリムゾンアビスオブウォーダブルパミシュ・ルシアの入手方法 Mar 25, 2024 pm 05:31 PM

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

Douyin 15 秒は短すぎるので延長したいのですが、どうすれば延長できますか? 15秒を超えるビデオを作成するにはどうすればよいですか? Douyin 15 秒は短すぎるので延長したいのですが、どうすれば延長できますか? 15秒を超えるビデオを作成するにはどうすればよいですか? Mar 22, 2024 pm 08:11 PM

Douyin の人気により、このプラットフォームで自分の人生、才能、創造性を共有したい人が増えています。 Douyin の 15 秒制限により、多くのユーザーは十分に楽しめないと感じ、動画の再生時間を延長したいと考えています。では、Douyin での動画の再生時間を延長するにはどうすればよいでしょうか? 1. Douyin 15 秒は短すぎるので延長したいのですが、どうすれば延長できますか? 1. 複数のビデオを撮影して結合する最も便利な方法は、15 秒のビデオを複数録画し、Douyin の編集機能を使用して結合することです。録画するときは、後で接続できるように、各ビデオの最初と最後に空白スペースを残しておくようにしてください。結合されたビデオの長さは数分になる場合がありますが、これによりビデオ画面が頻繁に切り替わり、視聴体験に影響を与える可能性があります。 2. Douyin の特殊効果とステッカーを使用する Douyin は一連の特殊効果を提供します

音声なしのエッジブラウザ Web ビデオを共有するための 2 つのソリューション 音声なしのエッジブラウザ Web ビデオを共有するための 2 つのソリューション Mar 14, 2024 pm 02:22 PM

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

Copilot を使用してコードを生成する方法 Copilot を使用してコードを生成する方法 Mar 23, 2024 am 10:41 AM

プログラマーとして、私はコーディング体験を簡素化するツールに興奮しています。人工知能ツールの助けを借りて、デモ コードを生成し、要件に応じて必要な変更を加えることができます。 Visual Studio Code に新しく導入された Copilot ツールを使用すると、自然言語によるチャット対話を備えた AI 生成コードを作成できます。機能を説明することで、既存のコードの意味をより深く理解できます。 Copilot を使用してコードを生成するにはどうすればよいですか?始めるには、まず最新の PowerPlatformTools 拡張機能を入手する必要があります。これを実現するには、拡張機能のページに移動し、「PowerPlatformTool」を検索して、[インストール] ボタンをクリックする必要があります。

See all articles