我已经研究ffmpeg几天了,一直未有突破,希望各位指导下。
我目前研究的结果,总结如下 我的ffmpeg是最新版本的2015年的。国外网站上找的。
第一步:由图片和mp3合成视频的命令
--------------
a: ffmpeg -r 0.5 -i 1.jpg -i 1.mp3 -vcodec mpeg4 -qscale 4 -s 640*480 1.avi
b: ffmpeg3 -r 1 -t 7 -i 1.jpg -i 1.mp3 -acodec copy -vcodec libx264 -crf 19 -coder 1 -flags +loop -cmp +chroma -
q:v 256 -y -r 25 -f avi -s 640x480 new.avi
-t 是MP3s时长, q:v 256 视频码率 -r 25 是帧速 -y 是如存在就覆盖
第二步:由avi 到mpg命令
------------------------
ffmpeg3 -i 1.avi -acodec libmp3lame -ac 1 -ar 22050 -r 25 -qscale 6 -y 1.mpg
第三步:合并命令,将多个mpg合成中间文件
-----------------------
copy /b "1.mpg"+"2.mpg" "result.mpge"
第四步:将中间文件转为最终格式
--------------------------------------
ffmpeg3 -i "result.mpge" -f avi "result.avi"
ffmpeg -i concat:"1.mpg|2.mpg" -vcodec copy -acodec copy result3.avi
ffmpeg3 -i 1.avi -i 2.avi -i 3.avi -filter_complex \
'[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
concat=n=3:v=1:a=2 [v] [a1] [a2]' \
-map '[v]' -map '[a1]' -map '[a2]' outputqq.avi
我尝试了多种 最终合并的方式 都有问题。
-----------------------------------------
我合成最理想的情况是, 合成的视频,有图像,但是从第二张开始 图像直接跳到最后一张;
还有一种是,第一张的时候,进度一下子到最后,然后开始第二张,第二张在播放器上是没有进度的。
我第一步合成的avi都是有图像,有声音的。只不过 a命令没有码率,没有帧速,转换后1.mpg 也无法和2.mpg合并,因为合并后,画面是直接跳到最后一张的。
b 命令有码率 有帧速 可能更好点。
最终问题:
无论我怎么调整,我都无法合成一个成功的视频。因为我合成最成功的也就是,画面完全无法和声音同步,要不就是没有进度条,画面倒是不跳了。
我无法确定是我合成的第一步 avi就有问题,还是 经过转换 合成时 参数不对。希望高手指导下!
不要复制粘贴百度 前十条结果,因为我已经尝试过了,我需要有用的指导!他们的我不知道怎么测试通过的,但是我测试了都是失败的。
ffmpeg -r 0.5 -i 1.jpg -i 1.mp3 -vcodec mpeg4 -qscale 4 -s 640*480 1.avi
ffmpeg -r 0.5 -i 2.jpg -i 2.mp3 -vcodec mpeg4 -qscale 4 -s 640*480 2.avi
ffmpeg -r 0.5 -i 3.jpg -i 3.mp3 -vcodec mpeg4 -qscale 4 -s 640*480 3.avi
ffmpeg -r 0.5 -i 4.jpg -i 4.mp3 -vcodec mpeg4 -qscale 4 -s 640*480 4.avi
ffmpeg -r 0.5 -i 5.jpg -i 5.mp3 -vcodec mpeg4 -qscale 4 -s 640*480 5.avi
ffmpeg3 -f concat -i 1.avi|2.avi|3.avi|4.avi|5.avi -c copy out.avi
ffmpeg3 -i concat:"1.avi|2.avi" -vcodec copy -acodec copy output.avi
ffmpeg3 -i 1.avi 1.mpg
ffmpeg3 -i 1.avi -ab 128 -acodec libmp3lame -ac 1 -ar 22050 -r 29.97 -qscale 6 -y 1.mpg
ffmpeg3 -i 2.avi -ab 128 -acodec libmp3lame -ac 1 -ar 22050 -r 29.97 -qscale 6 -y 2.mpg
copy /b "1.mpg"+"2.mpg" "result.mpge"
ffmpeg3 -i "result.mpge" -f mp4 "result.mp4"
ffmpeg -r 25 -i 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg
1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg -i 1.mp3 -vcodec mpeg4 -qscale 4 -s 640*480 1.avi
ffmpeg -r 25 -i 2.jpg 2.jpg 2.jpg 2.jpg 2.jpg 2.jpg 2.jpg 2.jpg 2.jpg 2.jpg 2.jpg 2.jpg 2.jpg 2.jpg 2.jpg 2.jpg
2.jpg 2.jpg 2.jpg 2.jpg 2.jpg 2.jpg 2.jpg 2.jpg 2.jpg -i 2.mp3 -vcodec mpeg4 -qscale 4 -s 640*480 2.avi
ffmpeg3 -i 1.avi -ab 128 -acodec libmp3lame -ac 1 -ar 22050 -r 25 -qscale 6 -y 1.mpg
ffmpeg3 -i 2.avi -ab 128 -acodec libmp3lame -ac 1 -ar 22050 -r 25 -qscale 6 -y 2.mpg
ffmpeg3 -r 25 -i 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg
1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg
1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg
1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg
1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg
1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg
1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg
1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg
1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg 1.jpg
1.jpg 1.jpg 1.jpg 1.jpg -i 1.mp3 -vcodec mpeg4 -qscale 4 -s 640*480 1.avi
ffmpeg -i 1.avi -i 2.avi -vcodec copy -acodec copy 0.avi
ffmpeg3.exe -i "1.avi" -f mpeg -qscale 0 -y -r 29.97 "1.avi.actemp"
ffmpeg3.exe -i "2.avi" -f mpeg -qscale 0 -y -r 29.97 "2.avi.actemp"
copy /b "1.avi.actemp"+"2.avi.actemp" "combine.avi.actemp" /y
ffmpeg.exe -i "combine.avi.actemp" -f mp4 -y "combine.mp4"
C:\Windows\assembly\GAC_MSIL\Microsoft.Office.Interop.PowerPoint\14.0.0.0__71e9bce111e9429c\
ffmpeg3 -r 0.5 -i 1.jpg -i 1.mp3 -vcodec mpeg4 -qscale 4 -s 640*480 1.avi
ffmpeg3 -r 0.5 -i 1.jpg -i 1.mp3 -vcodec mpeg4 -q:v -s 640*480 1.avi
ffmpeg3 -r 0.5 -i 1.jpg -i 1.mp3 -vcodec mpeg4 -q:v -f avi 1.avi
ffmpeg3 -r 0.5 -i 1.jpg -i 1.mp3 -vcodec mpeg4 -qscale 4 -ac 1 -ar 22050 -r 25 -s 640*480 1.avi
ffmpeg3 -r 25 -i 1.jpg -ar 22050 -ac 1 -i 1.mp3 -vcodec mpeg4 -qscale 4 -ac 1 -ar 22050 -r 25 -s 640*480
1.avi
ffmpeg -loop_input -r 1 -t 7 -i 1.jpg -i 音乐.mp3 -acodec copy -vcodec libx264 -crf 19 -coder 1 -flags +loop -cmp
+chroma -partitions +parti8x8+parti4x4+partp8x8+partb8x8 -me_method umh -subq 7 -me_range 16 -g 10 -keyint_min 1
-sc_threshold 40 -i_qfactor 0.71 -b_strategy 2 -qcomp 0.6 -qdiff 4 -bf 1 -refs 1 -directpred 3 -trellis 2 -flags2
+bpyramid+wpred+mixed_refs+dct8x8+fastpskip -r 1 -s 640x480 输出.flv
ffmpeg3 -r 1 -t 7 -i 1.jpg -i 1.mp3 -acodec copy -vcodec libx264 -crf 19 -coder 1 -flags +loop -cmp +chroma -
me_method umh -me_range 16 -g 10 -keyint_min 1 -sc_threshold 40 -i_qfactor 0.71 -b_strategy 2 -qcomp 0.6 -qdiff
4 -bf 1 -refs 1 -trellis 2 -flags2 +bpyramid+wpred+mixed_refs+dct8x8+fastpskip -r 1 -f avi -s 640x480 new.avi
ffmpeg3 -r 1 -t 7 -i 1.jpg -i 1.mp3 -acodec copy -vcodec libx264 -crf 19 -coder 1 -flags +loop -cmp +chroma -
q:v 256 -r 25 -f avi -s 640x480 new.avi
ffmpeg3 -r 1 -t 85 -i 2.jpg -i 2.mp3 -acodec copy -vcodec libx264 -crf 19 -coder 1 -flags +loop -cmp +chroma -
q:v 256 -r 25 -f avi -s 640x480 new2.avi
ffmpeg3 -i new.avi -acodec libmp3lame -ac 1 -ar 22050 -r 25 -qscale 6 -y 1.mpg
ffmpeg3 -i new2.avi -acodec libmp3lame -ac 1 -ar 22050 -r 25 -qscale 6 -y 2.mpg
----------------------
ffmpeg3 -i new.avi -acodec copy -vcodec libx264 -ac 1 -ar 22050 -r 25 -qscale 6 -y 1.mpg
ffmpeg3 -i new2.avi -acodec copy -vcodec libx264 -ac 1 -ar 22050 -r 25 -qscale 6 -y 2.mpg
copy /b "1.mpg"+"2.mpg" "result.mpge"
ffmpeg3 -i "result.mpge" -f avi "result.avi"
=================================================================================================================
================
ffmpeg3 -r 1 -t 7 -i 1.jpg -i 1.mp3 -acodec copy -vcodec libx264 -crf 19 -coder 1 -flags +loop -cmp +chroma -
q:v 256 -y -r 25 -f avi -s 640x480 new.avi
ffmpeg3 -r 1 -t 85 -i 2.jpg -i 2.mp3 -acodec copy -vcodec libx264 -crf 19 -coder 1 -flags +loop -cmp +chroma -
q:v 256 -y -r 25 -f avi -s 640x480 new2.avi
ffmpeg3 -r 1 -t 33 -i 3.jpg -i 3.mp3 -acodec copy -vcodec libx264 -crf 19 -coder 1 -flags +loop -cmp +chroma -
q:v 256 -y -r 25 -f avi -s 640x480 new3.avi
ffmpeg3 -r 1 -t 30 -i 4.jpg -i 4.mp3 -acodec copy -vcodec libx264 -crf 19 -coder 1 -flags +loop -cmp +chroma -
q:v 256 -y -r 25 -f avi -s 640x480 new4.avi
ffmpeg3 -r 1 -t 69 -i 5.jpg -i 5.mp3 -acodec copy -vcodec libx264 -crf 19 -coder 1 -flags +loop -cmp +chroma -
q:v 256 -y -r 25 -f avi -s 640x480 new5.avi
ffmpeg3 -i new.avi -acodec libmp3lame -ac 1 -ar 22050 -r 25 -qscale 6 1.mpg
ffmpeg3 -i new2.avi -acodec libmp3lame -ac 1 -ar 22050 -r 25 -qscale 6 2.mpg
ffmpeg3 -i new3.avi -acodec libmp3lame -ac 1 -ar 22050 -r 25 -qscale 6 3.mpg
ffmpeg3 -i new4.avi -acodec libmp3lame -ac 1 -ar 22050 -r 25 -qscale 6 4.mpg
ffmpeg3 -i new5.avi -acodec libmp3lame -ac 1 -ar 22050 -r 25 -qscale 6 5.mpg
copy /b "1.mpg"+"2.mpg"+"+3.mpg"+"4.mpg"+"5.mpg" "result.mpge"
copy /b "1.mpg"+"2.mpg" "result2.mpge"
ffmpeg3 -i "result.mpge" -f avi -y "result.avi"
copy /b "new.avi"+"new2.avi"+"+new3.avi"+"new4.avi"+"new5.avi" "result.avi"
ffmpeg3 -i "result.mpge" -f mp4 -y "result.mp4"
ffmpeg3 -i "result2.mpge" -f avi -y "result2.avi"
ffmpeg3 -i result2.avi -acodec libmp3lame -ac 1 -ar 22050 -r 25 -qscale 6 result2.mpg
copy /b "result2.mpg"+"3.mpg" "result3.mpge"
ffmpeg3 -i "result3.mpge" -f avi -y "result3.avi"
ffmpeg -i concat:"result2.mpg|3.mpg" -vcodec copy -acodec copy result3.avi
ffmpeg3 -i concat:"result2.mpg|3.mpg" -vcodec copy -acodec copy result3.avi
ffmpeg3 -i concat:"1.mpg|2.mpg|3.mpg|4.mpg|3.mpg" -vcodec copy -acodec copy result5.avi
ffmpeg3 -i concat:"1.avi|2.avi|3.avi|4.avi|5.avi" -vcodec copy -acodec copy result5.avi
ffmpeg -i concat:"1.mpg|2.mpg" -vcodec copy -acodec copy result3.avi
MPEG 1Payload
copy /b "1.mpg"+"2.mpg"+"3.mpg"+"4.mpg"+"5.mpg" "result5.mpge"
ffmpeg -i concat:"result5.mpge" -vcodec copy -acodec copy result5.avi --后两张 顺序正确
ffmpeg3 -i concat:"1.avi|2.mpg" -vcodec copy -acodec copy result22.avi --错误的。
ffmpeg3 -i 1.avi -vcodec copy -an 11.avi
ffmpeg -i 11.avi -i 1.mp3 -vcodec copy -acodec copy 0.avi
ffmpeg3 -i 1.avi -vcodec copy -an 11.avi
ffmpeg3 -i 2.avi -vcodec copy -an 22.avi
ffmpeg3 -i 3.avi -vcodec copy -an 33.avi
ffmpeg -i 11.avi -i 1.mp3 -vcodec copy -acodec copy 1a.avi
ffmpeg -i 22.avi -i 2.mp3 -vcodec copy -acodec copy 2a.avi
ffmpeg -i 33.avi -i 3.mp3 -vcodec copy -acodec copy 3a.avi
ffmpeg -i 33.avi -i 3.mp3 -vcodec copy -acodec copy 3a.avi
ffmpeg -i 1a.avi -i 2a.avi -vcodec copy -acodec copy a33.avi
ffmpeg3.exe -i "output.mp4" -f mpeg -qscale 0 -y -r 25 "1.mp4.actemp"
ffmpeg3.exe -i "output2.mp4" -f mpeg -qscale 0 -y -r 25 "2.mp4.actemp"
copy /b "1.mp4.actemp"+"2.mp4.actemp" "combine.mp4.actemp" /y
ffmpeg3.exe -i "combine.mp4.actemp" -f mp4 -y "combine.avi"
ffmpeg3 -threads 2 -y -r 25 -i 1.jpg -i 1.mp3 -absf aac_adtstoasc output.mp4
ffmpeg3 -threads 2 -y -r 25 -i 2.jpg -i 2.mp3 -absf aac_adtstoasc output2.mp4
ffmpeg3 -i 1.avi -i 2.avi -i 3.avi -filter_complex \
'[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
concat=n=3:v=1:a=2 [v] [a1] [a2]' \
-map '[v]' -map '[a1]' -map '[a2]' outputqq.avi
这是命令研究过程,您可以参考下。看看我哪里出问题了。
我的得到最新有用的帮助信息是,这是个变帧速视频合并问题,他说比较复杂,要源码需要付钱。
---------201504091541 追加
我将r 参数设成 1/ 声音时长 如 1/180 就是 180代表180秒,也就是三分钟的声音时长。
声音时长我用ffmpeg获取。
看看你的合成后的视频大小 ,是否和原来的加起来差不多。 如果是,很可能是时间截不对
怎么调整时间戳呢,我用的命令行,ffmpeg是用c语言写的,我看不懂。
--新命令 效果很好。
ffmpeg -loop 1 -i F:\zt\201563092554\pic\1.jpg -i F:\zt\201563092554\1.wav -loop 0 -shortest -ac 2 -ar 22050 -vol 100 -ab 128 -c:a libmp3lame -q:v 4 -vcodec mpeg4 -y -s 1920*1080 -r 30 F:\zt\201563092554\video\1.avi
-loop 1
shortest 是让视频和音频时间保持一致
-loop 是循环
第一个loop是input
第二个loop是output
都是控制图片的
loop 0的意思就是无限循环
无限循环图片
-loop 1 呢?
这个我不确定,我推测是指input 一张图片
官方文档写的很不清楚
这是后来一个同事提供的新的命令,听说效果挺好的,而且可以单张图片循环读入;
@荆棘人: 老兄 如果一个mp3 长3分钟,你最后合成视频的过程用了多久?我这发现合成一个视频消耗的时间很长啊 怎么解决呢?
@scott_zhou:
@scott_zhou: 我最后合成视频的时间是音频时间的不到1/3.
比如音频是一个小时,我最快17分钟都合成完毕了。