2011-03-26 26 views
0

我試圖用DVB-T調諧器錄製DVB-Channel。 我已經做了很多關於這個話題的研究,但是我沒有真正得到「信息」做什麼。DVB通道錄製

基本上我已經能夠用默認的GraphEdit創建一個自己的Graph,發出一個調諧請求並觀看一個頻道。將圖轉換爲C#代碼與DirectShowLib或C++對我來說不是一個大問題。

但我不知道什麼是正確的方法來記錄電影。 (不解碼爲mpeg/avi等)。

+0

你想記錄原始(MPEG-TS)流嗎?整個流,還是隻有一個頻道? – wimh 2011-03-26 13:18:39

+0

主要只有一個頻道...但是「只有一個頻道」和原始TS流之間的區別對我來說並不清楚? – LatinChriz 2011-03-26 16:50:20

+1

TS流可以在其中列出多個節目(頻道)。因此,例如,如果您有兩個聲道和視頻通道,則TS流中將有四個多路複用的流,每個聲道一個視頻和一個音頻。所以如果你記錄整個原始流,你將同時得到兩個程序。否則,您將不得不拆分您感興趣的頻道,然後將音頻/視頻重新編碼爲某種容器格式,然後保存該容器。 – 2011-03-26 18:30:41

回答

0

該圖最重要的部分是一些調諧相關的濾波器,它們連接到解複用器(demux),demux將輸出視頻和音頻流。

獲取mpeg流的最簡單方法是在demux之前放置一個過濾器。例如一個samplegrabber。在廣播中,您將收到完整的傳輸流。但通常包含在相同頻率上覆用的multiple programs。如果您只需要一個程序,則需要從流中過濾其他程序。

如果您只需要一個程序,將解複用器輸出的音頻和視頻流直接連接到多路複用器,並將其輸出寫入文件可能更容易。您需要確保解複用器和多路複用器之間沒有解碼器或其他濾波器。問題是你需要找到一個directshow多路複用器,因爲windows不包含一個標準的多路複用器。我不知道任何免費的多路複用器。

你還可以做的是直接將音頻和視頻寫入文件。 (再次沒有解碼,或其他任何東西)。然後使用例如ffmpeg將音頻和視頻加入單個文件。

C:\> ffmpeg -i input.m2v -i input.mp2 -vcodec copy -acodec copy output.mpg 

您可能還需要延遲音頻或視頻流以使其同步。

另外,當然你也可以用ffmpeg把convert的多節目傳輸流轉換成單一節目流。

+0

所以我只需要一部分TS流,因爲我只想要一個通道!我已經有圖中的調諧相關濾波器,因爲我已經看到了使用視頻混合渲染濾波器的電視信號。我的理解是否正確?我主要編寫一個自己的DirectShow過濾器,它將MPEG 2解複用器中的所有數據寫入文件? (視頻+音頻?) – LatinChriz 2011-03-27 00:50:07

+0

您必須找到一個多路複用過濾器(或自己創建)並使用文件寫入器將輸出寫入文件。或者使用兩個文件寫入器將音頻和視頻分別寫入兩個文件,然後將其複用(不在directshow中)。但是如果找不到一個好的多路複用器,在解複用器之前添加一個samplegrabber過濾器會更容易,並且將所有內容寫入除了不需要的PID之外的文件。如果你這樣做,你應該改變PAT,但如果你不改變PAT,什麼都不會出錯。 iso13818-1包含有關mpeg-ts的技術信息。 – wimh 2011-03-27 09:32:17

+1

好的謝謝你的所有建議!我寫了一個自己的directshow過濾器,並用C#應用程序將其與回調連接起來,在那裏我可以用TS-Steam來做任何我想要的...只需幾行代碼:-) – LatinChriz 2011-03-30 15:00:21