
長さのビデオがあります10secs で、次のコマンドの助けを借りて、それをトリミングしてから連結することができます。
ビデオ
ffmpeg -y -i test_video.mp4 -filter_complex \
"[0:v]split=3[outvideo1][outvideo2][outvideo3]; \
[outvideo1]trim=0:2,setpts=PTS-STARTPTS[video1]; \
[outvideo2]trim=2:8,setpts=PTS-STARTPTS[video2]; \
[outvideo3]trim=start=8,setpts=PTS-STARTPTS[video3]; \
[video1][video2][video3]concat=n=3:v=1:a=0[outvideo]" \
-map '[outvideo]' test_video_text.mp4
上記の結果ビデオコマンドは正常で、test_video_text.mp4の長さも10秒
ただし、上記のコマンドをオーディオに使用する場合は、次のようになります。
オーディオ
ffmpeg -y -i test_video.mp4 -filter_complex \
"[0:a]asplit=3[outaudio1][outaudio2][outaudio3]; \
[outaudio1]atrim=0:2,asetpts=PTS-STARTPTS[audio1]; \
[outaudio2]atrim=2:8,asetpts=PTS-STARTPTS[audio2]; \
[outaudio3]atrim=start=8,asetpts=PTS-STARTPTS[audio3]; \
[audio1][audio2][audio3]concat=n=3:v=0:a=1[outaudio]" \
-map '[outaudio]' test_video_text.mp3
test_video_text.mp3の再生時間は10秒から20秒数沈黙最初に10秒。
オーディオのコンソール出力は次のとおりです。
ffmpeg version 3.0.1 Copyright (c) 2000-2016 the FFmpeg developers
built with Apple LLVM version 7.0.2 (clang-700.1.81)
configuration: --prefix=/usr/local/Cellar/ffmpeg/3.0.1 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-opencl --enable-libx264 --enable-libmp3lame --enable-libxvid --enable-libfreetype --enable-vda
libavutil 55. 17.103 / 55. 17.103
libavcodec 57. 24.102 / 57. 24.102
libavformat 57. 25.100 / 57. 25.100
libavdevice 57. 0.101 / 57. 0.101
libavfilter 6. 31.100 / 6. 31.100
libavresample 3. 0. 0 / 3. 0. 0
libswscale 4. 0.100 / 4. 0.100
libswresample 2. 0.101 / 2. 0.101
libpostproc 54. 0.100 / 54. 0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test_video.mp4':
Metadata:
major_brand : mp42
minor_version : 1
compatible_brands: mp41mp42isom
creation_time : 2015-09-24 18:32:33
Duration: 00:00:09.87, start: 0.068254, bitrate: 235 kb/s
Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 320x320, 183 kb/s, 29.67 fps, 29.67 tbr, 29673 tbn, 59.35 tbc (default)
Metadata:
creation_time : 2015-09-24 18:32:33
handler_name : Core Media Video
Stream #0:1(und): Audio: aac (HE-AAC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 48 kb/s (default)
Metadata:
creation_time : 2015-09-24 18:32:33
handler_name : Core Media Audio
Output #0, mp3, to 'test_video_text.mp3':
Metadata:
major_brand : mp42
minor_version : 1
compatible_brands: mp41mp42isom
TSSE : Lavf57.25.100
Stream #0:0: Audio: mp3 (libmp3lame), 44100 Hz, stereo, fltp (default)
Metadata:
encoder : Lavc57.24.102 libmp3lame
Stream mapping:
Stream #0:1 (aac) -> asplit
concat -> Stream #0:0 (libmp3lame)
Press [q] to stop, [?] for help
size= 156kB time=00:00:09.95 bitrate= 128.6kbits/s speed=63.7x
video:0kB audio:156kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.219216%
注記: 私が削除しても資産オーディオコマンドの場合、結果は同じになります。20秒の期間。
答え1
エンコードのバグではありませんが、MP3 メタデータに関連するものです。つまり、FFmpeg は 20 秒のオーディオをエンコードしません。挿入します-write_xing 0
。正しい継続時間が表示されるはずです。