美文网首页视频开发视频剪辑后期收录
ffmpeg使用笔记——视频的剪切与合并

ffmpeg使用笔记——视频的剪切与合并

作者: Cherry_rua | 来源:发表于2017-09-02 20:42 被阅读169次

〇、ffmpeg版本号

7.1.0

一、基本命令

1.1 剪切

ffmpeg -ss 0:53:25 -t 0:00:50 -i N:\Test\Sample.mkv -vcodec copy -acodec copy N:\Test\Cut.mkv.mkv

1.2 拼接

#博客教程里没有 -safe 0 这一项,加上就可以拼接mkv格式纯视频

ffmpeg -f concat -safe 0 -i N:\Test\list.txt -c copy N:\Test\Merge.mkv

list.txt 格式

file 'N:\Test\Sample1.mkv'
file 'N:\Test\Sample2.mkv'

二、mkv格式

2.1 mkv纯视频、mka纯音频

基本正常
但持续时间会有问题,需要逐帧精确剪切会有问题

#命令

ffmpeg -ss 00:40:00 -t 0:02:00 -i N:\Test\Sample.mkv -vcodec copy -acodec copy N:\Test\Cut.mkv

#结果

frame= 2909 fps=0.0 q=-1.0 Lsize=   37515kB time=00:01:59.97 bitrate=2561.5kbits
/s speed= 513x

2.2 单音轨多字幕

#命令

ffmpeg -ss 00:00:10 -t 0:01:00 -i N:\Test\Sample.mkv -vcodec copy -acodec copy N:\Test\Cut.mkv

只能导出单音轨单字幕
视频从原起始位置开始,实际持续时间为ss+t
视频内容结束后持续黑屏,直至原结束位置

2.2.1 字幕问题的解释

#输入

Stream #0:0(jpn): Video: h264 (High) (H264 / 0x34363248), yuv420p(progressiv
e), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 23.98 fps, 23.98 tbr, 1k tbn, 1k tbc (
default)

Stream #0:1(jpn): Audio: aac (LC) ([255][0][0][0] / 0x00FF), 48000 Hz, stere
o, fltp (default)
Stream #0:2(chi): Subtitle: ass (default)
Stream #0:3(chi): Subtitle: ass
Stream #0:4(jpn): Subtitle: ass

#结果

Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
  Stream #0:2 -> #0:2 (ass (ssa) -> ass (ssa))

ffmpeg只输出了有default标记的文件流,所以导致单字幕
同理应该可以解释输入多音轨视频、输出单音轨视频的问题

2.3 多音轨多字幕

只能导出单音轨单字幕
视频起始位置、实际持续时间均正常
视频内容结束后持续黑屏,直至原结束位置

2.4 总结

可以认为,先分流音视频是必须的,不仅可以避免上述问题
而且非mkv格式纯视频、mka格式纯音频,会导致导出的文件比特率无法显示
无论是由MKVExtractGUI分流的AAC音频,还是直接用ffmpeg剪切的mkv格式带音轨视频,都无比特率

三、纯音频

3.1 AAC格式

#照搬裁剪视频格式,无法运行

ffmpeg -ss 00:00:10 -t 0:01:00 -i N:\Test\Sample.aac -vcodec copy -acodec copy N:\Test\Cut.aac

#只删去 -vcodec copy 依然不行;删去 -vcodec copy -acodec copy 可以运行,但出现了转码过程

ffmpeg -ss 00:00:10 -t 0:01:00 -i N:\Test\Sample.aac N:\Test\Cut.aac

#上述两个命令都会出现如下提示
#出现在输入之前

[aac @ 000000000054a9a0] Estimating duration from bitrate, this may be inaccurate

#第二个命令的输出与结果

Stream mapping:                                                       #Stream mapping出现在Output之前
  Stream #0:0 -> #0:0 (aac (native) -> aac (native))
Press [q] to stop, [?] for help
Output #0, adts, to 'N:\Test\Cut.aac':
  Metadata:
    encoder : Lavf57.76.100                                       #重编码
    Stream #0:0: Audio: aac (LC), 48000 Hz, stereo, fltp, 128 kb/s
    Metadata:
      encoder : Lavc57.102.100 aac
size= 982kB time=00:01:00.01 bitrate= 134.0kbits/s speed=21.7x

虽然单纯在ffmpeg中,可以避开处理AAC音频的问题。但后续如果使用Ae乃至MeGUI(忘了MeGUI输出是什么格式的了,至少Ae导出的AAC是个问题,除非换个音频格式),还是会遇上这个问题。

3.2 M4A格式

M4A格式没问题,仿照视频方法即可

3.3 MP3格式

同上,并且虽然在cmd中会出现中文标记乱码的情况,但输出文件的标记没有问题。

#乱码情况

Input #0, mp3, from ' N:\Test\Sample.mp3':
  Metadata:
    artist             : 涓冩湹缁勫悎
    title               : 涓嶄竴鏍风殑鎴
    comment      : V1.0
  Duration: 00:04:17.72, start: 0.000000, bitrate: 320 kb/s
    Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 320 kb/s
Output #0, mp3, to 'N:\Test\Cut.mp3':
  Metadata:
    TPE1            : 涓冩湹缁勫悎
    TIT2             : 涓嶄竴鏍风殑鎴
    comment      : V1.0
    TSSE           : Lavf57.76.100
    Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 320 kb/s

#输出文件代码

General
Complete name           : N:\Test\Cut.mp3 
Format                         : MPEG Audio
File size                       : 2.29 MiB
Duration                       : 1 min 0 s
Overall bit rate mode   : Constant
Overall bit rate             : 320 kb/s
Track name                  : Sample
Performer                     : Sample
Writing library               : LAME
comment                      : V1.0

3.4 Flac格式

可以剪切,放不了...

#命令

ffmpeg -ss 00:00:10 -t 0:01:00 -i N:\Test\Sample.flac -vcodec copy -acodec copy N:\Test\Cut.flac

#代码

Input #0, flac, from 'N:\Test\Sample.flac':
  Metadata:
    ALBUM           : 鏈堟弧寮
    ARTIST          : 鍒樼弬鐭
    TITLE           : 鏈堟弧寮
  Duration: 00:04:14.99, start: 0.000000, bitrate: 888 kb/s
    Stream #0:0: Audio: flac, 44100 Hz, stereo, s16
Output #0, flac, to 'N:\Test\Cut.flac':
  Metadata:
    ALBUM           : 鏈堟弧寮
    ARTIST          : 鍒樼弬鐭
    TITLE           : 鏈堟弧寮
    encoder         : Lavf57.76.100
    Stream #0:0: Audio: flac, 44100 Hz, stereo, s16
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
Press [q] to stop, [?] for help
size=    6102kB time=00:00:59.93 bitrate= 834.0kbits/s speed=3.84e+003x

四、MP4格式

没问题

没有尝试过MP4格式带软字幕的,估计一般也看不到

封装了章节等其他内容的,还是要把章节剔除,再剪辑。

最好就是干干净净的单音轨单视频轨,无论是MP4还是MKV封装。

五、FLV格式

没问题

六、H264格式纯视频

之前试过,似乎比AAC格式纯音频问题还大,根本读不了。

相关文章

  • ffmpeg使用笔记——视频的剪切与合并

    〇、ffmpeg版本号 7.1.0 一、基本命令 1.1 剪切 ffmpeg -ss 0:53:25 -t 0:0...

  • ffmpeg视频剪切与合并

    剪切视频 这个命令就是从00秒开始裁剪到00+30=30秒结束,总共30秒的视频。这个命令执行很快,因为只是原始数...

  • android ffmpeg视频剪切与合并

    android-ffmpeg-java-demo https://github.com/shutup/androi...

  • ffmpeg视频剪切时长不正确

    问题 在windows下使用ffmpeg以下命令剪切视频时,发现剪切后的时长都会比设置的时长长ffmpeg -ss...

  • 在Android项目中调用FFmpeg命令

    概述 FFmpeg,命令行非常强大。在PC机上,调用一行FFmpeg命令,就可以对视频文件进行剪切、合并、转码等功...

  • FFmpeg滤镜(9)

    FFmpeg视频抠图合并 FFmpeg除了半透明、透明水印处理外,还支持视频抠图与背景视频合并的操作——chrom...

  • 2019-03-22

    FFmpeg使用filter_complex命令合并多个视频 我的csdn原文 filter_complex合并多...

  • 音视频剪切合并器有哪些

    看到视频剪切合并器大家可能就会想到视频剪辑,平常我们在剪辑视频时,常常会需要合并或者剪切视频,这时,视频分割合并软...

  • 交叉编译ffmpeg 3.0

    前言 ffmpeg库是一个非常强大的音视频编解码库,像一些视频的转换,剪切,合并,提取音轨,添加滤镜等都可以很方便...

  • Android集成FFmpeg并实现视频转码

    通过编译FFmpeg并集成到Android App中实现视频转码,也可以直接执行FFmpeg命令实现视频拼接、剪切...

网友评论

    本文标题:ffmpeg使用笔记——视频的剪切与合并

    本文链接:https://www.haomeiwen.com/subject/xtgxrxtx.html