[英]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.