美文网首页视频开发视频剪辑后期收录
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使用笔记——视频的剪切与合并

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