2012-07-17 365 views
13

我正在從事Android設備上的實時設備到服務器流式傳輸。我能夠在服務器上以字節發送數據,但是當我在服務器上錄製期間播放該文件時VLCMOOV原子未找到。在很多解決方法之後,我發現最後生成的mp4文件的原子會生成MOOV。但是我必須在服務器上播放該文件,而錄製則意味着直播。我通過SPYDROIDSIPDROID的源代碼,但他們都不工作。我試圖使用FFMPEG在服務器端添加移動原子,但沒有得到任何成功。任何人都有任何想法,我怎麼能實現這一點。提前Thanx。如何在mp4視頻文件中添加MOOV原子

回答

2

運行qt_faststart將moov原子移動到流的開始位置。

qt-faststart in.mp4 out.mp4 
+0

烏拉圭回合rply喜d33pika..thnx,我想給在服務器上的視頻數據同時記錄,但MOOV原子錄製完成,以便這就是爲什麼我認爲QT-的fastStart不會有所幫助這裏後產生。 – Ravinder 2012-07-19 07:12:35

+0

你解決了你的問題@Ravinder?我現在正在嘗試完全一樣,並沒有看到可行的解決方案。如果你知道,請在這裏發表評論。 – 2014-11-16 18:33:36

+0

如何在android中使用qt-faststart?有人可以發佈示例代碼嗎? – 2016-06-23 04:49:14

6

你有問題。 'moov'框是一種內容表。如果不是所有的內容都在那裏,你就無法獲得完整的目錄。哎喲!

如果你想堅持使用MP4,並且如果你自己編寫文件,你可以將文件編寫爲所謂的分段MP4文件。碎片化的MP4文件包含多個視頻獨立的小部分 - 每個都有自己的目錄。這將使您能夠在完整錄製完成之前播放該文件。

如果你不需要堅持使用MP4,一個選項是將原始h264流寫入服務器。那麼你沒有那種內容表。 VLC可以播放原始的h264流。

+0

您好sebsatian,我不能夠在視頻錄製時獲得Android的行數據,請問我可以如何實現這一點。 – Ravinder 2012-07-19 07:13:28

+0

我知道MP4,但不是特別的Android。也許你應該創建一個新的問題。 – 2012-07-19 12:49:46

+0

這樣做的另一種方法可能是隻記錄一兩秒鐘,然後在服務器上重新連接?! – 2012-07-20 09:58:03

3

使用MP4Box將MOOV原子移動到文件開始處,並將交錯存儲到數據流中。

MP4Box test.mp4 test.mp4 
+3

它不適合我。返回: 錯誤 - 指定了2個輸入名稱,請檢查使用情況 MP4Box版本0.5.0-rev4065 – 2013-10-12 19:05:45

0

添加到您的這個gradle這個LIB:編譯 'net.ypresto.qtfaststartjava:qtfaststart:0.1.0' 然後

File input = new File(path + "/input.mp4"); // Your input file 
File output = new File(path + "/output.mp4"); // Your output file 
try{ 
    if(!output.exists()) // if there is no output file we'll create one 
     output.createNewFile(); 
    } 
}catch (IOException e){ 
    Log.e("TAG", e.toString()); 
} 

try{ 
    QtFastStart.fastStart(input, output); // Adds moov to your input 
              // Now your output file is ready to stream! 
}catch (QtFastStart.MalformedFileException m){ 
    Log.e("QT", m.toString()); 
}catch (QtFastStart.UnsupportedFileException q){ 
    Log.e("QT", q.toString()); 
}catch (IOException i){ 
    Log.e("QT", i.toString()); 
} 

這裏說的一切都

0

有可能使用FFMpeg將moov原子移動到視頻文件的開頭。

ffmpeg -i input_video_file.mp4 -vcodec copy -acodec copy -movflags +faststart output_video_file.mp4