我需要快速和不拆分大的视频文件分割成多个部分的文件有错误。基本的想法是,我有一个2GB的视频文件,我想改变成多种格式。我已阅读编码到一个不同的格式时,一些编码器不能使用超过1个核心。所以,我有想法,这取决于有多少内核具有可单独服务器上的大文件(这是非常快的)分成4/8片。将每个片段重新编码为新格式,然后使用这些格式按顺序显示视频。FFmpeg的分裂大文件
所以
testfile.mp4
变得
- testfile_piece_1.mp4
- testfile_piece_2.mp4
- testfile_piece_3.mp4
- testfile_piece_4.mp4
这些可以被单独转换。
的解决方案不应该是特定的格式。但是我发现了mp4文件的问题。
我已经尝试了下面的命令,它工作得很好,而且速度很快,但是会创建带有错误的文件。
ffmpeg -i testfile.mp4 -ss 00:00:00 -t 00:20:00 -c copy testfile_piece_1.mp4
当我在VLC上播放testfile_piece_1.mp4时,它工作正常。将分割文件转换为不同高度和宽度的mp4文件时出现问题。我会得到“未找到的moov原子”类似的错误
我尝试添加-movflags faststart
没有运气
我然后在这个库https://code.google.com/archive/p/moovrelocator/其固定在MOOV问题来了,但随后我会得到有关于错误aac“打开编码器输出流#0.0时出错 - 可能是不正确的参数,如bit_rate,rate,width或height”
拆分文件的另一种方式是无用的,但涉及重新编码文件。对于较小的文件大小来说不算太坏,但2GB文件可能需要几天才能完成。
有没有办法快速拆分largr文件而不产生有错误的文件?我一直在努力工作好几天没有运气。
控制台输出的评论 - FFmpeg splitting large files
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/usr/share/nginx/html/uploads/testfile01.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf56.36.100
Duration: 00:05:02.08, start: 302.120000, bitrate: 3254 kb/s
Stream #0:0(und): Video: h264 (High) (avc1/0x31637661), yuv420p(tv, bt709) , 1920x1080 [SAR 1:1 DAR 16:9], 3252 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (de fault)
Metadata:
handler_name : VideoHandler
[libx264 @ 0x165ffc0] width not divisible by 2 (853x480)
Output #0, mp4, to '/usr/share/nginx/html/uploads/testfile01_480.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf56.36.100
Stream #0:0(und): Video: h264, none, q=2-31, 128 kb/s, SAR 2560:2559 DAR 0:0 , 25 fps (default)
Metadata:
handler_name : VideoHandler
encoder : Lavc56.41.100 libx264
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
控制台输出2
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/usr/share/nginx/html/uploads/testfile.mp4':
Metadata:
major_brand : dash
minor_version : 0
compatible_brands: iso6avc1mp41
creation_time : 2016-01-24 04:26:37
Duration: 01:15:58.08, start: 0.000000, bitrate: 3163 kb/s
Stream #0:0(und): Video: h264 (High) (avc1/0x31637661), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 3161 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc (default)
Metadata:
creation_time : 2016-01-24 04:26:37
handler_name : VideoHandler
[segment @ 0x1197060] Codec for stream 0 does not use global headers but container format requires global headers
[mp4 @ 0x11512a0] Codec for stream 0 does not use global headers but container format requires global headers
Output #0, segment, to '/usr/share/nginx/html/uploads/testfile%02d.mp4':
Metadata:
major_brand : dash
minor_version : 0
compatible_brands: iso6avc1mp41
encoder : Lavf56.36.100
Stream #0:0(und): Video: h264 (avc1/0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 3161 kb/s, 25 fps, 25 tbr, 12800 tbn, 25 tbc (default)
Metadata:
creation_time : 2016-01-24 04:26:37
handler_name : VideoHandler
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Press [q] to stop, [?] for help
[mp4 @ 0x11512a0] Codec for stream 0 does not use global headers but container format requires global headers
[mp4 @ 0x11512a0] Codec for stream 0 does not use global headers but container format requires global headers
[mp4 @ 0x11512a0] Codec for stream 0 does not use global headers but container format requires global headers
[mp4 @ 0x11512a0] Codec for stream 0 does not use global headers but container format requires global headers
[mp4 @ 0x11512a0] Codec for stream 0 does not use global headers but container format requires global headers
[mp4 @ 0x11512a0] Codec for stream 0 does not use global headers but container format requires global headers
[mp4 @ 0x11512a0] Codec for stream 0 does not use global headers but container format requires global headers
[mp4 @ 0x11512a0] Codec for stream 0 does not use global headers but container format requires global headers
[mp4 @ 0x11512a0] Codec for stream 0 does not use global headers but container format requires global headers
[mp4 @ 0x11512a0] Codec for stream 0 does not use global headers but container format requires global headers
[mp4 @ 0x11512a0] Codec for stream 0 does not use global headers but container format requires global headers
[mp4 @ 0x11512a0] Codec for stream 0 does not use global headers but container format requires global headers
[mp4 @ 0x11512a0] Codec for stream 0 does not use global headers but container format requires global headers
[mp4 @ 0x11512a0] Codec for stream 0 does not use global headers but container format requires global headers
[mp4 @ 0x11512a0] Codec for stream 0 does not use global headers but container format requires global headers
感谢我给它一个镜头 –
'十字绣产生段ffmpeg -i testfile.mp4 -vcodec libx264 -preset slow -vf scale = -1:480 -acodec copy testfile_480.mp4'运行时我仍然得到错误,同时打开编码器输出流#0:0 - 可能是不正确的参数如bit_rate,rate,width or height' –
我刚刚注意到错误来自[libx264 @ 0x165ffc0]宽度不能被2整除(853x480)' –