大贤者
精华
|
战斗力 鹅
|
回帖 0
注册时间 2007-2-17
|
本帖最后由 匿名用户 于 2019-3-27 18:44 编辑
没怎么用过 ffmpeg,也很缺乏视频编码知识,在操作中遇到了些问题。
一、需求:
我有一段视频,想在前面加一张持续几秒的静态图片。
二、我的操作:
我的想法是先把图片转成视频,然后进行合并。
图片转视频我用的命令是:
- ffmpeg -loop 1 -f image2 -i sc.png -vcodec libx264 -t 6 intro.mp4
复制代码
之后用 concat 将 filelist.txt 中列出的两个文件进行合并:
- ffmpeg -f concat -i filelist.txt -c copy output.mp4
复制代码
三、问题:
合并后的输出文件,变成了慢动作。(理论上应该是 4 分多钟的视频,变成了 28 分钟。)
我查看了下合并前的两个视频,编码信息分别如下:
intro.mp4:25 fps bitrate: 351 kb/s
- Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'intro.mp4':
- Metadata:
- major_brand : isom
- minor_version : 512
- compatible_brands: isomiso2avc1mp41
- encoder : Lavf58.24.101
- Duration: 00:00:06.00, start: 0.000000, bitrate: 351 kb/s
- Stream #0:0(und): Video: h264 (High 4:4:4 Predictive) (avc1 / 0x31637661), yuv444p, 1920x1080 [SAR 1:1 DAR 16:9], 347 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
复制代码
content.mp4:60 fps bitrate: 40294 kb/s
- Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'content.mp4':
- Metadata:
- major_brand : mp42
- minor_version : 0
- compatible_brands: isommp42
- creation_time : 2019-03-26T10:12:39.000000Z
- date : 2019
- Duration: 00:04:50.08, start: 0.000000, bitrate: 40294 kb/s
- Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, smpte170m/smpte170m/bt470m), 1920x1080 [SAR 1:1 DAR 16:9], 39890 kb/s, 60 fps, 60 tbr, 90k tbn, 120 tbc (default)
- Metadata:
- creation_time : 2019-03-26T10:12:39.000000Z
- handler_name : VideoHandle
- Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 196 kb/s (default)
- Metadata:
- creation_time : 2019-03-26T10:12:39.000000Z
- handler_name : SoundHandle
- Stream #0:2(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 195 kb/s (default)
- Metadata:
- creation_time : 2019-03-26T10:12:39.000000Z
- handler_name : SoundHandle
复制代码
请问下合并后输出视频慢动作,是因为两个源视频帧率和码率不一直造成的吗?
如果是的话,是应该在图片转视频的时候就设定好码率/帧率和另一视频一致吗?
我试过用 -r 60 -b 40294 k,但仍然无效。
还是我在合并时,需要设定参数按后一个视频的码率/帧率进行输出?
当然,如果有其他方便的方案可以解决一开始的需求的话,也可以提出来。
|
|