2013-05-01 30 views
21

我試圖用avconv做出一堆PNG年代到視頻,巴新的編號就像filename_<number>進行視頻,所以我通常只使用命令:avconv:從圖像的一個子集

avconv -r 10 -i filename_%d.png -b:v 1000k test.mp4

我現在想實現從文件filename_8的一個子集的視頻 - filename_50可以說,所以我已將這些文件複製到一個新的目錄,並嘗試同樣的命令,但現在我得到的錯誤:

filename_%d.png: No such file or directory 

我保證這是因爲編號不是從1開始的?

我該如何做到這一點?

+0

http://superuser.com/questions/624567/ffmpeg-create-a-video-from-images – 2016-05-27 07:58:04

回答

28
avconv -r 10 -start_number 8 -i filename_%d.png -b:v 1000k test.mp4 

您需要的avconv-start_number選擇最近的9.x版本;它不在版本0.8.x中。或者,您可以使用最新版本的ffmpeg。或者將文件重命名爲以0到4之間的數字開頭,因爲它會默認檢查這些名稱。

+1

注意,在一些版本(9.16我)這個選項被忽略。 'avconv'在這種情況下不一定會報告錯誤,因爲該選項可以被解釋爲其他命令行修飾符的一部分。 – anol 2014-08-25 00:30:46

+0

'avconv -r 10 -start_number 5 -i tt_img_0%04d.jpg -b:v 1000k out.mp4'在我的情況下不起作用:「沒有這樣的文件或目錄」,儘管文件存在從'tt_img_00005.jpg'開始。 – 2017-03-30 09:23:58

+0

'mencoder「mf://*.jpg」-mf fps = 10 -o test.avi -ovc lavc -lavcopts vcodec = msmpeg4v2:vbitrate = 800'完美地完成了這個技巧。 – 2017-03-30 09:35:19

6

您可以將文件與cat連接,然後使用image2pipe demuxer在avconv中讀取它們。像cat filename* | avconv -f image2pipe -i - ...

5

檢查了這一點;根據ffmpeg這是他們是如何做到這一點,它的工作原理

  1. 首先,重命名您的照片遵循數字順序。對於 例如:img1.jpg, img2.jpg, img3.jpg, ...
  2. 然後你可能會遇到:

    ffmpeg -f image2 -i img%d.jpg /tmp/a.mpg 
    

    注意%d由圖像編號替代。

    img%03d.jpg指序列img001.jpgimg002.jpg

  3. 使用「-start_number」選項來聲明一個起始號碼爲 序列。如果您的序列不是以 img001.jpg開頭,但仍然按照數字順序,這很有用。下面 示例將img100.jpg開始:

    ffmpeg -f image2 -start_number 100 -i img%d.jpg /tmp/a.mpg 
    
  4. 如果你有大量的圖片重新命名,你可以使用 以下命令來減輕負擔。該命令使用bourne shell語法,將符合* jpg的當前目錄 中的所有文件象徵性地鏈接到 img001.jpg,img002.jpg等的序列中的/tmp目錄。

    x=1; 
    for i in *jpg; 
    do counter=$(printf %03d $x); 
    ln -s "$i" /tmp/img"$counter".jpg; 
    x=$(($x+1)); 
    
+0

在示例4結尾缺少「完成」,對嗎? – znt 2016-03-29 14:28:43

相關問題