FFmpeg 圖片合成影片
FFmpeg將多張圖片合成影片,影片的總幀數:總幀數 = duration * fps ,duration是我們設定的影片的長度,fps是影片每秒的幀數。
對於圖片檔案是沒有幀率的概念,FFmpeg預設情況下一秒25張圖片成像合成影片。因此FFmpeg提供-framerate還有-r設定輸入的影片幀率,-r 8說明每秒鐘將8張圖片合成影片。設定了輸入幀率之後,如果輸出幀率沒有指定,輸出幀率將跟輸入幀率保持一致
場景
將bmp圖片合成影片
ffmpeg -r 8 -i ./RecordTemp/%d.bmp -vcodec mpeg4 test.mp4
ffmpeg -r 8 -i %d.bmp -vcodec libx264 test.mp4
其中-r 和-framerate 都是代表幀率(這個屬性屬於圖片的屬性,需要放在圖片之前)
1)控制影片幀率
-r fps 幀率,可以指定兩個幀率,輸入幀率,輸出幀率;
輸入幀率:-i之前,設定讀入幀率,比如 -r 0.5 ,也就是說1秒要播0.5個圖片,那麼一個圖也就是要播2s;
輸出頻率:-i之後,真正的輸出影片播放幀率,不寫話,是預設和輸入頻率一樣。比如設 -r 30 ,對應上面的設定,一個圖播2s,那麼輸出檔案播放時,這2s內,都是這張圖,但是播放了60幀
2)圖片合成影片,然後影片拆分成圖片數量對應不上
指令如下:
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之後指定的是輸出影片幀率,輸入幀率預設情況下是25,所以拆分之後跟原始圖片數量對應不上
解決方案:ffmpeg -r 20 -i "D:/ffmpeg/RecordTemp/%06d.bmp" -vcodec mpeg4 D:/ffmpeg/video5.avi
3)輸出的影片畫面質量下降,原因:影響影片質量的最重要因素是影片位元速率,輸出影片的位元速率是預設的,只有200kbits/s
解決方案:修改預設的影片位元速率屬性-b:v
ffmpeg -r 20 -i "D:/ffmpeg/RecordTemp/%06d.bmp" -vcodec mpeg4 -b:v 6000k D:/ffmpeg/video5.avi
注意:當不清楚輸出位元速率應該設定為多少,可以指定一個比較大的數字
4)指定從拿一張圖片開始合成影片
ffmpeg -start_number 500 -i pano%d.jpg video.avi
備註下
-t duration
用做輸入選項(在-i之前),是限制讀取輸入檔案的的時長;
用做輸出選項(before an output url),超過這個時間停止寫輸出檔案;
比如:迴圈讀取一個輸入檔案時(-loop 1),當到時間就會停止輸出,生成一個duration時長的影片。但是如果沒有迴圈選項,而且輸入檔案短於這個時長時,就會隨著輸入檔案結束就結束,生成影片,影片時長小於duration。所以我們可以看出 -t 並不僅僅是輸出檔案時長。
當用“管道”時,也不太一樣,管道讀了之後,裡面內容就沒了,所以沒持續的輸入,這個-loop,-t 都是“不起作用的”,除非管道一直有內容。
ffmpeg -threads2 -y -r 10 -i /tmpdir/image%04d.jpg -i audio.mp3 -absf aac_adtstoasc output.mp4
引數的解釋含義:
-threads 2 以兩個執行緒進行執行, 加快處理的速度。
-y 對輸出檔案進行覆蓋
-r 10 fps設定為10幀/秒(不同位置有不同含義,後面再解釋)
-i /tmpdir/image%04d.jpg 輸入圖片檔案,圖片檔案儲存為 image0001.jpg image0002.jpg ….
-i audio.mp3 輸入的音訊檔案
-absf aac_adtstoasc 將結果的音訊格式轉為faac格式時需要這個選項。將音訊格式轉為faac是因為在iphone上某些音訊格式的影片無法播放,例如mp3. 但faac格式的音訊的影片在iphone上可以播放。-absf 的意思是設定一個bitstream filter進行某些轉換。可以用ffmpeg -bsfs 檢視所有支援的bitstream filter。 bitstream filter和 aac_adtstoasc的具體含義我也說不上。但是如果不用這個選項又會導致轉換失敗。
記錄
bmp轉換失敗:
原因:提供的bmp圖片檔案,實際上是png格式的圖片檔案,經過批處理修改字尾名稱,解決問題
排查過程:
1)透過Windows畫圖工具,重新儲存成bmp檔案,合成影片成功
2)透過Windows畫圖工具,重新另存為jpg檔案,合成影片成功
說明是檔案格式的問題
登入後複製
Microsoft Windows [版本 10.0.18363.1316]
(c) 2019 Microsoft Corporation。保留所有權利。
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!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69997029/viewspace-2773600/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 視訊提取圖片/圖片合成視訊ffmpeg(二十)
- FFmpeg前端影片合成實踐前端
- Java ffmpeg 實現影片加文字/圖片水印功能Java
- PHP 圖片、文字合成PHP
- golang 合成的圖片Golang
- 圖片合成工具類(BitmapMergeUtils)
- PaddlePaddle : AI摳圖及圖片合成AI
- PHP 圖片合成(2合1)PHP
- PhotosBlender for Mac(圖片合成軟體)Mac
- 影片直播系統原始碼,C語言實現圖片合成功能原始碼C語言
- SciTech-AV-Video-DVP(Digital Video Processing)-CV/CG-ffmpeg-剪下/格式轉換 & 影片拆幀圖 & 圖片合成影片 & 拼接 & time duration 格式 & 時間 起始點 時長 及 幀數設定IDEGit
- canvas實現二維碼和圖片合成Canvas
- Mac上圖片合成軟體哪個好?Mac
- JavaScript中的圖片處理與合成(四)JavaScript
- JavaScript中的圖片處理與合成(一)JavaScript
- JavaScript中的圖片處理與合成(二)JavaScript
- ImageCombiner - Java服務端圖片合成工具,好用!Java服務端
- ffmpeg合併影片
- ffmpeg實戰-音視訊合成案例
- FFmpeg程式碼實現視訊轉jpg圖片
- ffmpeg-圖片壓縮旋轉等處理
- 利用Python講多張圖片合成PDF檔案Python
- markdown插入圖片、音訊影片音訊
- 如何用ffmpeg製作包含背景圖的音訊影片?音訊
- 無需下載軟體怎麼將多張圖片組合成一張圖片
- 在python中將多張圖片合成為視訊Python
- 如何將圖片轉換成影片?
- js擷取影片的封面圖片JS
- ffmpeg用法-mp4檔案合成,切割功能
- FFmpeg 影片處理入門教程
- ffmpeg載圖
- 影片直播原始碼,載入gif圖片原始碼
- 圖片影片檢視軟體ApolloOne MacMac
- 大量影片批次新增背景圖片的操作
- FFMpeg 常用命令格式轉換,視訊合成
- 一對一原始碼,java 圖片之間相互巢狀,合成原始碼Java巢狀
- 使用pyinstaller + tkinter打包圖形介面完成opencv+ffmpeg處理影片水印OpenCV
- 影片直播原始碼,圖片選擇器ImagePicker原始碼