转载: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播放器控制的更多相关文章

  1. 【转】C# 视频监控系列(13):H264播放器——控制播放和截图

    本文原文地址:http://www.cnblogs.com/over140/archive/2009/03/30/1421531.html 阿里云栖社区也有相关的视频开发案例:https://yq.a ...

  2. 最简单的基于FFmpeg的移动端样例附件:Android 自带播放器

    ===================================================== 最简单的基于FFmpeg的移动端样例系列文章列表: 最简单的基于FFmpeg的移动端样例:A ...

  3. <Win32_17>集音频和视频播放功能于一身的简易播放器

    前段时间,在学习中科院杨老师的教学视频时,他说了一句话: "我很反对百八十行的教学程序,要来就来一个完整的程序" 对此,我很是赞同.所谓真刀真枪的做了,你才会发现其中的奥秘——然而 ...

  4. 搭建rtmp直播流服务之4:videojs和ckPlayer开源播放器二次开发(播放rtmp、hls直播流及普通视频)

    前面几章讲解了使用 nginx-rtmp搭建直播流媒体服务器; ffmpeg推流到nginx-rtmp服务器; java通过命令行调用ffmpeg实现推流服务; 从数据源获取,到使用ffmpeg推流, ...

  5. Swift - 使用Media Player播放本地视频,在线视频

    Media Player框架用于播放本地视频.音频,也可以在线播放视频和音频. 1,播放器MPMovieControlStyle样式有如下几种: (1)None: 没有播放控制控件 (2)Embedd ...

  6. 【转】C# 视频监控系列(12):H264播放器——播放录像文件

    原文地址:http://www.cnblogs.com/over140/archive/2009/03/23/1419643.html?spm=5176.100239.blogcont51182.16 ...

  7. ffmpeg播放器实现详解 - 视频显示

    ffplay是ffmpeg源码中一个自带的开源播放器实例,同时支持本地视频文件的播放以及在线流媒体播放,功能非常强大. FFplay: FFplay is a very simple and port ...

  8. ffmpeg播放器实现详解 - 框架搭建

    ffplay是ffmpeg源码中一个自带的开源播放器实例,同时支持本地视频文件的播放以及在线流媒体播放,功能非常强大. FFplay: FFplay is a very simple and port ...

  9. FFmpeg入门,简单播放器

    一个偶然的机缘,好像要做直播相关的项目 为了筹备,前期做一些只是储备,于是开始学习ffmpeg 这是学习的第一课 做一个简单的播放器,播放视频画面帧 思路是,将视频文件解码,得到帧,然后使用定时器,1 ...

随机推荐

  1. 面试题13:在O(1)时间删除链表节点

    注意分情况讨论: 1. 要删除的不是尾节点 2. 链表只有一个节点 3. 链表中有多个节点,删除尾节点 void DeleteNode(ListNode** pListHead, ListNode* ...

  2. 《构建高性能 Web站点》笔记

    书名:构建高性能Web站点 出版社: 电子工业出版社 ISBN:9787121170935 一  绪论 等待的时间: (1) 数据在网络上的传输时间 (2) 站点服务器处理请求并生成回应数据的时间 ( ...

  3. import xxx from 和 import {xxx} from的区别

    1.vue import FunName from ‘../xxx’ 1.js export defualt function FunName() { return fetch({ url: '/ar ...

  4. ie6 css 返回顶部图标固定在浏览器右下角

    比较常用记录一下. #e_float{ _position:absolute; _bottom:auto; _right:50%; _margin-right:-536px; _top:express ...

  5. 洛谷P1503 鬼子进村 [平衡树,STL]

    题目传送门 鬼子进村 题目背景 小卡正在新家的客厅中看电视.电视里正在播放放了千八百次依旧重播的<亮剑>,剧中李云龙带领的独立团在一个县城遇到了一个鬼子小队,于是独立团与鬼子展开游击战. ...

  6. Python并发编程-多进程进程锁

    from multiprocessing import Process import json import time from multiprocessing import Lock def sho ...

  7. 首次使用ideal构建maven项目web

    如附件 链接:https://pan.baidu.com/s/1oH-9VfIKnLPjVt-tOH7fZw 提取码:7s5t

  8. 【BZOJ 3106】 3106: [cqoi2013]棋盘游戏 (对抗搜索)

    3106: [cqoi2013]棋盘游戏 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 544  Solved: 233 Description 一个 ...

  9. PowerBuilder连接数据库

    什么是PowerBuilder(后面简称PB)? 这是个奇怪的问题,说实话,在这次毕业设计之前,我也不知道什么是PowerBulider(当然,不排除我见识短浅).百度百科是这样解释的:"P ...

  10. 前缀和:CodeForces 932B Recursive Queries

    Description Let us define two functions f and g on positive integer numbers. You need to process Q q ...