找回密码
 立即注册
搜索
查看: 300|回复: 0

[面向对象] php ts文件转MP4,再转DASH清单文件(.mpd)

[复制链接]

581

主题

110

回帖

4066

积分

管理员

积分
4066

众神之神

发表于 2024-10-14 09:40:22 | 显示全部楼层 |阅读模式
西瓜demo:
https://h5player.bytedance.com/examples/

ts文件转MP4:FFmpeg官方网站:https://ffmpeg.org/download.html

  1. 3. 在Windows上安装FFmpeg
  2. 1. 下载FFmpeg:
  3. 访问FFmpeg官方网站,下载Windows版本的FFmpeg。
  4. 2. 解压缩:
  5. 将下载的压缩包解压到您选择的目录(例如C:\ffmpeg)。
  6. 3. 配置环境变量:
  7. 将FFmpeg的bin目录添加到系统的环境变量中:
  8. 右键点击“此电脑”或“计算机”,选择“属性”。
  9. 点击“高级系统设置”,然后点击“环境变量”。
  10. 在“系统变量”中找到Path变量,选择并点击“编辑”。
  11. 添加FFmpeg的bin目录路径(例如C:\ffmpeg\bin),然后点击“确定”。
  12. 4. 验证安装:
  13. 打开命令提示符,输入以下命令检查FFmpeg是否安装成功:
复制代码
在PHP中使用FFmpeg
  1. <?php
  2. $inputFile = 'input.mp4';
  3. $outputFile = 'output.mp4';
  4. $command = "ffmpeg -i $inputFile -c:v libx264 -preset fast -crf 22 $outputFile";
  5. exec($command, $output, $return_var);

  6. if ($return_var === 0) {
  7.     echo "转换成功!";
  8. } else {
  9.     echo "转换失败!";
  10. }
  11. ?>
复制代码
怎么判断当前php环境是否已安装FFmpeg

  1. <?php
  2. // 检查FFmpeg是否安装
  3. $command = 'ffmpeg -version';
  4. exec($command, $output, $return_var);

  5. if ($return_var === 0) {
  6.     echo "FFmpeg已安装。版本信息:<br>";
  7.     echo implode("<br>", $output); // 输出FFmpeg版本信息
  8. } else {
  9.     echo "FFmpeg未安装。";
  10. }
  11. ?>
复制代码
MP4,再转DASH清单文件(.mpd)

  1. 在 Windows 上安装 MP4Box(GPAC)并在 PHP 集成环境中使用的步骤如下:
  2. 步骤 1: 下载 GPAC
  3. 1. 访问 GPAC 官方网站:
  4. 前往 GPAC 下载页面。
  5. 2. 选择 Windows 版本:
  6. 找到适合 Windows 的版本,通常是一个压缩文件(如 gpac-xxx-win64.zip 或 gpac-xxx-win32.zip)。
  7. 3. 下载并解压缩:
  8. 下载后,将压缩文件解压到您选择的目录,例如 C:\gpac。
  9. 步骤 2: 配置环境变量
  10. 1. 打开系统环境变量设置:
  11. 右键点击“此电脑”或“计算机”,选择“属性”。
  12. 点击“高级系统设置”,然后点击“环境变量”。
  13. 2. 编辑 Path 变量:
  14. 在“系统变量”部分,找到 Path 变量,选择并点击“编辑”。
  15. 点击“新建”,然后添加 MP4Box 的 bin 目录路径(例如 C:\gpac\bin)。
  16. 3. 保存设置:
  17. 点击“确定”保存更改,关闭所有对话框。
  18. 步骤 3: 验证 MP4Box 安装
  19. 1. 打开命令提示符:
  20. 按下 Win + R,输入 cmd,然后按回车。
  21. 2. 检查 MP4Box 版本:
  22. 在命令提示符中输入以下命令:
复制代码
步骤 4: 在 PHP 中使用 MP4Box

  1. <?php
  2. $inputFile = 'path/to/your/video.mp4'; // 替换为您的 MP4 文件路径
  3. $manifestFile = 'manifest.mpd'; // 输出的 DASH 清单文件

  4. // 使用 MP4Box 生成 DASH 清单文件
  5. $mp4boxCommand = "MP4Box -dash 4000 -rap -profile live -out $manifestFile $inputFile";
  6. exec($mp4boxCommand, $output, $returnVar);

  7. // 检查 MP4Box 生成清单文件是否成功
  8. if ($returnVar !== 0) {
  9.     echo "MP4Box 生成清单文件失败:<br>";
  10.     echo implode("<br>", $output); // 输出错误信息
  11.     exit;
  12. }

  13. // 成功生成清单文件
  14. echo "成功生成 DASH 清单文件:$manifestFile";
  15. ?>
复制代码
HTML西瓜运行mpd
  1. <!DOCTYPE html>
  2. <html>
  3.   <head>
  4.     <meta charset="utf-8">
  5.     <meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no,minimal-ui">
  6.     <meta name="referrer" content="no-referrer">
  7.     <title>播放器</title>
  8.     <style type="text/css">
  9.       html, body {width:100%;height:100%;margin:auto;overflow: hidden;}
  10.       body {display:flex;}
  11.       #mse {flex:auto;}
  12.     </style>
  13.     <script type="text/javascript">
  14.       window.addEventListener('resize',function(){document.getElementById('mse').style.height=window.innerHeight+'px';});
  15.     </script>
  16.   </head>
  17.   <body>
  18.     <div id="mse"></div>
  19.     <script src="//unpkg.byted-static.com/xgplayer/2.31.2/browser/index.js" charset="utf-8"></script>
  20.     <script src="//unpkg.byted-static.com/xgplayer-shaka/1.1.5/browser/index.js" charset="utf-8"></script>
  21.     <script type="text/javascript">
  22.       new window.ShakaJsPlayer({
  23.         id: 'mse',
  24.         url: 'manifest.mpd',
  25.         ignores: ['error'],
  26.         playsinline: true,
  27.         height: window.innerHeight,
  28.         width: window.innerWidth
  29.       });
  30.     </script>
  31.   </body>
  32. </html>
复制代码


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|十三博客 ( 鲁ICP备2023000528号 )

GMT+8, 2026-6-1 17:27 , Processed in 0.154458 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表