簡體   English   中英

使用Java創建帶有編碼幀的視頻

[英]Create video with encoded frames in Java

我在Android(Java)中有一個應用程序可以對來自Camera的幀進行編碼。

每一幀都是一個字節數組,在捕獲后,用API MediaCodec對其進行編碼。

如果我直接將幀寫在視頻文件上,則可以使用ffplay(而不是將其他視頻播放器作為VLC)打開它,但是它說:

Input #0, h263, from 'example.avi':
Duration: N/A, bitrate: N/A
Stream #0.0: Video: h263, yuv420p, 640x480 [PAR 12:11 DAR 16:11], 25 fps, 25 tbr, 1200k tbn, 29.97 tbc
5.58 A-V:  0.000 s:0.0 aq=    0KB vq=    0KB sq=    0B f=0/0   0/0   

換句話說,它無法識別持續時間,也無法識別比特率。

我想我必須將元數據寫入文件中,但是我不知道該怎么做。

正如我在帖子中所說的那樣,該應用程序是使用Java(帶有Android API)實現的,因此我想知道如何添加使視頻播放器能夠識別我的視頻的元數據。

MediaCodec的輸出是原始的H.264流。 從Android 4.3(API 18)開始,您可以通過MediaMuxer類運行該流,以將其轉換為.mp4文件。

可能感興趣的一個相關項目是,您現在可以將相機的Surface預覽饋送到MediaCodec而不是通過ByteBuffer傳遞YUV數據。 這種方法需要較少的數據復制,並且不需要顏色平面交換。

請參閱此處的CameraToMpegTest示例。

它不是avi容器,而只是h264流。 嘗試重命名為“ * .h264”並與某些播放器(vlc,mplayer)一起播放。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM