视频转码示例
该 demo 的主要目的是为了学习如何使用 ffmpeg 实现视频转码。
视频转码程序 transcode.php 文件具备以下功能:
获取视频信息;
提取字幕;
将视频转码成不同清晰度的 MP4 文件(视频编码 H.264,音频编码 AAC);
提高视频音量;
转换成 HLS 格式即 M3U8 + TS 的播放列表;
生成缩略图和预览图;
生成剧照;
项目结构
.
├── movie
│ ├── 0
│ │ ├── example.mp4 # 测试视频1
│ │ ├── hls # m3u8 和 ts 的存放目录
│ │ ├── image_group # 预览图
│ │ ├── mp4 # 不同清晰度的 mp4 文件
│ │ ├── stage_photo # 剧照
│ │ ├── subtitle # 字幕
│ │ └── thumb.jpg # 缩略图
│ └── 1
│ ├── example.mp4 # 测试视频2
│ ├── hls
│ ├── image_group
│ ├── mp4
│ ├── stage_photo
│ ├── subtitle
│ └── thumb.jpg
├── movie_info_example.json # 获取视频信息的输出示例
├── movie_info.php # 获取视频信息脚本
├── README.md
├── transcode0.log # 测试视频0的执行日志
├── transcode1.log # 测试视频1的执行日志
└── transcode.php # 视频转码脚本
项目依赖
PHP 5+
注:本项目测试时使用的 ffmpeg 是 2.8.15 版本。
ffmpeg 在 Ubuntu 的安装方法:
sudo apt-get install ffmpeg
转码步骤说明
1. 获取视频信息
ffprobe -v quiet -print_format json -show_streams -show_format /www/web/ffmpeg-demo/movie/0/example.mp4
参数说明:
print_format:输出格式,这里设置为 json 输出;
show_streams:显示 streams 信息;
sh