视频开发视频剪辑后期收录

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

2017-09-02  本文已影响169人  Cherry_rua

〇、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格式纯音频问题还大,根本读不了。

上一篇下一篇

猜你喜欢

热点阅读