可能重複:
ffmpeg: videos before and after conversion aren't the same lengthFFmpeg的不準確的輸出
最近,我一直在試圖使用的FFmpeg對於需要非常精確的操控應用程序時涉及到的時間參數(毫秒分辨率)。不幸的是,我驚訝地發現FFmpeg的操作功能返回了一些不準確的結果。
這裏是「的ffmpeg」的輸出:
ffmpeg version 0.11.1 Copyright (c) 2000-2012 the FFmpeg developers
built on Jul 25 2012 19:55:05 with gcc 4.2.1 (Apple Inc. build 5664)
configuration: --enable-gpl --enable-shared --enable-pthreads --enable-libx264 --enable-libmp3lame
libavutil 51. 54.100/51. 54.100
libavcodec 54. 23.100/54. 23.100
libavformat 54. 6.100/54. 6.100
libavdevice 54. 0.100/54. 0.100
libavfilter 2. 77.100/2. 77.100
libswscale 2. 1.100/2. 1.100
libswresample 0. 15.100/0. 15.100
libpostproc 52. 0.100/52. 0.100
現在,讓我們假設我想撕毀的「foo.mov」音軌。這裏是 '的ffmpeg -i foo.mov' 的相關輸出:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'foo.mov':
Metadata:
major_brand : qt
minor_version : 0
compatible_brands: qt
creation_time : 2012-07-24 23:16:08
Duration: 00:00:40.38, start: 0.000000, bitrate: 805 kb/s
Stream #0:0(und): Video: h264 (Baseline) (avc1/0x31637661), yuv420p, 480x360, 733 kb/s, 24.46 fps, 29.97 tbr, 600 tbn, 1200 tbc
Metadata:
rotate : 90
creation_time : 2012-07-24 23:16:08
handler_name : Core Media Data Handler
Stream #0:1(und): Audio: aac (mp4a/0x6134706D), 44100 Hz, mono, s16, 63 kb/s
Metadata:
creation_time : 2012-07-24 23:16:08
handler_name : Core Media Data Handler
正如你可能已經注意到,視頻文件的時間爲00:00:40.38。使用下面的命令,我撕開它的音軌:
'的ffmpeg -i foo.mov foo.wav'
輸出:
Output #0, wav, to 'foo.wav':
Metadata:
major_brand : qt
minor_version : 0
compatible_brands: qt
creation_time : 2012-07-24 23:16:08
encoder : Lavf54.6.100
Stream #0:0(und): Audio: pcm_s16le ([1][0][0][0]/0x0001), 44100 Hz, mono, s16, 705 kb/s
Metadata:
creation_time : 2012-07-24 23:16:08
handler_name : Core Media Data Handler
Stream mapping:
Stream #0:1 -> #0:0 (aac -> pcm_s16le)
Press [q] to stop, [?] for help
size=3482kB time=00:00:40.42 bitrate= 705.6kbits/s
video:0kB audio:3482kB global headers:0kB muxing overhead 0.001290%
正如你所看到的,輸出文件長於輸入中的文件。
另一個例子是音頻(和視頻)文件修整: 我們假設我想使用ffmpeg來修剪音頻文件。我使用的下一個命令:
'的ffmpeg -t 00:00:10.000 -i foo.wav trimmed_foo.wav -ss 00:00:25.000'
輸出:
[wav @ 0x10180e800] max_analyze_duration 5000000 reached at 5015510
Guessed Channel Layout for Input Stream #0.0 : mono
Input #0, wav, from 'foo.wav':
Duration: 00:00:40.42, bitrate: 705 kb/s
Stream #0:0: Audio: pcm_s16le ([1][0][0][0]/0x0001), 44100 Hz, mono, s16, 705 kb/s
Output #0, wav, to 'trimmed_foo.wav':
Metadata:
encoder : Lavf54.6.100
Stream #0:0: Audio: pcm_s16le ([1][0][0][0]/0x0001), 44100 Hz, mono, s16, 705 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (pcm_s16le -> pcm_s16le)
Press [q] to stop, [?] for help
size=864kB time=00:00:10.03 bitrate= 705.6kbits/s
video:0kB audio:864kB global headers:0kB muxing overhead 0.005199%
同樣,輸出文件比我預期的要長30毫秒。
我試了很長時間,沒有任何成功的研究這個問題。當我使用大膽的功能時,它非常準確!
有沒有人有任何想法如何解決這個問題?
非常感謝,您的指導非常幫助我! – Shlomi 2012-07-28 16:02:58
關於命令選項順序的問題解決了我的問題,即粗略的問題(小數分鐘而不是秒)。 – klausnrooster 2016-06-12 03:15:31