簡體   English   中英

如何使用jpeg框架制作.avi,.mp4文件?

[英]How to make .avi, .mp4 file with jpeg frames?

我正在使用IP攝像機,並且已經從攝像機獲得了Jpeg幀和音頻數據(PCM)。

現在,我想根據上述數據以.avi或.mp4格式創建視頻文件(音頻和視頻)。

我搜索了一下,我知道ffmpeg庫可以做到。 但是我不知道如何使用ffmpeg來做到這一點。

您能否建議我一些示例代碼或ffmpeg的功能來做到這一點?

如果您的目標是編寫一個c ++應用程序來為您執行此操作,請忽略此答案,我將其留在此處以供將來參考。 如果沒有,請按照以下步驟在bash中進行操作:

首先,請確保您的圖片格式正確,並且易於ffmpeg處理。 您可以將圖像復制到其他目錄:

mkdir tmp
x=1; for i in *jpg; do counter=$(printf %03d $x); cp "$i" tmp/img"$counter".jpg; x=$(($x+1)); done

將音頻數據復制到tmp目錄並編碼視頻。 假設您的相機每十秒鍾拍攝一張照片:

cd tmp
ffmpeg -i audio.wav -f image2 -i img%03d.jpg -vcodec msmpeg4v2 -r 0.1 -intra out.avi

其中-r 0.1表示-r 0.1的幀速率,即每10秒一幀。

這里可能出現的問題是:

  • 除非事先仔細計算所需的幀速率,否則音頻/視頻可能會略有不同步。 您應該能夠使用ffmpeg和一些grep魔術來獲得音頻(或視頻)的長度。 即使這樣,對於較長的剪輯,同步可能仍然是一個問題。
  • 如果您有超過999張圖像,則%03d格式將不夠用,請確保將3更改為所需的索引長度
  • 視頻將從更長的流中繼承其長度,您可以使用-t開關對其進行限制:

    -t duration - Restrict the transcoded/captured video sequence to the duration specified in seconds. "hh:mm:ss[.xxx]" syntax is also supported. Restrict the transcoded/captured video sequence to the duration specified in seconds. "hh:mm:ss[.xxx]" syntax is also supported.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM