• 使用FFMPeg对视频进行处理


    FFMPeg处理视频的核心操作方式是命令,无论是在Windows上还是Linux上。那么下边就简单介绍下,常见的处理命令。

    示例1:
    截取一张352×240尺寸大小的,格式为jpg的图片:

    ffmpeg -i test.asf -y -f image2 -t 0.001 -s 352×240 a.jpg

    示例2:
    把视频的前30帧转换成一个Animated Gif :

    ffmpeg -i test.asf -vframes 30 -y -f gif a.gif

    示例3:这个是我需要的!
    在视频的第8.01秒处截取 320*240 的缩略图

    ffmpeg -i test.flv -y -f mjpeg -ss 3 -t 0.001 -s 320×240 test.jpg

    示例4:

    把视频转换成flv文件(这个用得最多,现在Flv基本上已经成了网络视频的标准了)

    ffmpeg -i source -s 320×240 -b 700k -aspect 4:3 -y -f flv dest.flv 。

    其中:
    source:是原始文件的名字,可以是mov,mpeg,avi,wmv各类格式,ffmpeg基本都支持。
    -s wxh: 指定视频的宽和高
    -b : 设定视频的比特率
    -aspect: 保持视频的比率。如4:3或者16:9
    -y : 如果目标文件存在时,直接覆盖原有的目标文件。
    -f : 指定转换的文件格式,这里是flv格式。(其实如果不指定文件格式,ffmpeg也会按文件的后缀名来进行转换)。
    dest: 转换的目标文件名字,并不一定需要是flv,可以是mov,mpeg以及其他的常用格式。
    参数说明:

    -L license

    -h 帮助

    -fromats 显示可用的格式,编解码的,协议的

    -f fmt 强迫采用格式fmt

    -I filename 输入文件

    -y 覆盖输出文件

    -t duration 设置纪录时间 hh:mm:ss[.xxx]格式的记录时间也支持

    -ss position 搜索到指定的时间 [-]hh:mm:ss[.xxx]的格式也支持

    s wxh: 指定视频的宽和高

    ****************************************************************************

    示例3:是针对flv格式的视频获得指定处的缩略图,记住 -f强制转换的格式是mjpeg因为我要获得.jpg的缩略图,网上有很多写成文章都是写成ffmpeg -i test.flv -y -f image2 -ss 08.010 -t 0.001 -s 352×240 b.jpg 这个是错误,不可能输出.

    下面是PHP调用shell命令获得缩略图的代码

    1. <!--?php  
    2.   
    3. exec("/usr/bin/ffmpeg -i /usr/local/apache/htdocs/test.flv -y -f mjpeg -ss 3 -t 0.001 -s 320x240 /usr/local/apache/htdocs/test.jpg",$out,$status);  
    4.   
    5. print_r($status);//0是成功 1是失败  
    6.   
    7. ?-->  

    如果没有什么图片生成的可能原因:

    ①对于存储生成图片的文件夹需要有写入权限 #chomd 777 /usr/local/apache/htdocs

    ②在php.ini中有disable_functions禁用了php调用shell命令函数,

    disable_functions = proc_open, popen,exec, system, shell_exec, passthru

    解决办法:注释掉disable_functions这一项

    #disable_functions = proc_open, popen,exec, system, shell_exec, passthru

    或者disable_functions = (把禁言的函数除去)

    保存关闭开启就可以了

    ③php.ini中的安全模式必须关闭 才可以调用exec函数

    safe_mode = off

    ④图片时间截取也很重要,很有可能是无效图片或者是黑屏

    建议 增加关键帧,通常第一帧为关键帧,可以使用:vframes:帧参数,舍弃微秒参数,只保留时间参数

    /usr/bin/ffmpeg -i /usr/local/apache/htdocs/test.flv -y -f mjpeg -ss 3 -vframes 1 -s 320×240 /usr/local/apache/htdocs/test.jpg

  • 相关阅读:
    第四周编程总结
    第三周编程总结
    第二周编程总结
    查找整数 编程总结
    求最大值及其下标 编程总结
    C语言I博客作业04
    C语言I博客作业03
    C语言I博客作业02
    作业01
    第八周作业
  • 原文地址:https://www.cnblogs.com/peteremperor/p/6605854.html
Copyright © 2020-2023  润新知