2011-07-05 86 views
0

我有一堆視頻文件有一些奇怪的格式。有一個常規的視頻流,還有一個文本流,用於存儲視頻幀的精確時間戳(來自GPS同步的硬件時鐘)。下面是ffmpeg輸出的例子:壓縮AVI視頻流,同時一味複製另一個流

Input #0, avi, from 'in.avi': 
    Duration: 00:00:52.13, start: 0.000000, bitrate: 311033 kb/s 
    Stream #0.0: Video: rawvideo, rgb32, 658x492, 30 tbr, 30 tbn, 30 tbc 
    Stream #0.1: Data: 0x0000 

視頻是未壓縮的,所以我想對其進行壓縮。我正在爲該部分成功使用ffmpeg。問題是,我想將數據流#0.1映射到輸出文件,完全不變。我一直在努力嘗試,但我找不到任何方法可以使ffmpeg做到這一點。它只想處理音頻,視頻和字幕流,而且文本不是有效的字幕格式。製作視頻的人剛退休,所以更改輸入格式不是一種選擇。有任何想法嗎?

+0

我不介意它是否是一個多步驟的過程,但是這兩個流最終都必須返回到同一個文件中。 – rescdsk

+1

這聽起來像你已經嘗試'-map'這是自然的解決方案。你可以製作一個簡短的樣本視頻嗎?我們大多數人沒有隨機附加數據軌道的視頻。 – blahdiblah

+0

感謝您的關注,但這是以前的工作,所以幸運的是它不再是我的問題了:-) – rescdsk

回答

0

好吧,讓我們來考慮一下你正在嘗試做的:

  • 要節省空間,讓你的檔案完好無損。高尚的想法。但是,視頻文件的用法是什麼?由於你的數據流在AVI文件中,所以你似乎有一個軟件可以讀取這些文件並對它們做些什麼。那麼,該軟件能讀取壓縮視頻嗎?
  • 是視頻幀速率常數還是變化?如果它是恆定的,則可以提取第一幀的時間,並且程序會計算使用該文件時每幀的時間。
  • AVI不會處理你正在做的事情。你可以擁有你現在擁有的東西,因爲從視頻幀到時間戳有一對一的對應關係,當你的視頻打包時,將會有KEYFRAMES和其他視頻數據,並且你只能對關鍵幀進行時間戳記
  • 如果您不需要軟件來使用該文件,您是否可以考慮在視頻的幀中打印時間戳,並完全丟棄數據流?

好吧,我不想回答一個答案,但你的問題太開放了。

編輯:我正在閱讀AVI文件ARE確實是一個固定的幀率,所以你可以真正使用第一種技術,並將第一幀的時間戳寫入某個文件。