我已经成功地使用 -ss 和 -i 之后的 -t 从单个源文件创建了段,使用 python 脚本创建了包含段列表的 .txt 文件,并使用 -concat 将各段混合在一起。
今天我发现了 -f periods和 -segment_times,但是我通过超级用户和谷歌搜索后仍找不到我的命令现在可以正常工作的原因,有人可以帮忙吗?
我还希望能够使用segment_list 函数,但是文档中关于需要使用的语法说明得不是很清楚。
这是我一直使用的命令:
C:\Users\3A01>ffmpeg -i f:\Transcoder\repo\LB000001.mp4 -f segment -segment_times 10,20 -c copy -map 0 f:\test.mp4
输出如下:
C:\Users\3A01>ffmpeg -i f:\Transcoder\repo\LB000001.mp4 -f segment -segment_times 10,20 -c copy -map 0 f:\test.mp4
ffmpeg version N-82225-gb4e9252 Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 5.4.0 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads -- enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --enable-bzlib -- enable-libebur128 --enable-fontconfig --enable-frei0r --enable-gnutls --enable- iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca -- enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid -- enable-libzimg --enable-lzma --enable-decklink --enable-zlib
libavutil 55. 35.100 / 55. 35.100
libavcodec 57. 66.101 / 57. 66.101
libavformat 57. 57.100 / 57. 57.100
libavdevice 57. 2.100 / 57. 2.100
libavfilter 6. 66.100 / 6. 66.100
libswscale 4. 3.100 / 4. 3.100
libswresample 2. 4.100 / 2. 4.100
libpostproc 54. 2.100 / 54. 2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'f:\Transcoder\repo\LB000001.mp4':
Metadata:
major_brand : mp42
minor_version : 512
compatible_brands: isomiso2avc1mp41
creation_time : 2016-03-10T20:46:05.000000Z
encoder : HandBrake 0.10.5 2016021100
Duration: 00:29:43.08, start: 0.000000, bitrate: 869 kb/s
Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, smpte170m/bt470bg/bt709), 718x576 [SAR 16:15 DAR 359:270], 703 kb/s, 25 fps, 25 tbr, 90k tbn, 180k tbc (default)
Metadata:
creation_time : 2016-03-10T20:46:05.000000Z
handler_name : VideoHandler
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 160 kb/s (default)
Metadata:
creation_time : 2016-03-10T20:46:05.000000Z
handler_name : Stereo
[mp4 @ 0000000000028200] Invalid segment filename template 'f:\test.mp4'
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argumentStream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #0:1 -> #0:1 (copy)
Last message repeated 1 times
答案1
test.mp4
应该是test%d.mp4
。由于您将创建多个文件,因此您需要提供一个输出名称,该名称具有 ffmpeg 将用来命名多个文件的模式。我提供的那个将产生test1.mp4
test2.mp4
...
请注意,由于您使用的是复制模式,剪切可能不会发生在精确指定的点。