哪位兄弟能帮忙注解一下这段程序?该怎么处理
哪位兄弟能帮忙注解一下这段程序?
功能是取得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})

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











[SpringBoot] Feign 호출을 통해 헤더에 매개변수 전달 Feign을 통해 헤더 매개변수를 전달하는 방법 문제 설명 Feign을 사용하여 Spring Cloud에서 다른 서비스의 API 인터페이스를 요청할 때 헤더에 매개변수를 전달해야 합니다. 특수 처리가 완료되면 헤더의 매개변수가 손실됩니다. 해결 방법 1: @RequestHeader(name="headerName")을 통해 전달합니다. 예: Feign은 @FeignClient(name="service-name")pub와 같이 정의됩니다.

Linux 헤더는 콘텐츠에 대한 메타데이터를 포함하는 데 사용되는 파일 또는 데이터 스트림의 시작을 의미합니다. 헤더 파일을 올바르게 작성하고 사용함으로써 개발자는 시스템 리소스를 더 잘 활용하고 코드 가독성과 유지 관리성을 향상시킬 수 있습니다.

PHP 헤더에서 점프를 구현하는 방법: 1. "Header("Location:$url");" 구문을 사용하여 점프를 구현합니다. 2. "if($_COOKIE[" u_type)과 같은 점프 문을 사용하여 점프를 구현합니다. "]){ 헤더('location:register.php'); } else{ setcookie('u_type','1','86400*360');".

PHP는 동적 웹사이트와 웹 애플리케이션을 만드는 데 사용할 수 있는 강력한 프로그래밍 언어입니다. 가장 강력한 기능 중 하나는 PHP의 header() 메소드입니다. 이 기사에서는 PHP의 header() 메서드를 사용하여 웹 페이지를 조정하는 방법을 살펴보겠습니다.

Golang 프로그래밍에서 바이트, 룬 및 문자열 유형은 매우 기본적이고 일반적인 데이터 유형입니다. 문자열 및 파일 스트림과 같은 데이터 작업을 처리하는 데 중요한 역할을 합니다. 이러한 데이터 작업을 수행할 때 일반적으로 서로 변환해야 하며, 이를 위해서는 일부 변환 기술을 숙달해야 합니다. 이 기사에서는 독자가 이러한 데이터 유형을 더 잘 이해하고 프로그래밍 실습에 능숙하게 적용할 수 있도록 돕기 위해 Golang 함수의 바이트, 룬 및 문자열 유형 변환 기술을 소개합니다.

문자열의 길이를 얻으려면 Java의 String.length() 함수를 사용하십시오. Java 프로그래밍에서 문자열은 문자열의 길이, 즉 문자열의 문자 수를 가져와야 하는 경우가 많습니다. Java에서는 String 클래스의 length() 함수를 사용하여 문자열의 길이를 얻을 수 있습니다. 다음은 간단한 예제 코드입니다: publicclassStringLengthExample{publ

1바이트는 8비트와 같습니다. 데이터 저장은 "바이트"(Byte) 단위로 이루어지며, 데이터 전송은 대부분 "비트"(bit) 단위로 이루어지며, 1비트는 0 또는 1(즉, 바이너리)을 나타내며, 8비트(bit)마다 ) Byte는 정보의 가장 작은 단위이므로 "1Byte=8bit"입니다.

차이점: 1. head 태그는 모든 head 요소의 컨테이너인 문서의 헤드를 정의하는 데 사용되며, header 태그는 문서의 헤더(소개 정보)를 정의하는 데 사용됩니다. head 태그 및 이전 버전의 브라우저 헤더 태그를 지원하는 브라우저는 없으며, 헤더 태그를 지원하려면 IE9+ 이상의 브라우저가 필요합니다.
