2012-10-09 154 views
3

我正在尋找一種方法將mjpeg(壓縮)視頻數據複合到像mp4或avi這樣的視頻容器中。 (我將來還需要添加音頻)。 因爲我在我的項目的其他部分使用FFMPEG以及我想如果可能的話使用這些庫。 我不是在尋找命令行FFMPEG的使用! 我試過在ffmpeg中使用muxing的例子,我只能創建一個帶有視頻信息的(非常大的).mjpeg文件。這不是我正在尋找的。FFMPEG如何將MJPEG編碼數據複合到mp4或avi容器C++

示例非常受歡迎,但指向正確方向的指針也起作用!

編輯: 我輸出yuvj422p流到JPEG圖像,我想把它放到一個MP4容器。使用命令行的ffmpeg這個作品:

的ffmpeg -i yuvy%01d.jpg -vcodec MJPEG out.mp4

我想做到這一點directely在我的代碼(不包括第一ofcourse創建JPEG圖像)

回答

3

我固定它做我可以提供一個示例代碼執行以下操作:

我使用的複用例子和使用編碼的代替函數我只是跳過它,直接加載JPEG數據到數據包中。要設置OutputContext,我使用了猜測格式函數,並將編解碼器設置爲MJPEG。我將PTS數據更改爲幀計數器。因爲無論如何所有的幀都是按時間順序的。

-2

三個主要步驟

  1. 解碼(使用avcodec_decode_video())
  2. 轉換原始幀到YUV420P格式(使用swscale())
  3. 編碼(使用avcodec_encode_video())

如果需要

+0

海報應該已經完成​​了所有這些。現在手上有JPEG,他想將幀寫入視頻文件。 –

+0

好吧,那麼只有步驟2和3,因爲如果我沒記錯的話,jpeg幀在yuvj422p中 –

+0

我在嵌入式平臺上運行編碼,得到的是原始的yuvj422p編碼比特流。我想直接把它放到mp4容器中。解碼和編碼會花費太多週期時間。 –