① android獲取視頻每一幀
本周給大家分享如何獲取視頻的每一幀的信息,說到這個那就得看我們的谷歌官方給我們的提供的api介面類:MediaMetadataRetriever,這個類是提供給我們用來獲取視頻信息的,
官方文檔:
https://developer.android.google.cn/reference/android/media/MediaMetadataRetriever
通過文檔我們知道,我們可以通過它提供的extractMetadata()方法獲取視頻基本信息,
例如:視頻寬、高,時長,作者等,還有通過getFrameAtTime()方法獲取對應時長位置的視頻幀信息,返回的是一個bitmap對象
通過實踐知道,這個方法好是好,但是獲取視頻幀的速度太慢了,我自己做的實驗是,獲取一個4分多鍾的視頻,每隔10秒取一幀,開了4個線程去取,時間大概在10秒左右,這樣對於我們來說是不可以忍受的,所以最後在github上找到了一個很好的庫推薦給大家:
https://github.com/wseemann/FFmpegMediaMetadataRetriever
這個庫是基於ffmpeg實現的,同樣的實驗獲取視頻幀信息的速度在1秒左右,只開了一個線程,ffmpeg還是依舊的強大啊。
通過本周的學習,自己對於ffmpeg是越來越趕興趣了,所以買了一本書來研究一下,但是本書講的都是c語言,所以沒辦法又把我大學學習的c語言的書找了出來,繼續開始著自己的爬坑之旅。
② Android Camera提取出來的yuv源數據怎麼提取y,u,v分量
Android
camera採集到的可以是yuv420sp也可以食yuv420p。我知道yuv420中yuv的分布。現在主要有個前提是從Android
Camera
中採集到的yuv420數據,這個byte[]的長度是一倍的視頻寬高乘積,不是1.5倍。在jni裡面獲取到的長度又確實是1.5倍,但是在jni裡面轉換為jbyte*
的長度還是1倍,就不知道怎麼弄了~
查看原帖>>
③ android 如何獲取視頻時長
mediaplayer.getration
④ 如何獲取一個文件夾下所有視頻文件的時間總長度
1、文件空白處-右擊:查看-詳細信息。
2、沒有視頻時長時:在最上右擊:
⑤ android如何在線播放視頻支持mp4 格式的,moov在視頻末尾的播放。
我也在解決這個問題,研究了幾天。moov保存了大量數據長度之類的信息,播放視頻的時候需要一層一層的讀取完moov,才能獲取到視頻的長度之類的信息。
所以moov在末尾是沒有辦法支持邊緩存邊播放的,除非播放器和伺服器支持先把moov部分讀取了,再讀取mdat部分,但這就是流媒體了。
原本是打算在上傳視頻的時候對視頻進行處理,將moov提取到mdat的前面,然後也成功調換了,只是並不能播放,可能還需要研究一下MP4的結構吧,然後按照MPEG-4的標准來讀取和調換位置。否則就只能搭建流媒體伺服器了。
不知道你有沒有什麼方法了。
⑥ flash as3.0獲取外部視頻總的時間長度 和視頻已播放的時間長度
這要看是什麼格式的外部視屏了。
但無論是什麼情況,都要把視頻載入進來才能獲得其長度。
如果你載入的是一個SWF格式的視屏動畫,一般用Loader來載入SWF,載入完成後可以:
總幀數:MoveiClip(Loader.content).totalFrames;
當前幀數:MoveiClip(Loader.content).currentFrame;
對於FLV、F4V之類的格式的視屏,如果你用的是Flash中自帶的FLAPlayBack或者自己用一個VideoPlayer來載入,可以這樣:
總時間(秒):FLVPlayBack.totalTime; VideoPlayer.totalTime;
當前時間(秒):FLVPlayBack.playheadTime; VideoPlayer.playheadTime;