Я потратил много времени на эту проблему. Надеюсь, кто-то может помочь.
Я хочу преобразовать 3147 изображений + аудиофайл ac3 в видео в формате mpeg2 со скоростью 29,97 кадров в секунду (около 1м45 с). Моя команда:
~/ffmpeg/ffmpeg/ffmpeg -loop_input \
-t 105 -i v%4d.tga -i final.ac3 \
-vcodec mpeg2video -qscale 1 -s 400x400 -r 30000/1001 \
-acodec copy -y out.mpeg 2> out.txt
Однако аудиофайл заканчивается перед последовательностью кадров. Что означает, что видео медленнее, чем аудио.
Я проверил выходной файл с imageinfo и вижу:
General
Complete name : out.mpeg
Format : MPEG-PS
File size : 7.18 MiB
Duration : 1mn 44s
Overall bit rate : 574 Kbps
Video
ID : 224 (0xE0)
Format : MPEG Video
Format version : Version 2
Format profile : Main@Main
Format settings, BVOP : No
Format settings, Matrix : Default
Format_Settings_GOP : M=1, N=12
Duration : 1mn 44s
Bit rate mode : Variable
Bit rate : 103 Kbps
Width : 400 pixels
Height : 400 pixels
Display aspect ratio : 1.000
Frame rate : 29.970 fps
Resolution : 8 bits
Colorimetry : 4:2:0
Scan type : Progressive
Bits/(Pixel*Frame) : 0.021
Stream size : 1.29 MiB (18%)
Audio
ID : 128 (0x80)
Format : AC-3
Format/Info : Audio Coding 3
Duration : 1mn 44s
Bit rate mode : Constant
Bit rate : 448 Kbps
Channel(s) : 6 channels
Channel positions : Front: L C R, Side: L R, LFE
Sampling rate : 44.1 KHz
Stream size : 5.61 MiB (78%)
Журнал от ffmpeg показывает много повторяющихся кадров. Но я не знаю, как от этого избавиться.
-loop_input is deprecated, use -loop 1
[image2 @ 0x9c17a80] max_analyze_duration 5000000 reached at 5000000
Input #0, image2, from 'v%4d.tga':
Duration: 00:02:05.88, start: 0.000000, bitrate: N/A
Stream #0:0: Video: targa, bgr24, 400x400, 25 fps, 25 tbr, 25 tbn, 25 tbc
-loop_input is deprecated, use -loop 1
[ac3 @ 0x9ca5420] max_analyze_duration 5000000 reached at 5014400
[ac3 @ 0x9ca5420] Estimating duration from bitrate, this may be inaccurate
Input #1, ac3, from 'Final.ac3':
Duration: 00:20:10.68, start: 0.000000, bitrate: 447 kb/s
Stream #1:0: Audio: ac3, 44100 Hz, 5.1(side), s16, 448 kb/s
Incompatible pixel format 'bgr24' for codec 'mpeg2video', auto-selecting format 'yuv420p'
[buffer @ 0x9c1e060] w:400 h:400 pixfmt:bgr24 tb:1/1000000 sar:0/1 sws_param:
[buffersink @ 0x9dd56c0] auto-inserting filter 'auto-inserted scale 0' between the filter 'src' and the filter 'out'
[scale @ 0x9c178e0] w:400 h:400 fmt:bgr24 -> w:400 h:400 fmt:yuv420p flags:0x4
[mpeg @ 0x9d58060] VBV buffer size not set, muxing may fail
Output #0, mpeg, to 'out.mpeg':
Metadata:
encoder : Lavf53.21.0
Stream #0:0: Video: mpeg2video, yuv420p, 400x400, q=2-31, 200 kb/s, 90k tbn, 29.97 tbc
Stream #0:1: Audio: ac3, 44100 Hz, 5.1(side), 448 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (targa -> mpeg2video)
Stream #1:0 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame= 267 fps= 0 q=1.0 size= 564kB time=00:00:08.87 bitrate= 520.6kbits/s dup=43 drop=0
frame= 544 fps=542 q=1.0 size= 1186kB time=00:00:18.11 bitrate= 536.2kbits/s dup=89 drop=0
frame= 821 fps=546 q=1.0 size= 1818kB time=00:00:27.36 bitrate= 544.3kbits/s dup=135 drop=0
frame= 1098 fps=548 q=1.0 size= 2444kB time=00:00:36.60 bitrate= 547.0kbits/s dup=181 drop=0
frame= 1376 fps=549 q=1.0 size= 3072kB time=00:00:45.87 bitrate= 548.5kbits/s dup=227 drop=0
frame= 1653 fps=550 q=1.0 size= 3700kB time=00:00:55.12 bitrate= 549.9kbits/s dup=273 drop=0
frame= 1930 fps=550 q=1.0 size= 4326kB time=00:01:04.36 bitrate= 550.6kbits/s dup=319 drop=0
frame= 2208 fps=551 q=1.0 size= 4960kB time=00:01:13.64 bitrate= 551.8kbits/s dup=365 drop=0
frame= 2462 fps=546 q=1.0 size= 5746kB time=00:01:22.11 bitrate= 573.2kbits/s dup=407 drop=0
frame= 2728 fps=544 q=1.0 size= 6354kB time=00:01:30.99 bitrate= 572.1kbits/s dup=451 drop=0
frame= 3007 fps=545 q=1.0 size= 6980kB time=00:01:40.28 bitrate= 570.2kbits/s dup=498 drop=0
frame= 3146 fps=546 q=1.0 Lsize= 7352kB time=00:01:44.93 bitrate= 573.9kbits/s dup=521 drop=0
video:1518kB audio:5745kB global headers:0kB muxing overhead 1.230493%