作者bedroom0204 (khkh)
看板R_Language
標題[問題] 透過animation執行ffmpeg圖片合成影片
時間Thu Apr 14 13:46:13 2016
[問題類型]:
程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
[軟體熟悉度]:
新手(沒寫過程式,R 是我的第一次)
[問題敘述]:
我試圖透過ffmpeg將圖片組合成影片,
如果不經過R,直接在ffmpeg輸入:
ffmpeg -r 25 -f image2 -i "D:\new\test1(%d).jpg" -vcodec libx264
video2.mp4
可以成功合併成影片檔。
如果要在R裡,可能就必須透過animation這個package,
oopts = ani.options(interval = 0.04, ani.width=1920, ani.height=1020,
ffmpeg = "C:/ffmpeg-20160407-git-0c94906-win32-static/bin/ffmpeg.exe")
saveVideo(
for(k in 1:1000)"D:\\MRTTT\\new\\test1(%d).jpg",
video.name ="D:\\MRTTT\\new\\newvid.mp4",
ffmpeg = ani.options("ffmpeg"),
other.opts = "-b 3000k")
但是,結果只能轉出白色畫面沒秒數影片檔,
我判斷是讀取圖片的程式碼寫錯(
上述黃色處)。
另外也想要改成libx264的方式編碼,檔案比較小,
也不知道怎麼改比較好。
如果說用
system()開啟,如下:
system("C:\\ffmpeg-20160407-git-0c94906-win32-static\\bin\\ffmpeg.exe")
又會出現Warning message:
running command
'C:\Users\KH\Desktop\ffmpeg-20160407-git-0c94906-win32-static\bin\ffmpeg.exe'
had status 1
也不知道是甚麼原因。
麻煩解答了。
[程式範例]:
如上
[關鍵字]:
ffmpeg, animation
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.136.56.90
※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1460612779.A.62B.html
→ andrew43: 你saveVideo()很怪。第一個引數是在R畫東西才對。 04/14 14:05
→ andrew43: 另外,我認為不要一定要用animation package。 04/14 14:05
→ andrew43: 我個人會用for loop創造一堆png file再呼叫ffmpeg。 04/14 14:06
→ andrew43: 這樣會單純一點。 04/14 14:07
→ andrew43: 其實animation package內部做的事情和你做出一堆png再 04/14 14:11
→ andrew43: 調ffmpeg是一樣的。如果你必須用該package,要請你 04/14 14:12
→ andrew43: 給一個例子重現,不然不知道你卡在哪。 04/14 14:13
→ celestialgod: 怎麼看都覺得你的程式問題很大... 04/14 14:41
→ celestialgod: 你如果只要用system去做就不用用到animation了 04/14 14:42
→ celestialgod: saveVideo用的應該是R畫出來的圖 04/14 14:43
→ celestialgod: 如果要用外面的jpg,建議直接用system 04/14 14:44
→ celestialgod: 不然就要讀入再用IMAGE重現 04/14 14:44
→ celestialgod: 至於你system出錯的原因 應該是沒有input output 04/14 14:45
→ celestialgod: 正常情況下直接呼叫ffmpeg是會跳錯 04/14 14:45
→ bedroom0204: 我也是用for建立一堆圖片,再把他們合成影片。但是自 04/15 14:18
→ bedroom0204: 己沒寫過怎麼操控外部檔案(也沒程式經驗),所以syste 04/15 14:18
→ bedroom0204: m不太清楚怎麼用,才想說用package。那我明白了,去 04/15 14:18
→ bedroom0204: 研究一下怎麼直接控制ffmpeg。 04/15 14:18
→ bedroom0204: 謝謝回答! 04/15 14:18
→ damody: 這問題沒有發揮到R的強項 用shell script就可以了 04/16 09:49