2012-06-11 45 views
4

我正在使用ffmpeg將一組jpgs編譯爲視頻。有很多關於這方面的文章,但似乎唯一的方法就是將圖像命名爲連續的填充數字,例如0001.jpg0002.jpg ......ffmpeg與一組圖像文件未格式化爲%d.jpg

ffmpeg documentation狀態,有可能使用其他類型的模式,如%*.jpg來捕獲所有*.jpg文件,但我得到在我自己的工作的唯一模式是%0Nd - 類型模式。 man page只提到該類型。

我真的想讓ffmpeg使用一組具有任意名稱的圖像。它會簡化我的應用程序,使插入和刪除圖像時縮略圖和元數據保持同步更容易。創建鏈接不是一種選擇,因爲我正在使用Android。有沒有辦法做到這一點?

我也願意修改ffmpeg源代碼或者使用C api工作來讓它做我想做的事,但是我無法在代碼中找到正確的位置來執行它,或者找不到合適的文檔C api。有什麼建議?謝謝。

+0

從手冊頁:「它與C printf函數支持的語法相同,但只有接受正常整數的格式才合適。」你在說什麼?圖像的順序是否無關緊要?一個可能的解決方案是使用文檔中的[重新排序腳本](http://ffmpeg.org/faq.html#How-do-I-encode-single-pictures-into-movies_003f)來重命名所有的圖像,每次你去編碼,以便ffmpeg將使用它們。 – Ben

+0

理想情況下,它會按照常規字母數字順序排列圖像文件。我可能會用時間戳命名圖像。我現在重命名這些圖像,但它引入了一些額外的複雜性,我真的想要消除這些複雜性。 –

回答

1

current docs for the image2 demuxer(!不一樣的,你鏈接的複用器)認爲只有兩種可能的名字:

  • 文件名模式包含「%d」或「%0Nd」和幀順序編號,與第一幀編號不超過4.
  • 通過指定名稱而不使用「%d」模式,可以使用單個圖像作爲輸入。

我不認爲可能很快就會支持任意命名的幀文件作爲輸入,因爲這是一種不尋常的情況;大多數人關心他們的框架順序,最簡單的方法是使用順序編號。

也就是說,你可以看看concat input protocol這可能適合你的目的。不過要注意的是,我暫時無法在短暫的測試中連接幾張圖片,因此可能僅限於字面上可連接的格式,如mpg