ホームページ バックエンド開発 PHPの問題 Ffmpegを使用してflvビデオのサムネイルとビデオの長さを取得する方法

Ffmpegを使用してflvビデオのサムネイルとビデオの長さを取得する方法

Jul 14, 2021 pm 03:35 PM
ffmpeg

FFmpeg は、オーディオとビデオの記録、変換、ストリーミングのための完全なソリューションであり、主要なオーディオ/ビデオ コーデック ライブラリです。 ffmpeg の正式バージョンは、rmvb および rm 形式をサポートしていません。今日はそれを紹介します。

Ffmpegを使用してflvビデオのサムネイルとビデオの長さを取得する方法

# 長い間 Google を検索した結果、Ffmpeg を使用してビデオに関する情報を取得できることがわかりました。まず FFMEPG


# を紹介します。 ##簡単な説明は次のとおりです: FFmpeg は、オーディオとビデオの記録、変換、ストリーミングのための完全なソリューション、主要なオーディオ/ビデオ コーデック ライブラリに使用されます。 ffmpeg の公式バージョンは rmvb および rm 形式をサポートしていませんが、多くの解決策があります

FFmpeg の公式 Web サイトは http://ffmpeg.mplayerhq.hu/ です。

中国語の Wiki は http://www.ffmpeg.com.cn/ で、多くの情報が含まれています。

㈠FFMEPG のインストール

オペレーティング システム: centos6

FFMEPG のインストールに関する記事はたくさん見つかりましたが、基本的にコメントがないため、多くのソフトウェア パッケージをインストールする必要があります。それが何に使用されるのかの説明がなく、混乱しています。 。また、上記のインストール手順では常に問題が発生し、最終的には公式 Web サイトを探して注意深く確認する必要があります。確かに公式情報は非常に有益です。公式 Web サイトを優先する必要があります。今後の情報。

FFMEPG 自体が flv 形式をサポートしているため、現時点ではプラグインをインストールする必要はなく、FFMEPG のみをインストールする必要があります FFMEPG をインストールするには、次の 2 つの方法があります: ① ソース コード パッケージインストール、なぜいつもエラーが報告されるのかわかりません。 ② 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

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が表示されず、何が起こったのかわかりません。公式サイトに記載されているインストール方法では、ffmpegをサポートするためにPHPを再コンパイルする必要があり、面倒です。すべてのサービスがcentos上で実行されていることを考慮すると、 centos ではすでにそれができるので、

これで、php の exec 関数を使用して liunx のシェル コマンドを呼び出すことができるようになり、FFMPEG-PHP

For をインストールする必要がなくなります。 php の exec 関数については、次を参照してください。 php exec、system、およびその他の関数を使用してシステム コマンドを呼び出す

次は、サムネイルを取得するための一般的なコマンドです:

例 1:

352x240 サイズの画像を jpg 形式でキャプチャします:

ffmpeg -i test.asf -y -f image2 -t 0.001 -s 352x240 a.jpg

例 2:

最初の 30 フレームを変換しますビデオをアニメーション 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 ライセンス

-h Help

-fromats 利用可能な形式、コーデック、プロトコルを表示します

-f fmt は fmt 形式を強制します

-I ファイル名入力ファイル

-y 出力ファイルを上書きします

-t 期間は録音時間を設定します hh 録音:mm:ss[.xxx] 形式の時刻は

-ss 位置にも対応 時刻指定検索の形式 [-]hh:mm:ss[.xxx] も

# に対応## s wxh: ビデオの幅と高さを指定します

##******************************* ********* **************************************** **

例 3: flv 形式のビデオの指定された場所のサムネイルを取得します。.jpg のサムネイルを取得したいので、-f 強制変換の形式は mjpeg であることに注意してください。インターネット上に多くの記事が書かれています。 as ffmpeg -i test.flv -y -f image2 -ss 08.010 -t 0.001 -s 352x240 b.jpg これはエラーのため出力できません。

Ffmpegを使用してflvビデオのサムネイルとビデオの長さを取得する方法

上のスクリーンショットを通して、入力 flv 情報と出力 jpg 画像情報を確認できます。Duration はこの記事に必要なビデオの長さですが、この変数を取得する方法がわかりません。

次のとおりです。 PHP でシェル コマンドを呼び出してサムネイルを取得するためのコード

<?php
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 には、php によるシェル コマンド関数の呼び出しを無効にする disable_functions があります。

disable_functions = proc_open 、popen,exec、system、shell_exec、passthru

解決策: disable_functions をコメントアウトします。この項目

#disable_functions = proc_open、popen、exec、system、shell_exec、passthru

またはdisable_functions = (禁止された関数を削除します)

保存して閉じて有効にするだけです

③exec 関数を呼び出す前に php.ini のセーフ モードをオフにする必要があります

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

** ********************* ************************************************** ****

上記はすべてサムネイルを取得するための解決策です。Android 開発で ffmpeg を使用している人を見かけました。携帯電話でビデオのサムネイルを取得します。Android の最下層が liunx であることを考慮すると、それは普遍的であるべきです!動画の長さを取得する方法です。Duration が必要な動画の長さなのですが、取得方法がわかりません。取得方法を知っている方がいらっしゃいましたら、ご教授ください。

以下は純粋な PHP を使用して取得されたビデオの長さです:

インターネットで検索できます: php で flv ビデオの長さを取得できます

多くの結果が見つかります。と思ったのですが、めくってみたら10ページ以上、tmdがコピーされて再現されていて、全部使えませんでした。このコードは奇妙です。インターネット上でコードを実行できます。エディタでは構文の強調表示が表示されないため、これが PHP ではないことがわかります。方法はありません。コードをオンラインでコピーしましたが、エラーは依然として奇妙であることがわかりました。 。 。報告されたエラーは非常に奇妙です。興味のある方は試してみてください。英語の情報を探すことに決めたわけがありません。最終的には、海外の Web サイトでコードを見つけました。試してみることができます。ははは、やはり外国人の作品でとてもうまく機能します。

間違ったコード:

Ffmpegを使用してflvビデオのサムネイルとビデオの長さを取得する方法

キーワードが強調表示されていません

次は正しいコードです:

<?php

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 << (8 * ($byte_wordlen - 1));
            if ($int_value & $sign_mask_bit) {
                $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);
	$fp = @fopen($name, &#39;rb&#39;);
	$flv_header = fread($fp, 5);
	fseek($fp, 5, SEEK_SET);
    $frame_size_data_length =BigEndian2Int(fread($fp, 4));
	$flv_header_frame_length = 9;
	if ($frame_size_data_length > $flv_header_frame_length) {
	   fseek($fp, $frame_size_data_length - $flv_header_frame_length, SEEK_CUR);
	}
	$duration = 0;
	while ((ftell($fp) + 1) < $flv_data_length) {
		 $this_tag_header     = fread($fp, 16);
		 $data_length         = BigEndian2Int(substr($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的时间格式
	function fn($time){
		$num = $time;
		$sec = intval($num/1000);
		$h = intval($sec/3600);
		$m = intval(($sec%3600)/60);
		$s = intval(($sec%60));
		$tm = $h.&#39;:&#39;.$m.&#39;:&#39;.$s;
		return $tm;
	
	}

		 $t = getTime("22.flv");//显示数字时间如236722 
		echo fn($t);//显示时间格式0:03:56 
		?>
ログイン後にコピー

プレビュー効果:

Ffmpegを使用してflvビデオのサムネイルとビデオの長さを取得する方法

私のビデオはちょうど 55 秒です。 ok

推奨学習: php ビデオ チュートリアル

以上がFfmpegを使用してflvビデオのサムネイルとビデオの長さを取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

GolangとFFmpegを使った動画結合の実践 GolangとFFmpegを使った動画結合の実践 Sep 28, 2023 am 08:37 AM

Golang と FFmpeg を使用したビデオ結合の実践的な紹介: 日常生活では、複数の録画ビデオを完全なビデオ ファイルに結合するなど、複数のビデオ ファイルを 1 つに結合する必要がある状況によく遭遇します。この目標を達成するために、この記事では、Golang ライブラリと FFmpeg ライブラリを使用してビデオ結合プロセスを実装する方法を紹介し、具体的なコード例を示します。 1. Golang と FFmpeg とは何ですか? Golang (Go 言語) は、によって開発されたオープンソースのプログラミング言語です。

Golang と FFmpeg: オーディオのミキシングと分離を実現する方法 Golang と FFmpeg: オーディオのミキシングと分離を実現する方法 Sep 27, 2023 pm 02:24 PM

Golang と FFmpeg: オーディオのミキシングと分離を実装する方法、特定のコード例が必要 要約: オーディオ処理は、多くのマルチメディア アプリケーションの重要な部分です。 Golang では、FFmpeg ライブラリを使用してオーディオのミキシングと分離を実現できます。この記事では、Golang を使用して FFmpeg ライブラリを呼び出してオーディオのミキシングと分離を実現する方法を紹介し、具体的なコード例を示します。この記事を学ぶことで、読者は Golang と FFmpeg を使用してオーディオ処理を実装する方法を学ぶことができます。

Golang と FFmpeg: オーディオ形式の変換と圧縮を実装する方法 Golang と FFmpeg: オーディオ形式の変換と圧縮を実装する方法 Sep 28, 2023 pm 07:13 PM

Golang と FFmpeg: オーディオ形式の変換と圧縮を実装する方法、具体的なコード例が必要です はじめに: オーディオ ファイルの処理では、オーディオ形式の変換やオーディオ ファイル サイズの圧縮が必要になる場合があります。強力なプログラミング言語である Golang を、一般的なオーディオおよびビデオ処理ツールである FFmpeg と組み合わせることで、高速かつ効率的なオーディオ形式の変換と圧縮を実現できます。この記事では、Golang と FFmpeg を使用してオーディオ形式の変換と圧縮を実現する方法と、具体的なコード例を紹介します。

Golang と FFmpeg: オーディオの合成とセグメンテーションを実装する方法 Golang と FFmpeg: オーディオの合成とセグメンテーションを実装する方法 Sep 27, 2023 pm 10:52 PM

Golang と FFmpeg: オーディオ合成とセグメンテーションを実装する方法、特定のコード サンプルが必要です 概要: この記事では、Golang と FFmpeg ライブラリを使用してオーディオ合成とセグメンテーションを実装する方法を紹介します。読者の理解を深めるために、いくつかの具体的なコード例を使用します。はじめに: オーディオ処理技術の継続的な開発により、オーディオの合成とセグメンテーションは日常生活や仕事における一般的な機能要件になりました。高速かつ効率的で、作成と保守が簡単なプログラミング言語である Golang と FFmpeg の組み合わせ

Golang と FFmpeg: リアルタイムのビデオ ストリーム分析と認識のためのテクノロジー Golang と FFmpeg: リアルタイムのビデオ ストリーム分析と認識のためのテクノロジー Sep 27, 2023 pm 02:31 PM

Golang と FFmpeg: リアルタイムのビデオ ストリーム分析と認識を実装するテクノロジ (特定のコード サンプルが必要) はじめに: 今日のデジタルとインテリジェントの時代では、ビデオ テクノロジの使用がますます増えています。その中でも、リアルタイムビデオストリームの分析と認識は、セキュリティ監視、インテリジェント交通、顔認識などの分野で重要な役割を果たしています。この記事では、Golang と FFmpeg を組み合わせた技術を使用してリアルタイム ビデオ ストリームの分析と識別を実現する方法と、具体的なコード例を紹介します。 1. Golang の概要 Golang は

Golang と FFmpeg を使用してビデオのちらつきを除去する実践 Golang と FFmpeg を使用してビデオのちらつきを除去する実践 Sep 27, 2023 pm 04:46 PM

Golang と FFmpeg を使用してビデオのちらつきを解消する実践的な概要: ビデオのちらつきは、ビデオ処理でよく遭遇する課題です。録画した映像のフレームレートと点灯周波数が一致していない場合、映像がちらつく場合があります。この記事では、Golang ライブラリと FFmpeg ライブラリを使用してビデオのちらつきを除去する方法を紹介し、具体的なコード例を示します。手順: FFmpeg ライブラリをインストールする: まず、Golang 開発環境に FFmpeg ライブラリをインストールする必要があります。通過できる

PHP FFmpeg 拡張機能をサーバーにインストールするにはどうすればよいですか? PHP FFmpeg 拡張機能をサーバーにインストールするにはどうすればよいですか? Mar 28, 2024 pm 02:39 PM

PHPFFmpeg拡張機能をサーバーにインストールするにはどうすればよいですか? PHPFFmpeg 拡張機能をサーバーにインストールすると、PHP プロジェクトでオーディオ ファイルとビデオ ファイルを処理し、オーディオ ファイルとビデオ ファイルのエンコード、デコード、編集、処理などの機能を実装できます。この記事では、PHPFFmpeg 拡張機能をサーバーにインストールする方法と、具体的なコード例を紹介します。まず、PHP と FFmpeg がサーバーにインストールされていることを確認する必要があります。 FFmpeg がインストールされていない場合は、以下の手順に従って FFmpe をインストールできます。

PHP FFmpeg 拡張機能のインストール ガイド: わかりやすいチュートリアル PHP FFmpeg 拡張機能のインストール ガイド: わかりやすいチュートリアル Mar 28, 2024 pm 02:17 PM

PHPFFmpeg 拡張機能インストールガイド: シンプルでわかりやすいチュートリアル Web サイト開発のプロセスでは、オーディオ、ビデオなどのさまざまなマルチメディア ファイルを処理する必要がある場合があります。 FFmpeg は、オーディオ、ビデオ、その他の形式を処理できる強力なマルチメディア処理ツールで、さまざまなトランスコーディング、カット、その他の操作をサポートします。 PHPFFmpeg 拡張機能は、PHP の FFmpeg 関数を呼び出す拡張ライブラリで、マルチメディア ファイルを簡単に処理するために使用できます。以下ではPHPFについて詳しく紹介していきます

See all articles