2017-02-14 46 views
0

我有以下的使用情況:nginx的,RTMP + ffmpeg的舉動MP4的MOOV頭在飛行

1)愛麗絲髮布流nginx的,RTMP服務器

2)服務器的流轉換爲MP4(默認爲FLV,如果我理解正確的,並且需要一個編解碼器轉換)

3)鮑勃應該能夠執行範圍請求到MP4文件,而愛麗絲仍然發佈

然而,它似乎是ffmpeg的命令只能將flv轉換爲mp4當mp4文件完全生成時,然後ffmpeg將執行第二遍並將「moov」移動到其新文件的頭部

我們的用例是允許Bob使用範圍請求來檢索mp4文件,同時Alice仍在發佈即儘可能快地觀看Alice的視頻)(即從第二個Alice開始發佈)。因此,在mp4的moov頭頂,做範圍請求和實現功能很簡單。原始RTMP似乎不能解決我們的問題,因爲我們不能讓Bob在Alice的錄製時間0之後觀看。

現在的問題是: 1)是否有可能在flv尚未完全生成時執行此操作? 2)任何其他想法我們應該如何使用nginx-rtmp/ffmpeg來實現我們所需的功能?

多謝

回答

2

不,這是不可能的(除非你建立一個完全自定義播放器,在這種情況下,爲什麼使用MP4的話)。您需要的是流式或碎片格式,如HLS或CMAF。

+0

有沒有辦法將h.264幀的字節或甚至某個mpeg音頻幀動態地「提供給」HTML5瀏覽器解碼器?這是媒體資源擴展(MSE)是關於什麼?它是否允許設置AVC解碼器配置和音頻特定配置(PPS和SPS)?我不明白爲什麼只包含MPEG a/v數據的FLV在瀏覽器中無法播放(因爲它現在基本上是mp4格式的變體)。 –

+0

@ VC.One剛剛嘗試過flv在這種情況下工作。即我只需要將http服務器指向flv記錄,並滿足所有必要的要求 –

+0

FLV肯定不是MP4的變體。 MSE使用CMAF這就是爲什麼我在我的答案中說。 (或者你的意思是f4v,因爲這是MP4上的一個變種,但這只是試圖迷惑你的土坯,不要讓它們) – szatmary