如何通过ffmpeg将.MTS文件(AVCHD)转换为.mp4,而不正确地重新编码H264视频流?

如何通过ffmpeg将.MTS文件(AVCHD)转换为.mp4,而不正确地重新编码H264视频流?,ffmpeg,h.264,mpeg2-ts,Ffmpeg,H.264,Mpeg2 Ts,我在后来发现的另一个社区视频制作上发布了一个相同的问题,对于这个问题,哪个社区似乎更合适: 请参见: 1.我试过的 我有一些用我的AVCHD相机录制的.MTS(AVCHD格式)文件。其规格如下所示: $ ffprobe 140612_Canon-00000.MTS ffprobe version 2.2.1 Copyright (c) 2007-2014 the FFmpeg developers (snip) Input #0, mpegts, from '140612_Canon-000

我在后来发现的另一个社区视频制作上发布了一个相同的问题,对于这个问题,哪个社区似乎更合适:

请参见:


1.我试过的 我有一些用我的AVCHD相机录制的.MTS(AVCHD格式)文件。其规格如下所示:

$ ffprobe 140612_Canon-00000.MTS 
ffprobe version 2.2.1 Copyright (c) 2007-2014 the FFmpeg developers
(snip)
Input #0, mpegts, from '140612_Canon-00000.MTS':
  Duration: 00:48:58.40, start: 0.800300, bitrate: 5563 kb/s
  Program 1 
    Stream #0:0[0x1011]: Video: h264 (High) (HDMV / 0x564D4448), 
      yuv420p, 1440x1080 [SAR 4:3 DAR 16:9], 
      29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #0:1[0x1100]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, 
      stereo, fltp, 256 kb/s
$ ffprobe 140612_Canon-00000.MTS.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '140612_Canon-00000.MTS.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf55.33.100

  Duration: 00:01:00.04, start: 0.021333, bitrate: 4590 kb/s

    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 
        1440x1080 [SAR 4:3 DAR 16:9], 4448 kb/s, 
        59.94 fps, 59.94 tbr, 90k tbn, 59.94 tbc (default)
    Metadata:
      handler_name    : VideoHandler

    Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 
        48000 Hz, stereo, fltp, 128 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
注意帧率/时基部分:29.97 fps,29.97 tbr,90k tbn,59.94 tbc

现在,我想将此文件转换为.mp4文件,而无需重新编码H264视频流,另一方面,将其音频流转换为AAC。 因此,我尝试了以下命令:

ffmpeg-i 140612_Canon-00000.MTS-t 60-y-vcodec copy-acodec libfaac-ab 128k 140612_Canon-00001.MTS.mp4

2.结果 输出文件的规格如下所示:

$ ffprobe 140612_Canon-00000.MTS 
ffprobe version 2.2.1 Copyright (c) 2007-2014 the FFmpeg developers
(snip)
Input #0, mpegts, from '140612_Canon-00000.MTS':
  Duration: 00:48:58.40, start: 0.800300, bitrate: 5563 kb/s
  Program 1 
    Stream #0:0[0x1011]: Video: h264 (High) (HDMV / 0x564D4448), 
      yuv420p, 1440x1080 [SAR 4:3 DAR 16:9], 
      29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #0:1[0x1100]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, 
      stereo, fltp, 256 kb/s
$ ffprobe 140612_Canon-00000.MTS.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '140612_Canon-00000.MTS.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf55.33.100

  Duration: 00:01:00.04, start: 0.021333, bitrate: 4590 kb/s

    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 
        1440x1080 [SAR 4:3 DAR 16:9], 4448 kb/s, 
        59.94 fps, 59.94 tbr, 90k tbn, 59.94 tbc (default)
    Metadata:
      handler_name    : VideoHandler

    Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 
        48000 Hz, stereo, fltp, 128 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
查看帧率/时基部分:59.94 fps,59.94 tbr,90k tbn,59.94 tbc。 尽管ffmpeg刚刚复制了视频流,帧速率和时基已更改为两倍值

因此,当我用QuickTime Player或VLC Player打开并播放输出文件时, 音频没有问题,但是视频流没有正确播放。 视频播放时,其帧前后反复抖动

3.问题:
  • 如何通过ffmpeg将.MTS文件(AVCHD)转换为.mp4,而不重新正确编码H264视频流
  • 使用
    ffmpeg
    及其
    -vcodec copy
    开关转换容器时,如何保持原始帧速率/时基值(fps/tbr/tbn/tbc)
  • 如何通过ffmpeg的命令行选项设置帧速率/时基值(fps/tbr/tbn/tbc),而无需重新编码视频流
  • 有什么想法吗?

    在这里:

    ffmpeg -i input.m2ts -c:v copy -c:a aac -strict experimental -b:a 128k output.mp4
    

    这将只复制视频流而不重新编码,并将音频曲目编码为AAC VBR立体声,它需要最新的FFmpeg版本。

    由于我们总是需要合并多个文件,我发现以下命令有助于执行此操作。
    $ffmpeg-i“concat:$(echo*.MTS | tr''|')”out.mp4

    当我省略
    -c:v copy时,为什么输出大小会显著减小?质量(据我所知)是一样的。这是因为它正在被编码,-c”标志定义了要使用的编解码器,-c:v”定义了视频编解码器,您可以在这里找到更多关于编码的信息:仅供参考:您可能还想添加提示,MTS通常使用ac3编码。要直接提取ac3音频,请使用
    ffmpeg-i${INPUT}.MTS-vn-acodec copy${OUTPUT}.ac3
    。事实上,顺便说一句,ac3to是一个非常好的解复用工具,下面是我几年前写的一个完整指南,我给出了这个命令{ffmpeg-i INPUT.m2ts-c:v copy-c:aac-strict-experimental-b:a 128k OUTPUT.mp4}但输出文件的大小与输入文件的大小相同。有什么建议吗?我如何减少输出文件的大小?