FFmpeg的使用——PHP转换视频、截取视频以及JW Player播放器控制
转载:http://blog.csdn.net/zm2714/article/details/7916440
给朋友做的一个项目中,涉及到上传视频、转换视频、自动截取已上传视频内容中的一帧做为缩略图片。本篇记录在完成这篇项目过程中的所掌握的一些知识以及经验教训。
上传视频这块暂时不说了,在项目中关于上传这一块涉及进度条的问题,总觉得的不够完美。虽然目前已解决这一块内容,但上传大文件来说,在某些方面仍不够100%的符合要求。有时间在整理这一块。在这篇文章中,由于是在整理这个项目内容,所以有关上传方面就一带而过。
自动转换已上传的视频
在这个项目中,一开始我是将判断进度这一块放在服务器端,理想状态是上传时显示上传进度,上传成功后,进度条内容改为:正在转换视频,请稍后...。但有时候进度条没有到达100%时就在某一值上卡住,直到转换视频成功为止。所以,我将判断进度这一块放到本地的js中处理。总之,视频上传成功后,开始转换视频。
转换视频部分代码
$id=CheckNum(GetForm("id"),0,-1);
$file=GetForm("file");
$ext=GetForm("ext");
if($id>0){
$path=$_moqian_video_path.$id;
}else{
$path=$_moqian_video_path.$_SESSION['MM']['sid'];
}
$path=rtnRealPath($path);//返回绝对路径,如D:/wwwroot/test/upload/...../
if($ext!='flv'){
exec('..\cmd\ffmpeg.exe -i '.$path.$file.'.'.$ext.' -ab 56 -ar 22050 -b 500 -r 15 -s 650*480 '.$path.$file.'.flv',$out,$status);
unlink($path.$file.'.'.$ext);//删除原文件
if($status==0){
echo "success";
}else{
echo "0";//失败
}
}else{
echo 'success';
}
转换视频的命令
exec('..\cmd\ffmpeg.exe -i '.$path.$file.'.'.$ext.' -ab 56 -ar 22050 -b 500 -r 15 -s 650*480 '.$path.$file.'.flv',$out,$status);
$status是执行的结果状态。值为0表示转换成功,否则转换失败。
ffmpeg.exe转换视频的参数命令请百度。
这里有几个问题得说一下
1、网上有很多版本的ffmpeg.exe,经过测试,好多都不能使用。我这里提供我正在使用的ffmpeg.exe及相关文件下载。
2、ffmpeg转换视频参数的注意事项
//经过多次测试发现
$a='../aaa/ffmpeg.exe';//这种方式错误!不能用“/”
$a='D:\wwwroot\dingji\flv\ffmpeg.exe';//这种方式错误!不能用“绝对的物理路径”
$a='\api\ffmpeg.exe';//错误 不能以\开头
对于ffmpeg.exe文件的调用不能用上述路径,正确用法如下:
$a='aaa\ffmpeg.exe';//成功(当前目录的下级目录)
$a='..\api\ffmpeg.exe';//成功(当前目录的上级目录或其它目录)
$b='D:\wwwroot\dingji\flv\1.flv';//绝对路径
$cmd=$a.' -i ../api/a.avi -ab 56 -ar 22050 -b 500 -r 15 -s 320x240../1f.flv';
exec($cmd);
上面蓝色部分可以用绝对路径,也可以用相对路径。在windows上测试“正斜线”和“反斜线”都可以。
未完待续...
FFmpeg的使用——PHP转换视频、截取视频以及JW Player播放器控制的更多相关文章
- 【转】C# 视频监控系列(13):H264播放器——控制播放和截图
本文原文地址:http://www.cnblogs.com/over140/archive/2009/03/30/1421531.html 阿里云栖社区也有相关的视频开发案例:https://yq.a ...
- 最简单的基于FFmpeg的移动端样例附件:Android 自带播放器
===================================================== 最简单的基于FFmpeg的移动端样例系列文章列表: 最简单的基于FFmpeg的移动端样例:A ...
- <Win32_17>集音频和视频播放功能于一身的简易播放器
前段时间,在学习中科院杨老师的教学视频时,他说了一句话: "我很反对百八十行的教学程序,要来就来一个完整的程序" 对此,我很是赞同.所谓真刀真枪的做了,你才会发现其中的奥秘——然而 ...
- 搭建rtmp直播流服务之4:videojs和ckPlayer开源播放器二次开发(播放rtmp、hls直播流及普通视频)
前面几章讲解了使用 nginx-rtmp搭建直播流媒体服务器; ffmpeg推流到nginx-rtmp服务器; java通过命令行调用ffmpeg实现推流服务; 从数据源获取,到使用ffmpeg推流, ...
- Swift - 使用Media Player播放本地视频,在线视频
Media Player框架用于播放本地视频.音频,也可以在线播放视频和音频. 1,播放器MPMovieControlStyle样式有如下几种: (1)None: 没有播放控制控件 (2)Embedd ...
- 【转】C# 视频监控系列(12):H264播放器——播放录像文件
原文地址:http://www.cnblogs.com/over140/archive/2009/03/23/1419643.html?spm=5176.100239.blogcont51182.16 ...
- ffmpeg播放器实现详解 - 视频显示
ffplay是ffmpeg源码中一个自带的开源播放器实例,同时支持本地视频文件的播放以及在线流媒体播放,功能非常强大. FFplay: FFplay is a very simple and port ...
- ffmpeg播放器实现详解 - 框架搭建
ffplay是ffmpeg源码中一个自带的开源播放器实例,同时支持本地视频文件的播放以及在线流媒体播放,功能非常强大. FFplay: FFplay is a very simple and port ...
- FFmpeg入门,简单播放器
一个偶然的机缘,好像要做直播相关的项目 为了筹备,前期做一些只是储备,于是开始学习ffmpeg 这是学习的第一课 做一个简单的播放器,播放视频画面帧 思路是,将视频文件解码,得到帧,然后使用定时器,1 ...
随机推荐
- <node.js爬虫>制作教程
前言:最近想学习node.js,突然在网上看到基于node的爬虫制作教程,所以简单学习了一下,把这篇文章分享给同样初学node.js的朋友. 目标:爬取 http://tweixin.yueyishu ...
- poj2253 Frogger(Floyd)
题目链接 http://poj.org/problem?id=2253 题意 给出青蛙A,B和若干石头的坐标,现在青蛙A要跳到青蛙B所在的石头上,求出所有路径中最远那一跳的最小值. 思路 Floyd算 ...
- Java利用Redis实现消息队列
应用场景 为什么要用redis?二进制存储.java序列化传输.IO连接数高.连接频繁 一.序列化 这里编写了一个java序列化的工具,主要是将对象转化为byte数组,和根据byte数组反序列化成ja ...
- 洛谷P3201 [HNOI2009]梦幻布丁 [链表,启发式合并]
题目传送门 梦幻布丁 题目描述 N个布丁摆成一行,进行M次操作.每次将某个颜色的布丁全部变成另一种颜色的,然后再询问当前一共有多少段颜色.例如颜色分别为1,2,2,1的四个布丁一共有3段颜色. 输入输 ...
- cogs——2478. [HZOI 2016]简单的最近公共祖先
2478. [HZOI 2016]简单的最近公共祖先 ★☆ 输入文件:easy_LCA.in 输出文件:easy_LCA.out 简单对比时间限制:2 s 内存限制:128 MB [题 ...
- 应用服务攻击工具clusterd
应用服务攻击工具clusterd clusterd是一款Python语言编写的开源应用服务攻击工具.该工具支持七种不同的应用服务平台,如JBoss.ColdFusion.WebLogic.Tomc ...
- Python操作Mongo数据库
连接数据库 import pymongo # 连接到数据库,以下两种方式均可 client = pymongo.MongoClient(host='localhost', port=27017) cl ...
- 【BZOJ 2555】 2555: SubString (SAM+LCT)
2555: SubString Time Limit: 30 Sec Memory Limit: 512 MBSubmit: 2548 Solved: 762 Description 懒得写背景了 ...
- 【UOJ #112】【APIO 2015】Palembang Bridges
http://uoj.ac/problem/112 先扣掉在同一侧的情况. 当\(k=1\)时,桥建在所有位置的中位数. 当\(k=2\)时,对于每个居民\((S_i,T_i)\),这个居民只会走离\ ...
- [BZOJ4009][HNOI2015]接水果(整体二分)
[HNOI2015]接水果 时间限制:60s 空间限制:512MB 题目描述 风见幽香非常喜欢玩一个叫做 osu!的游戏,其中她最喜欢玩的模式就是接水果. 由于她已经DT FC 了The b ...