Ubuntu使用ffmpeg切割视频

Ubuntu使用ffmpeg切割视频


1、安装FFmpeg

1、安装依赖
当前环境 ubuntu16

sudo apt-get update
sudo apt-get -y install autoconf automake build-essential libass-dev libfreetype6-dev libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texinfo zlib1g-dev
sudo apt-get install yasm
sudo apt-get install libx264-dev

源码安装:
    2、下载tarball

        http://www.ffmpeg.org/download.html

    3、解压,并参考install文件

        1./configure
        2、make
        3、make install  

apt 安装:
sudo apt install ffmpeg

4、安装完成后检查ffmpeg 版本  
    ffmpeg -version

5、使用
    ffmpeg -i a.mp4  -codec copy -map 0 -bsf h264_mp4toannexb -c copy -f segment -segment_list output.m3u8 -segment_time 5 output-%03d.ts
    -i 输入文件

    -codec 音频|视频编解码 方式
        D)音频选项
        -acodec codec 使用codec编解码 音频
        -ab bitrate 设置音频码率
        -ar freq 设置音频采样率
        -ac channels 设置通道 缺省为1
        -an 不使能音频纪录
        -acodec codec 使用codec编解码
        -an 不使能音频纪录
        b) 视频选项
        -b bitrate 设置比特率,缺省200kb/s
        -r fps 设置帧频 缺省25
        -s size 设置帧大小 格式为WXH 缺省160X128
        -vcodec codec 强制使用codec编解码视频。 如果用copy表示原始编解码数据必须被拷贝。


    -map file:stream 设置输入流映射

    -bsf h264_mp4toannexb
    主要是因为使用了mp4中的h264编码,而h264有两种封装:
    一种是annexb模式,传统模式,有startcode,SPS和PPS是在ES中;另一种是mp4模式,一般mp4、mkv、avi会没有startcode,SPS和PPS以及其它信息被封装在container中,每一个frame前面是这个frame的长度,很多解码器只支持annexb这种模式,因此需要将mp4做转换;在ffmpeg中用h264_mp4toannexb_filter可以做转换;所以需要使用-bsf h264_mp4toannexb来进行转换
    -c选项是-codec的缩写

注意:{如上的命令,可能会报错,因为在编码音频的时候aac格式的音频,h264_mp4toannexb无法操作}    
ffmpeg 命令详解:

ffmpeg -i [输入文件名] [参数选项] -f [格式] [输出文件]

    ffmpeg [[options][`-i' input_file]]... {[options] output_file}...

1、参数选项:
    (1) -an: 去掉音频
    (2) -acodec: 音频选项, 一般后面加copy表示拷贝
    (3) -vcodec:视频选项,一般后面加copy表示拷贝

 2、格式:
    (1) h264: 表示输出的是h264的视频裸流
    (2) mp4: 表示输出的是mp4的视频
    (3)mpegts: 表示ts视频流


1、使用ffprobe查看文件编码方式
    ffprobe a.mp4 
2、如果不是mp4的,可以用如下命令进行转
    ffmpeg -i input.mkv -acodec copy -vcodec copy out.mp4 
3、将mp4转为完整的ts
    ffmpeg -i out.mp4 -c copy -bsf h264_mp4toannexb output.ts  

4、将ts切片,并生成m3u8文件

    ffmpeg -i output.ts -c copy -map 0 -f segment -segment_list playlist.m3u8 -segment_time 5 output%03d.ts  
    其中segment 就是切片,-segment_time表示隔几秒进行切一个文件,上面命令是隔5s,你也可以调整成更大的参数。

5、ffmpeg 查看所有编码器
    ffmpeg -encoders  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用Java调用FFmpeg切割视频。下面是一个简单的示例代码: ```java import java.io.BufferedReader; import java.io.InputStreamReader; public class VideoCutter { public static void main(String[] args) { String inputVideo = "input.mp4"; // 输入视频文件路径 String outputVideo = "output.mp4"; // 输出视频文件路径 int startTime = 10; // 开始时间(以秒为单位) int duration = 5; // 持续时间(以秒为单位) try { // 构建FFmpeg命令 String command = "ffmpeg -i " + inputVideo + " -ss " + startTime + " -t " + duration + " -c:v copy -c:a copy " + outputVideo; // 执行命令 Process process = Runtime.getRuntime().exec(command); // 获取命令输出 BufferedReader reader = new BufferedReader(new InputStreamReader(process.getErrorStream())); String line; while ((line = reader.readLine()) != null) { System.out.println(line); } // 等待命令执行完成 int exitCode = process.waitFor(); if (exitCode == 0) { System.out.println("视频切割成功!"); } else { System.out.println("视频切割失败!"); } } catch (Exception e) { e.printStackTrace(); } } } ``` 这段代码使用`Runtime.getRuntime().exec()`方法执行FFmpeg命令来切割视频。你需要将`input.mp4`替换为你的输入视频文件路径,`output.mp4`替换为你的输出视频文件路径,`startTime`替换为开始时间(以秒为单位),`duration`替换为持续时间(以秒为单位)。 请确保你已经正确安装了FFmpeg,并且FFmpeg可执行文件在系统路径中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值