ffmpeg命令将不同类型和分辨率的视频连接成1个视频,可以在android中播放[重复]

Posted

技术标签:

【中文标题】ffmpeg命令将不同类型和分辨率的视频连接成1个视频,可以在android中播放[重复]【英文标题】:ffmpeg commands to concatenate different type and resolution videos into 1 video and can be played in android [duplicate] 【发布时间】:2013-08-11 01:16:28 【问题描述】:

我想连接 4 个不同分辨率的 4 个不同视频并输入 1 个可以在 android 中播放的视频。我正在使用https://github.com/guardianproject/android-ffmpeg在android上移植的ffmpeg

所以我有这 4 种不同类型的视频 1)

./ffmpeg -i 1.mp4 
Video: h264 (High), yuv420p, 1920x1080, 16959 kb/s, 29.85 fps, 90k tbr, 90k tbn, 180k tbc
Audio: aac, 48000 Hz, stereo, s16, 106 kb/s

2)

ffmpeg -i 2.mp4
Video: h264 (Constrained Baseline), yuv420p, 640x480, 3102 kb/s, 29.99 fps, 90k tbr, 90k tbn, 180k tbc
Audio: aac, 48000 Hz, stereo, s16, 93 kb/s

3)

ffmpeg -i 3.3gp
Video: h263, yuv420p, 1408x1152 [PAR 12:11 DAR 4:3], 2920 kb/s, 15 fps, 15 tbr, 15360 tbn, 29.97 tbc
Audio: amrnb, 8000 Hz, 1 channels, flt, 12 kb/s

4)

ffmpeg -i 4.3gp
Video: h264 (High), yuv420p, 352x288 [PAR 12:11 DAR 4:3], 216 kb/s, 24 fps, 24 tbr, 24 tbn, 48 tbc

音频:aac,44100 Hz,立体声,s16,92 kb/s

所以我使用以下命令将它们转换为 mpegs

./ffmpeg -i 1.mp4 -c:v libx264 -vf scale=1920:1080 -r 60 -c:a aac -ar 48000 -b:a 160k -strict experimental -f mpegts 1.ts
./ffmpeg -i 2.mp4 -c:v libx264 -vf scale=1920:1080 -r 60 -c:a aac -ar 48000 -b:a 160k -strict experimental -f mpegts 2.ts
./ffmpeg -i 3.3gp -c:v libx264 -vf scale=1920:1080 -r 60 -c:a aac -ar 48000 -b:a 160k -strict experimental -f mpegts 3.ts
./ffmpeg -i 4.3gp -c:v libx264 -vf scale=1920:1080 -r 60 -c:a aac -ar 48000 -b:a 160k -strict experimental -f mpegts 4.ts

然后将 .ts 文件连接到 f.ts 中,然后使用它创建最终的 .mp4 文件

cat 1.ts 2.ts 3.ts 4.ts > f.ts
./ffmpeg -i f.ts -c copy -bsf:a aac_adtstoasc output.mp4

但我的 f.ts 似乎也不能在 Linux 上的 VLC 中正确播放,它播放前 2 个 mp4 的视频 + 音频,它只播放最后一个 .3gp 的音频。(对于 output.mp4 也一样)你能帮我吗弄清楚我错过了什么?

提前致谢

【问题讨论】:

superuser 上的这个答案对我有用。您需要知道您尝试连接的所有视频文件的最高分辨率。一旦知道了,应该很快! 【参考方案1】:

您可以使用concat将所有视频转换为单一格式后一个一个附加。

您还可以使用以下命令将不同格式的视频转换为一种格式:

./ffmpeg -i 1.mp4 -acodec libvo_aacenc -vcodec libx264 -s 1920x1080 -r 60 -strict experimental 1.mp4

将所有内容转换为mp4,然后按照上面链接中的说明进行操作。这将使您能够将所有视频加入到一个文件中。

【讨论】:

Concat demuxer 对我来说非常有用!生成的视频只能在 smplayer (MPlayer2 2.0-701-gd4c5b7f-2ubuntu2) 和 ffplay (N-78744-gbc7beb6,本地编译) 上播放; VLC 2.1.6 在文件开头停止更新视频图像,搜索没有帮助。这是我运行的:=== ffmpeg -f concat -i file-list.txt -c copy output.mp4 === 输入文件仅在帧大小上有所不同(相同的比特率、编解码器设置等)。

以上是关于ffmpeg命令将不同类型和分辨率的视频连接成1个视频,可以在android中播放[重复]的主要内容,如果未能解决你的问题,请参考以下文章

基于FFmpeg的视频播放器之五:使用SDL2渲染yuv420p

更改视频分辨率 ffmpeg

ffmpeg concat demuxer 在加入视频时冻结我的视频帧

H264编码系列之ffmpeg和x264码率控制分析

FFmpeg 命令行工具ffmpeg

FFMPEG基本操作命令指南