ホームページ バックエンド開発 PHPチュートリアル 哪位兄弟能帮忙注解一下这段程序?该怎么处理

哪位兄弟能帮忙注解一下这段程序?该怎么处理

Jun 13, 2016 am 10:13 AM
byte data header length

哪位兄弟能帮忙注解一下这段程序?
功能是取得flv视频的时间,是网上找的,但是很多地方不明白。。。

PHP code
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->function BigEndian2Int($byte_word, $signed = false) {         $int_value = 0;        $byte_wordlen = strlen($byte_word);                for ($i = 0; $i  $flv_header_frame_length) {       fseek($fp, $frame_size_data_length - $flv_header_frame_length, SEEK_CUR);    }    $duration = 0;    while ((ftell($fp) + 1)  $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.':'.$m.':'.$s;        return $tm;         } $t = getTime("/tmp/907701336.flv");//显示数字时间如236722 echo fn($t);//显示时间格式0:03:56
ログイン後にコピー


对 BigEndian2Int这个函数看不懂,以及getTimes里面的一些数字 有什么意思?

------解决方案--------------------
根据 FLV 文件格式的规定
FLV包括文件头(File Header)和文件体(File Body)两部分,其中文件体由一系列的Tag及Tag Size对组成。Tag包括Tag Header和Tag Data两部分。
Tag Header 的 
第5-7字节为UI24类型的值,表示该Tag的时间戳(单位为ms)
第8个字节为时间戳的扩展字节,当24位数值不够时,该字节作为最高位将时间戳扩展为32位值

只要将这一系列的时间戳加起来就得到了整个播放时间

UI24类型 占 3 个字节,高位在前
所以程序中有 
$int_value += ord($byte_word{$i}) * pow(256, ($byte_wordlen - 1 - $i));
这个写法很烂,还用到了 pow
你也可以修改他,基础算式
令传入串 $s,有 ( ord($s{0}) * 256 + ord($s{1}) ) * 256 + ord($s{2})
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

SpringBoot はどのように Feign 呼び出しを通じてヘッダー内のパラメーターを渡しますか? SpringBoot はどのように Feign 呼び出しを通じてヘッダー内のパラメーターを渡しますか? May 16, 2023 pm 08:38 PM

[SpringBoot] Feign 呼び出しを介してヘッダーのパラメーターを渡す Feign を介してヘッダー パラメーターを渡す方法 問題の説明 Feign を使用して Spring Cloud の別のサービスの API インターフェイスをリクエストする場合、ヘッダーでパラメーターを渡す必要があります。特別な処理が行われると、ヘッダー内のパラメータが失われます。解決策 1: @RequestHeader(name="headerName") を介して渡します。例: Feign は次のように定義されます @FeignClient(name="service-name")pub

Linuxヘッダーとはどういう意味ですか? Linuxヘッダーとはどういう意味ですか? Jul 18, 2023 pm 03:34 PM

Linux ヘッダーは、コンテンツに関するメタデータを含めるために使用されるファイルまたはデータ ストリームの先頭を指します。ヘッダー ファイルを正しく記述して使用することで、開発者はシステム リソースをより有効に活用し、コードの可読性と保守性を向上させることができます。

PHPヘッダーにジャンプする方法 PHPヘッダーにジャンプする方法 Dec 02, 2022 am 09:14 AM

PHP ヘッダーでジャンプを実装する方法: 1. "Header("Location:$url");" 構文を使用してジャンプを実装します。 2. "if($_COOKIE[" u_type のようなジャンプ ステートメントを使用して、if 判定を使用してジャンプを実装します) "]){ header('location:register.php'); } else{ setcookie('u_type','1','86400*360');"。

PHP header() メソッドを使用して Web ページを調整する方法 PHP header() メソッドを使用して Web ページを調整する方法 Mar 28, 2023 pm 01:54 PM

PHP は、動的な Web サイトや Web アプリケーションの作成に使用できる強力なプログラミング言語です。最も強力な機能の 1 つは、PHP の header() メソッドです。この記事では、PHP の header() メソッドを使用して Web ページを調整する方法を説明します。

Golang関数のバイト、ルーン、文字列型変換スキル Golang関数のバイト、ルーン、文字列型変換スキル May 17, 2023 am 08:21 AM

Golang プログラミングでは、バイト、ルーン、文字列型は非常に基本的で一般的なデータ型です。これらは、文字列やファイル ストリームなどのデータ操作の処理において重要な役割を果たします。これらのデータ操作を実行するときは、通常、データを相互に変換する必要があるため、変換スキルを習得する必要があります。この記事では、読者がこれらのデータ型をより深く理解し、プログラミングの実践に上手に適用できるようにすることを目的として、Golang 関数のバイト、ルーン、および文字列の型変換テクニックを紹介します。

JavaのString.length()関数を使用して文字列の長さを取得します。 JavaのString.length()関数を使用して文字列の長さを取得します。 Jul 25, 2023 am 09:09 AM

文字列の長さを取得するには、Java の String.length() 関数を使用します。Java プログラミングでは、文字列は非常に一般的なデータ型です。多くの場合、文字列の長さ、つまり文字列内の文字数を取得する必要があります。 Java では、String クラスの length() 関数を使用して文字列の長さを取得できます。簡単なコード例を次に示します。 publicclassStringLengthExample{publ

1バイトは何ビットに相当します 1バイトは何ビットに相当します Mar 19, 2021 pm 02:52 PM

1バイトは8ビットに相当します。データの保存は「バイト」(Byte)単位で行われ、データ送信は主に「ビット」(ビット)単位で行われ、1ビットが0か1(つまり2進数)を表し、8ビット(ビット)ごとに0または1を表します。 ) バイトは情報の最小単位であるため、「1Byte=8bit」となります。

html5タグのヘッドとヘッダーの違いは何ですか? html5タグのヘッドとヘッダーの違いは何ですか? Jan 17, 2022 am 11:10 AM

相違点: 1. head タグは、すべての head 要素のコンテナであるドキュメントの先頭を定義するために使用され、header タグはドキュメントのヘッダー (紹介情報) を定義するために使用されます; 2. すべてのブラウザは、 head タグと古いバージョンのブラウザ どのブラウザも header タグをサポートしていません。header タグをサポートするには、IE9 以降などのブラウザが必要です。

See all articles