我从两个视频源获得了100部电影。一个是MP4,25 fps
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'MAH00607.MP4':
Metadata:
major_brand : MSNV
minor_version : 22675568
compatible_brands: MSNVmp42isom
creation_time : 2017-06-14T20:20:24.000000Z
Duration: 00:00:12.48, start: 0.000000, bitrate: 2795 kb/s
Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709/bt709/iec61966-2-4), 1280x720 [SAR 1:1 DAR 16:9], 2664 kb/s, 25 fps, 25 tbr, 25k tbn, 50 tbc (default)
Metadata:
creation_time : 2017-06-14T20:20:24.000000Z
handler_name : Video Media Handler
encoder : AVC Coding
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 127 kb/s (default)
Metadata:
creation_time : 2017-06-14T20:20:24.000000Z
handler_name : Sound Media Handler
其次是AVI 29.81 fps
[avi @ 0x561e6733c640] non-interleaved AVI
Input #0, avi, from 'V-0018.AVI':
Duration: 00:00:11.04, start: 0.000000, bitrate: 4571 kb/s
Stream #0:0: Video: mjpeg (MJPG / 0x47504A4D), yuvj422p(pc, bt470bg/unknown/unknown), 640x480, 4515 kb/s, 28.18 fps, 28.18 tbr, 28.18 tbn, 28.18 tbc
Stream #0:1: Audio: pcm_u8 ([1][0][0][0] / 0x0001), 8000 Hz, 1 channels, u8, 64 kb/s
在结束电影之前,我使用this script转换它们。 我导致最终,连续电影有不正确的时间和AVI电影(这是第一顺序)完成 - 电影冻结。 我会尝试FFmpeg - Concat videos with different time base和Mulvya建议重新编码avi文件但没有成功。
你能提出其他解决方案吗?
PS:这两部电影都有不同的像素格式。这 - 在标准化之后 - 导致不同的h264配置文件。迫使yuvj422p(-profile:v high422 -pix_fmt yuvj422p
)允许我干净地连续电影。
答案 0 :(得分:3)
对于连续视频,有一些必须相同的属性。所以在执行concat之前,你最好"规范化"或"格式"您输入的所有内容都可以共享这些属性:
您应该可以通过在"规范化"上指定所有这些参数来实现此目的。 ffmpeg命令行。如果你没有明确地指定一个参数,ffmpeg将尝试从输入流中复制参数,这将再次以不同的格式结束。
一个良好的开端可能是这样的:
ffmpeg -i %SOURCEFILE% -map 0:0 -map 0:1 -c:a aac -ar 48000 -ac 2 -vf scale=1280x720 -c:v libx264 -profile:v baseline -video_track_timescale 60000 "%OUTPUT%.mp4"
上面没有经过测试,但它可以让您大致了解cmd的外观。 -codec copy就像你在输入时收到完全未知的文件一样根本无法使用的东西。
在您的所有输入显示共享所有上述参数后,您应该可以继续使用concat。
答案 1 :(得分:1)
问题是时基。 Ffmpeg在第二个流中添加了偏移量,但是即使应该也不会更改其时间戳。
我从来没有获得任何与时基相关的选项来执行任何操作。对我有用的是:复制到mkv,该视频源具有视频流的1/1000时基(ffmpeg将其报告为“ 1k tbn”)。这使所有时间戳保持一致。然后concat。
出于正常目的,webm和mkv本质上是同一件事,但是mkv接受H.264,而webm当前不接受。
请注意,由于舍入而产生的任何轻微抖动的时间戳,都可能导致丢帧或重复帧,而这些帧的fps更改滤波器设计不良。
我将这个答案粘贴到两个问题上,不知道是否允许这样做。
答案 2 :(得分:0)
首先,您有不同的视频帧率,两部电影都应转换为相等的帧速率,例如25fps。然后你就可以加入电影了。
当我为自己转换大量电影时,我使用了MediaCoder,这是一个基于GUI的工具,可用于转换多种格式。这个应用程序有一个简单的界面,所以你不应该遇到任何麻烦。
因此,您可以将其视为GUI和结果预览的良好解决方案。