我正在使用 FFmpeg 在我的 android 应用程序中连接不同编解码器的视频文件。我阅读了 FFmpeg 文档并尝试了以下操作。
1. ffmpeg -i "concat:input1.mpg|input2.mpg" -c copy output.mp4
(仅适用于 mpg 文件)
2. ffmpeg -i 1.mp4 -c copy -bsf dump_extra 1.ts
ffmpeg -i 2.mp4 -c copy -bsf dump_extra 2.ts
ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4 (works for mp4 files)
我尝试了 3gp 文件的两种方法,但它在流过滤器中引发错误。第二种方法将 .ts 文件存储在不应该完成的设备中,而且我失去了视频的质量。
当我用谷歌搜索它时,我发现 FFmpeg 提供了一种使用不同编解码器连接文件的方法。所以我在一个步骤中尝试了以下命令,而不将文件存储在设备中。
fmpeg -i 1.mp4 -i 2.3gp -i 3.mpg -filter_complex '[0:0] [0:1] [1:0] [1:1]
[2:0] [2:1] concat=n=3:v=1:a=1 [a] [v] ' -map '[a]' -map '[v]' -c copy output.mp4
它抛出以下异常:
ffmpeg version 1.2.1 Copyright (c) 2000-2013 the FFmpeg developers
built on Jun 25 2013 20:34:51 with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5)
configuration:
libavutil 52. 18.100 / 52. 18.100
libavcodec 54. 92.100 / 54. 92.100
libavformat 54. 63.104 / 54. 63.104
libavdevice 54. 3.103 / 54. 3.103
libavfilter 3. 42.103 / 3. 42.103
libswscale 2. 2.100 / 2. 2.100
libswresample 0. 17.102 / 0. 17.102
F.mp4: No such file or directory
tsk@tsk:~/Android/Backups/android-ffmpeg-x264/Project/jni$ ffmpeg -i 1.mp4 -i 2.mp4 -filter_complex '[0:1] [0:0] [1:1] [1:0] concat=n=2:v=1:a=1 [v] [a]' -map '[v]' -map '[a]' output.mp4
ffmpeg version 1.2.1 Copyright (c) 2000-2013 the FFmpeg developers
built on Jun 25 2013 20:34:51 with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5)
configuration:
libavutil 52. 18.100 / 52. 18.100
libavcodec 54. 92.100 / 54. 92.100
libavformat 54. 63.104 / 54. 63.104
libavdevice 54. 3.103 / 54. 3.103
libavfilter 3. 42.103 / 3. 42.103
libswscale 2. 2.100 / 2. 2.100
libswresample 0. 17.102 / 0. 17.102
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '1.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: mp41
creation_time : 1970-01-01 00:00:00
Duration: 00:00:04.04, start: 0.000000, bitrate: 1457 kb/s
Stream #0:0(und): Video: mpeg4 (Simple Profile) (mp4v / 0x7634706D), yuv420p, 640x480 [SAR 1:1 DAR 4:3], 1454 kb/s, SAR 349:320 DAR 349:240, 25 fps, 25 tbr, 25 tbn, 25 tbc
Metadata:
creation_time : 1970-01-01 00:00:00
handler_name : VideoHandler
Input #1, mov,mp4,m4a,3gp,3g2,mj2, from '2.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: mp41
creation_time : 1970-01-01 00:00:00
Duration: 00:00:04.04, start: 0.000000, bitrate: 1498 kb/s
Stream #1:0(und): Video: mpeg4 (Simple Profile) (mp4v / 0x7634706D), yuv420p, 640x480 [SAR 1:1 DAR 4:3], 1495 kb/s, SAR 349:320 DAR 349:240, 25 fps, 25 tbr, 25 tbn, 25 tbc
Metadata:
creation_time : 1970-01-01 00:00:00
handler_name : VideoHandler
Stream specifier ':1' in filtergraph description [0:1] [0:0] [1:1] [1:0] concat=n=2:v=1:a=1 [v] [a] matches no streams.
我用谷歌搜索但还没有找到解决方案。
任何帮助表示赞赏。