php flv瑙嗛鏃堕棿鑾峰彇鍑芥暟_PHP鏁欑▼ | 甯涔嬪

php教程评论159 views阅读模式

澶嶅埗浠g爜 浠g爜濡備笅:

銆€銆€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, 'rb');

銆€銆€$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;

銆€銆€}

銆€銆€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;

銆€銆€}

銆€銆€echo getTime("27729.flv");//鏄剧ず鏁板瓧鏃堕棿濡?36722

銆€銆€echo fn(236722); //鏄剧ず鏃堕棿鏍煎紡0:03:56

銆€銆€?>

企鹅博客
  • 本文由 发表于 2020年8月14日 21:34:45
  • 转载请务必保留本文链接:https://www.qieseo.com/312063.html

发表评论