文档章节

ffmpeg分割视频的方法

张旭0512
 张旭0512
发布于 2014/09/09 16:43
字数 657
阅读 736
收藏 11

ffmpeg可以说是一个比较全能的编码器,在ffmpeg命令详解中我列出了所有ffmpeg的命令,但我在分割视频的时候视频被他重新编码了,明明是copy却变成了encode。

我使用的命令是这样的:


  
  
  1. ffmpeg -vcodec copy -acodec copy -ss 01:00:00 -t 00:00:30 -i input_file_h264.mp4 output_file.mp4

本来只是想分割出一段视频的,但却把分离出来的视频重新编码了,画质也变得惨不忍睹。网上很多人说是ffmpeg版本的问题,之后我换了比较老的版本,用相同的命令,神奇了,成功分割出了视频。难道新版的就不能做分割操作了?

用了一段时间mod过的版本还是觉得不爽,于是查了一些国外资料后发现了问题所在。

在ffmpeg的手册中对于codec是这样写的:

 

‘-c[:stream_specifier] codec (input/output,per-stream)’
‘-codec[:stream_specifier] codec (input/output,per-stream)’
Select an encoder (when used before an output file) or a decoder (when used before an input file) for one or more streams. codec is the name of a decoder/encoder or a special value copy (output only) to indicate that the stream is not to be re-encoded.

 

意思就是如果把-codec放到输出文件的前面就当做编码器(encoder),在输入文件前面就当做解码器(decoder)。再看看我用的命令,-codec是在最前面的,也就是在输入文件的前面,copy被当做了解码器,这也是很多人遇到 Unknown decoder 'copy' 的原因。copy是一种特殊的编码器,因此-codec必须放在输出文件的前面。

还有就是关于-s选项的解释:

 

‘-ss position (input/output)’
When used as an input option (before -i), seeks in this input file to position. When used as an output option (before an output filename), decodes but discards input until the timestamps reach position. This is slower, but more accurate.
position may be either in seconds or in hh:mm:ss[.xxx] form.

 

意思就是如果要把-ss作为输入选项的话要放在-i之前,当做输出选项的话放在输出文件之前。我们这是要截取一段视频,应该当做输入选项,所以-ss要在-i之前才有效,不然会花费很长一段时间来寻找-ss。

最后分割视频的命令就变成了:


  
  
  1. ffmpeg -ss 01:00:00 -i input_file_h264.mp4 -vcodec copy -acodec copy -t 00:06:00 output_file.mp4

果然,用最新版的ffmpeg也能成功分割。从上面我们可以发现一些选项的顺序是非常重要的,错误的顺序有时会造成截然不同的结果,不止ffmpeg,x264、mencoder等这些编码器也是如此。

本文转载自:http://wuyuans.com/2012/04/ffmpeg-split/

张旭0512
粉丝 41
博文 136
码字总数 30203
作品 0
朝阳
程序员
私信 提问
C#如何调用ffmpeg并使用他处理视频?

@汪宪博 你好,想跟你请教个问题: 看到您之前在OS上也问过同样的问题,那就是 “C#如何调用ffmpeg并使用他处理视频?” 目前我也是要利用C#调用FFMpeg来实现视频截图和视频分割功能,ffmpe...

xiaoqihaha
2013/04/02
9.8K
7
FFMPEG命令行处理视频进阶——高阶必读

FFMPEG拥有强大的视频处理能力,可惜的是有很多人不知道如何使用。本文深入介绍如何用编译好ffmpeg.exe程序处理视频,既有常用的简单的处理,也有一些比较少见的高大上的处理,一定能让你受益...

zhangamxqun
2018/05/13
0
0
关于ffmpeg视频截取的一个问题

想要使用ffmpeg来完成如下两个功能: 1.视频截图 2.视频分割功能(即可以截取当前播放视频中任意一段,然后对选中的视频段进行保存) 我是在.net下用C#语言开发的一个播放器,视频的播放是用...

xiaoqihaha
2013/04/02
2.2K
0
最新FFmpeg音视频核心技术精讲与实战(完整版)

第1章 课程导学与准备工作 全民娱乐时代,需要音视频等多媒体产品层出不穷,但会处理音视频数据的工程师却极度匮乏,进入音视频开发领域正当时,这门课程就是为这样的你而生。来吧!加入我们...

L272339
01/06
0
0
2018FFmpeg音视频核心技术精讲与实战(已完结)目前最新

第1章 课程导学与准备工作 全民娱乐时代,需要音视频等多媒体产品层出不穷,但会处理音视频数据的工程师却极度匮乏,进入音视频开发领域正当时,这门课程就是为这样的你而生。来吧!加入我们...

聂友华
2018/12/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

解决vim打开之后乱码的问题

在Windows中的文档,传输到Linux系统中(使用rz命令),出现乱码 root@localhost ~]# rpm -qf `which iconv` glibc-common-2.17-105.el7.x86_64 [root@localhost ~]# rpm -ihv /mnt/Packages......

寰宇01
12分钟前
0
0
aldi 2017年1月记录

../../tools/CBLAS/lib/cblas_LINUX.a ../../tools/lapack-3.4.2/liblapacke.a \../../tools/lapack-3.4.2/librefblas.a -lgfortran \../../tools/lapack-3.4.2/liblapack.a \../../......

MtrS
13分钟前
0
0
Choerodon如何进行日志收集与告警

作者:董文启 应用程序日志是由软件应用程序记录的事件文件, 它一般包含错误,信息事件和警告。一个良好的日志系统有助于快速发现问题,定位问题,同时也为业务分析起到一定的作用。 传统E...

Choerodon
24分钟前
1
0
js二维码生成插件“jquery.qrcode.min.js”

<!doctype html> <html> <head> <meta charset="utf-8" /> <title>生成二维码</title> <script type='text/javascript' src='http://cdn.staticfile.org/jquery/2.1.1/jquery.min.js'></scri......

泉天下
28分钟前
0
0
Spring AOP之同一个对象方法内部自调用导致事务失效问题

对于像我这种喜欢滥用AOP的程序员,遇到坑也是习惯了,不仅仅是事务,其实只要脱离了Spring容器管理的所有对象,对于SpringAOP的注解都会失效,因为他们不是Spring容器的代理类,SpringAOP,就切入不...

xiaomin0322
34分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部