• 【备忘】windows环境下20行php代码搞定音频裁剪


    先上图,由于最近的需求需要对语音文件进行处理,所以抽空研究了下php处理音/视频文件的处理,简单的demo处理,截取一个音频文件的前20秒,并保存新的媒体文件。

    操作步骤:

    ①在此站点下载所需的辅助程序 https://ffmpeg.zeranoe.com/builds/ ,选择如图默认推荐版本点击下载(如果嫌网速比较慢的话,可以利用工具网盘离线下载工功能,然后从网盘上下载下来)

    ② 下载后放在d盘根目录,D:ffmpeg 可执行文件在 D:ffmpegin目录下,这里可以直接在命令行中直接操作了(整理了一些执行过的代码如下)

    转码
    D:ffmpegin>ffmpeg -i D:ffmpeg	estJay_xinyu.mp3 -b:v 640k D:ffmpeg	estoutput.ts
    
    提取前20s
    D:ffmpegin>ffmpeg -ss 00:00:00 -t 00:00:20 -i D:ffmpeg	estJay_xinyu.mp3  D:ffmpeg	estJay_xinyu_demo.mp3
    
    将视频每隔60秒分割一次
    D:ffmpegin>ffmpeg -ss 00:00:00 -t 00:00:59 -i D:ffmpeg	estJay_xinyu.mp3  D:ffmpeg	estJay_xinyu_1.mp3
    D:ffmpegin>ffmpeg -ss 00:00:59 -t 00:01:58 -i D:ffmpeg	estJay_xinyu.mp3  D:ffmpeg	estJay_xinyu_2.mp3
    D:ffmpegin>ffmpeg -ss 00:01:58 -t 00:02:57 -i D:ffmpeg	estJay_xinyu.mp3  D:ffmpeg	estJay_xinyu_3.mp3
    
    压缩mp3 文件
    
    如果你觉得mp3 文件 有点大,想变小一点那么可以通过-ab 选项改变音频的比特率 (bitrate)
    6496kb => 4217kb
    D:ffmpegin>ffmpeg -i D:ffmpeg	estJay_xinyu.mp3 -ab 128 D:ffmpeg	estJay_xinyu_yasuo.mp3    //这里将比特率设为128
    
    播放
    D:ffmpegin>ffplay D:ffmpeg	estJay_xinyu.mp3

    ③ 如果想在web(php)代码中运行的话,拉取PHP-FFMpeg组件,方法: composer require php-ffmpeg/php-ffmpeg , 写业务代码test.php引入vendor包内容(demo代码如下)

    <?php
    /**
     * User: szliugx@gmail.com
     * Date: 2017/8/11
     * Time: 11:27
     */
    include_once "./vendor/autoload.php";
    
    echo "start...
    ";
    $ffmpeg = FFMpegFFMpeg::create(array(
        'ffmpeg.binaries'  => 'D:ffmpeginffmpeg.exe',
        'ffprobe.binaries' => 'D:ffmpeginffprobe.exe',
        'timeout'          => 3600, // The timeout for the underlying process
        'ffmpeg.threads'   => 12,   // The number of threads that FFMpeg should use
    ), null);
    $audio        = $ffmpeg->open('Jay_xinyu.mp3');
    $audio_format = new FFMpegFormatAudioMp3();
    $audio->filters()->clip(FFMpegCoordinateTimeCode::fromSeconds(0), FFMpegCoordinateTimeCode::fromSeconds(20)); //截取前20秒的音频内容
    $audio->save($audio_format, "new_demo_20s.mp3");
    echo "end...
    ";

    需要注意的是配置文件中'ffmpeg.binaries' 和 'ffprobe.binaries' 需要指向下载下来的可执行文件的地址 

    由于是在windows环境下做预研,linux环境时再看下是否有不一样的配置,有空的话也会记录下来

  • 相关阅读:
    php高效率写法
    php经典bug
    cideogniter部署到阿里云服务器出现session加载错误
    linux gcc编译protocol
    linux权限问题
    http协议详解
    哈希表
    c语言函数
    socket相关函数
    构建之法阅读笔记05
  • 原文地址:https://www.cnblogs.com/liugx/p/7346080.html
Copyright © 2020-2023  润新知