我正在尝试使用ffmpeg连接两个mp4文件.我需要这是一个自动过程因此我选择ffmpeg.我正在将这两个文件转换为.ts文件,然后将它们连接起来,然后尝试对该连接的.ts文件进行编码.文件是h264和aac编码,我希望保持质量相同或尽可能接近原始.
ffmpeg -i part1.mp4 -vcodec copy -vbsf h264_mp4toannexb -acodec copy part1.ts
ffmpeg -i part2.mp4 -vcodec copy -vbsf h264_mp4toannexb -acodec copy part2.ts
cat part1.ts part2.ts > parts.ts
ffmpeg -y -i parts.ts -acodec copy -ar 44100 -ab 96k -coder ac -vbsf h264_mp4toannexb parts.mp4
Run Code Online (Sandbox Code Playgroud)
不幸的是我在编码过程中收到来自ffmpeg的以下错误消息:
[h264 @ 0x1012600]sps_id out of range
[h264 @ 0x1012600]non-existing SPS 0 referenced in buffering period
[h264 @ 0x1012600]sps_id out of range
[h264 @ 0x1012600]non-existing SPS 0 referenced in buffering period
[NULL @ 0x101d600]error, non monotone timestamps 13779431 >= …Run Code Online (Sandbox Code Playgroud) 我有 2 个要使用 ffmpeg 连接的视频文件
initial.mp4 视频:h264(高)(avc1 / 0x31637661)、yuv420p(tv)、720x720、1077 kb/s、15.98 fps、16 tbr、600 tbn、1200 tbc(默认)
Ending.mp4 视频:h264(高)(avc1 / 0x31637661),yuv420p(tv,bt470bg),720x720 [SAR 1:1 DAR 1:1],1287 kb/s,25 fps,25 tbr,25 kbt,2 (默认
video_instructions_with_ending.txt
file initial.mp4
file initial.mp4
file initial.mp4
file ending.mp4
Run Code Online (Sandbox Code Playgroud)
FFmpeg 命令
ffmpeg -f concat -i video_instructions_with_ending.txt -c copy output.mp4 -y
Run Code Online (Sandbox Code Playgroud)
output.mp4视频: h264 (High) (avc1 / 0x31637661), yuv420p(tv), 720x720, 27 kb/s, 0.43 fps, 48 tbr, 19200 tbn, 38400 tbc (default)
输出文件应该是 6 秒。但输出文件是 3 分 32 秒。
任何帮助将不胜感激
我已经使用了这个问题中显示的ffmpeg命令行来长时间完美地分割MKV文件.现在我有一些MP4文件,我想分开,起初它似乎工作,但在第一个之后的每个后续段都没有同步音频!几秒钟.
我试过强制关键帧(我在其他一些网站上发现的建议)并没有帮助.
我完全尝试了一个不同的程序(Avidemux)并且它能够以适当的输出分割文件,但它的速度慢了很多,使用ffmpeg需要花费3分钟而不到2秒.通过Avidemux,我能够确定我想要拆分的i-frame的确切位置,所以想想也许是同步问题我尝试了确切位置(即00:12:17.111而不是00:12:16或无论如何)但这也没有帮助.
ffmpeg是否有一个选项可以让它在分割时正确地将音频同步到视频?
如何在命令行中使用vlc将视频拆分或剪切成5分钟的卡盘?我知道如何手动操作我只是去查看 - >高级控件并按下记录以指示开始时间并再次按下记录以指示停止时间现在是否有办法在命令行中执行此操作?如果是这样我们还能让vlc每隔5分钟自动剪切/分割视频吗?
我已经使用ffmpeg创建视频的简短预览...
$length = $length_video/5;
$ffmpeg_path." -i ".$content." -vf select='lt(mod(t\,".$length.")\,1)',setpts=N/FRAME_RATE/TB -af aselect='lt(mod(t\,".$length.")\,1)',asetpts=N/SR/TB -an ".$content_new.";
Run Code Online (Sandbox Code Playgroud)
实际上,这将创建5秒。视频。问题是因为第一帧是从0-1秒提取的。
有机会跳过第一帧并提取下5个吗?
问题是因为视频介绍导致第一帧实际上无用