日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

android bmp合成mpeg4,FFmpeg 图片合成视频

發(fā)布時(shí)間:2023/12/8 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android bmp合成mpeg4,FFmpeg 图片合成视频 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

知識(shí)準(zhǔn)備

FFmpeg將多張圖片合成視頻,視頻的總幀數(shù):總幀數(shù) = duration * fps ,duration是我們?cè)O(shè)定的視頻的長(zhǎng)度,fps是視頻每秒的幀數(shù)。

對(duì)于圖片文件是沒(méi)有幀率的概念,FFmpeg默認(rèn)情況下一秒25張圖片成像合成視頻。因此FFmpeg提供-framerate還有-r設(shè)置輸入的視頻幀率,-r 8說(shuō)明每秒鐘將8張圖片合成視頻。設(shè)置了輸入幀率之后,如果輸出幀率沒(méi)有指定,輸出幀率將跟輸入幀率保持一致

場(chǎng)景

將bmp圖片合成視頻

ffmpeg -r 8 -i ./RecordTemp/%d.bmp? -vcodec mpeg4 test.mp4

ffmpeg -r 8 -i? %d.bmp -vcodec libx264 test.mp4

其中-r 和-framerate 都是代表幀率(這個(gè)屬性屬于圖片的屬性,需要放在圖片之前)

1)控制視頻幀率

-r fps 幀率,可以指定兩個(gè)幀率,輸入幀率,輸出幀率;

輸入幀率:-i之前,設(shè)定讀入幀率,比如 -r 0.5 ,也就是說(shuō)1秒要播0.5個(gè)圖片,那么一個(gè)圖也就是要播2s;

輸出頻率:-i之后,真正的輸出視頻播放幀率,不寫(xiě)話,是默認(rèn)和輸入頻率一樣。比如設(shè) -r 30 ,對(duì)應(yīng)上面的設(shè)定,一個(gè)圖播2s,那么輸出文件播放時(shí),這2s內(nèi),都是這張圖,但是播放了60幀

2)圖片合成視頻,然后視頻拆分成圖片數(shù)量對(duì)應(yīng)不上

指令如下:

ffmpeg? -i "D:/ffmpeg/RecordTemp/%06d.bmp" -vcodec mpeg4 -r 20 D:/ffmpeg/video5.avi

ffmpeg -i video5.avi? -f image2 image-%07d.png

解答:-r 20 放在-i之后指定的是輸出視頻幀率,輸入幀率默認(rèn)情況下是25,所以拆分之后跟原始圖片數(shù)量對(duì)應(yīng)不上

解決方案:ffmpeg -r 20 -i "D:/ffmpeg/RecordTemp/%06d.bmp" -vcodec mpeg4? D:/ffmpeg/video5.avi

3)輸出的視頻畫(huà)面質(zhì)量下降,原因:影響視頻質(zhì)量的最重要因素是視頻碼率,輸出視頻的碼率是默認(rèn)的,只有200kbits/s

解決方案:修改默認(rèn)的視頻碼率屬性-b:v

ffmpeg -r 20? -i "D:/ffmpeg/RecordTemp/%06d.bmp" -vcodec mpeg4 -b:v 6000k D:/ffmpeg/video5.avi

注意:當(dāng)不清楚輸出碼率應(yīng)該設(shè)置為多少,可以指定一個(gè)比較大的數(shù)字

4)指定從拿一張圖片開(kāi)始合成視頻

ffmpeg -start_number 500 -i pano%d.jpg video.avi

備注下

-t duration

用做輸入選項(xiàng)(在-i之前),是限制讀取輸入文件的的時(shí)長(zhǎng);

用做輸出選項(xiàng)(before an output url),超過(guò)這個(gè)時(shí)間停止寫(xiě)輸出文件;

比如:循環(huán)讀取一個(gè)輸入文件時(shí)(-loop 1),當(dāng)?shù)綍r(shí)間就會(huì)停止輸出,生成一個(gè)duration時(shí)長(zhǎng)的視頻。但是如果沒(méi)有循環(huán)選項(xiàng),而且輸入文件短于這個(gè)時(shí)長(zhǎng)時(shí),就會(huì)隨著輸入文件結(jié)束就結(jié)束,生成視頻,視頻時(shí)長(zhǎng)小于duration。所以我們可以看出 -t 并不僅僅是輸出文件時(shí)長(zhǎng)。

當(dāng)用“管道”時(shí),也不太一樣,管道讀了之后,里面內(nèi)容就沒(méi)了,所以沒(méi)持續(xù)的輸入,這個(gè)-loop,-t 都是“不起作用的”,除非管道一直有內(nèi)容。

ffmpeg -threads2 -y -r 10 -i /tmpdir/image%04d.jpg -i audio.mp3 -absf aac_adtstoasc output.mp4

參數(shù)的解釋含義:

-threads 2 以兩個(gè)線程進(jìn)行運(yùn)行, 加快處理的速度。

-y 對(duì)輸出文件進(jìn)行覆蓋

-r 10 fps設(shè)置為10幀/秒(不同位置有不同含義,后面再解釋)

-i /tmpdir/image%04d.jpg 輸入圖片文件,圖片文件保存為 image0001.jpg image0002.jpg ….

-i audio.mp3 輸入的音頻文件

-absf aac_adtstoasc 將結(jié)果的音頻格式轉(zhuǎn)為faac格式時(shí)需要這個(gè)選項(xiàng)。將音頻格式轉(zhuǎn)為faac是因?yàn)樵趇phone上某些音頻格式的視頻無(wú)法播放,例如mp3. 但faac格式的音頻的視頻在iphone上可以播放。-absf 的意思是設(shè)置一個(gè)bitstream filter進(jìn)行某些轉(zhuǎn)換。可以用ffmpeg -bsfs 查看所有支持的bitstream filter。 bitstream filter和 aac_adtstoasc的具體含義我也說(shuō)不上。但是如果不用這個(gè)選項(xiàng)又會(huì)導(dǎo)致轉(zhuǎn)換失敗。

記錄

bmp轉(zhuǎn)換失敗:

原因:提供的bmp圖片文件,實(shí)際上是png格式的圖片文件,經(jīng)過(guò)批處理修改后綴名稱,解決問(wèn)題

排查過(guò)程:

1)通過(guò)Windows畫(huà)圖工具,重新保存成bmp文件,合成視頻成功

2)通過(guò)Windows畫(huà)圖工具,重新另存為jpg文件,合成視頻成功

說(shuō)明是文件格式的問(wèn)題Microsoft?Windows?[版本?10.0.18363.1316]

(c)?2019?Microsoft?Corporation。保留所有權(quán)利。

F:\test\test_old\store>ffmpeg?-i?test_%d.bmp?-vcodec?mpeg4?test.avi

ffmpeg?version?git-2020-08-16-5df9724?Copyright?(c)?2000-2020?the?FFmpeg?developers

built?with?gcc?10.2.1?(GCC)?20200805

configuration:?--enable-gpl?--enable-version3?--enable-sdl2?--enable-fontconfig?--enable-gnutls?--enable-iconv?--enable-libass?--enable-libdav1d?--enable-libbluray?--enable-libfreetype?--enable-libmp3lame?--enable-libopencore-amrnb?--enable-libopencore-amrwb?--enable-libopenjpeg?--enable-libopus?--enable-libshine?--enable-libsnappy?--enable-libsoxr?--enable-libsrt?--enable-libtheora?--enable-libtwolame?--enable-libvpx?--enable-libwavpack?--enable-libwebp?--enable-libx264?--enable-libx265?--enable-libxml2?--enable-libzimg?--enable-lzma?--enable-zlib?--enable-gmp?--enable-libvidstab?--enable-libvmaf?--enable-libvorbis?--enable-libvo-amrwbenc?--enable-libmysofa?--enable-libspeex?--enable-libxvid?--enable-libaom?--enable-libgsm?--enable-librav1e?--enable-libsvtav1?--disable-w32threads?--enable-libmfx?--enable-ffnvcodec?--enable-cuda-llvm?--enable-cuvid?--enable-d3d11va?--enable-nvenc?--enable-nvdec?--enable-dxva2?--enable-avisynth?--enable-libopenmpt?--enable-amf

libavutil??????56.?58.100?/?56.?58.100

libavcodec?????58.100.100?/?58.100.100

libavformat????58.?51.100?/?58.?51.100

libavdevice????58.?11.101?/?58.?11.101

libavfilter?????7.?87.100?/??7.?87.100

libswscale??????5.??8.100?/??5.??8.100

libswresample???3.??8.100?/??3.??8.100

libpostproc????55.??8.100?/?55.??8.100

[bmp?@?0000024bbbb5fd00]?bad?magic?number

Last?message?repeated?7?times

[image2?@?0000024bbbb5ddc0]?decoding?for?stream?0?failed

[image2?@?0000024bbbb5ddc0]?Could?not?find?codec?parameters?for?stream?0?(Video:?bmp,?none):?unspecified?size

Consider?increasing?the?value?for?the?'analyzeduration'?(0)?and?'probesize'?(5000000)?options

Input?#0,?image2,?from?'test_%d.bmp':

Duration:?00:00:00.32,?start:?0.000000,?bitrate:?N/A

Stream?#0:0:?Video:?bmp,?none,?25?fps,?25?tbr,?25?tbn,?25?tbc

Stream?mapping:

Stream?#0:0?->?#0:0?(bmp?(native)?->?mpeg4?(native))

Press?[q]?to?stop,?[?]?for?help

[bmp?@?0000024bbbb60500]?bad?magic?number

Error?while?decoding?stream?#0:0:?Invalid?data?found?when?processing?input

[bmp?@?0000024bbbb60500]?bad?magic?number

Error?while?decoding?stream?#0:0:?Invalid?data?found?when?processing?input

[bmp?@?0000024bbbb60500]?bad?magic?number

Error?while?decoding?stream?#0:0:?Invalid?data?found?when?processing?input

[bmp?@?0000024bbbb60500]?bad?magic?number

Error?while?decoding?stream?#0:0:?Invalid?data?found?when?processing?input

[bmp?@?0000024bbbb60500]?bad?magic?number

Error?while?decoding?stream?#0:0:?Invalid?data?found?when?processing?input

[bmp?@?0000024bbbb60500]?bad?magic?number

Error?while?decoding?stream?#0:0:?Invalid?data?found?when?processing?input

[bmp?@?0000024bbbb60500]?bad?magic?number

Error?while?decoding?stream?#0:0:?Invalid?data?found?when?processing?input

[bmp?@?0000024bbbb60500]?bad?magic?number

Error?while?decoding?stream?#0:0:?Invalid?data?found?when?processing?input

Cannot?determine?format?of?input?stream?0:0?after?EOF

Error?marking?filters?as?finished

Conversion?failed!

總結(jié)

以上是生活随笔為你收集整理的android bmp合成mpeg4,FFmpeg 图片合成视频的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。