このようにFFmpegと-segment_times
オプションでビデオを分割しようとしています FFmpegチケット 。しかし、それは機能しておらず、エラー出力は役に立たず、結果の出力は単一のゼロサイズのビデオです。
分割点のリストを指定します。 timesには、カンマ区切りの期間指定のリストが昇順で含まれています。 「segment_time」オプションも参照してください。
説明が長引く理由から、意図的に-ss
および-t
オプションを使用しなかったことに注意してください。
ffmpeg -i input.mp4 -f segment -segment_times 10,20 -vcodec copy output02%d.mp4
ffmpeg version N-59275-g9b195dd Copyright (c) 2000-2013 the FFmpeg developers
built on Dec 21 2013 22:01:05 with gcc 4.8.2 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheo
ra --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
libavutil 52. 58.101 / 52. 58.101
libavcodec 55. 45.103 / 55. 45.103
libavformat 55. 22.100 / 55. 22.100
libavdevice 55. 5.102 / 55. 5.102
libavfilter 4. 0.100 / 4. 0.100
libswscale 2. 5.101 / 2. 5.101
libswresample 0. 17.104 / 0. 17.104
libpostproc 52. 3.100 / 52. 3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isommp42
creation_time : 2013-12-16 21:59:06
Duration: 00:01:53.06, start: 0.000000, bitrate: 1467 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720, 1272 kb/s, 29.97 fps, 29.97 tbr, 60k tbn, 59.94 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 192 kb/s (default)
Metadata:
creation_time : 2013-12-16 21:59:06
handler_name : IsoMedia File Produced by Google, 5-11-2011
Output #0, segment, to 'output02%d.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isommp42
Output file #0 does not contain any stream
私は何が間違っているのですか?
-c copy
オプションを使用してすべての出力ストリームをコピーするようにffmpegに指示する必要があります。さらに、 入力から出力まですべてをマップします-map 0
を使用します。これは、セグメントマルチプレクサのすべての例で言及されています。
ffmpeg -i input.mp4 -f segment -segment_times 10,20 -c copy -map 0 output02%d.mp4
ビデオに不規則な間隔でキーフレームがある場合、ffmpegはビデオをキーフレームでセグメントに分割することしかできないため、セグメントの長さが指定した時間に対応しない場合があることに注意してください。通常のセグメントサイズが必要な場合は、ビデオを再エンコードし(たとえば、copy
の代わりにlibx264
のようなエンコーダーを選択します)、キーフレーム間隔を-g
で設定する必要があります。