當前位置:首頁 » 安卓系統 » androidh264編碼

androidh264編碼

發布時間: 2022-06-25 17:07:57

⑴ android開發怎麼把視頻編碼成H265

首先,你的文件有沒有錯誤。 比如,拿出來,放在pc上看看是否能播。不能播,可能你保存的文件有誤。如果,能播。那麼可能與文件的許可權有問題。如果放在file的目錄下,可能需要更改文件目錄及創建的文件的許可權。其方法網上有,調用java的方法,使用linux命令行。

⑵ 手機上說的h264格式是什麼

H264一種視頻編碼格式。具體的,我不是軟體專家,對這個了解不多,僅僅告訴你我了解的。就是手機對H264的硬解支持並不好。我的DEFY 播放用WIS壓制的H26格式時經常有影音不同步的問題。知道用XVID壓制後才好。另外嗎,軟體解H264編碼的AVI支持也不好。現在的手機硬解不了,軟解無圖,或者有,但是會卡。

所以最好播放H264格式的MP4。最好最好還是換成XVID的,手機上看不出任何區別。

⑶ 安卓開發怎麼將和h264文件解碼播放

如題所示,我想將攝像頭採集的數據進行h.264硬編碼,我想知道Android是如何對視頻數據進行硬體編碼的
目前已經知道的方案有:
1、用Android4.1 API MediaCodec來對視頻數據進行編碼

http://stackoverflow.com/q/17232477/2293921
此種方式我測試了,並未成功,目前一直卡在這里,如果你等幫助我,我將非常感激

2、通過MediaRecorder方式對數據進行編碼

具體可參考 http://blog.csdn.net/zblue78/article/details/6083374

3、通過移植ffmpeg

這種方式沒接觸過,也不了解

可能還有一些其他的方式來對視頻硬編碼,如果你了解一下,感謝分享!

綜上,我更傾向於1的方式去做

我來回答

Android , MediaCodec , 硬編碼

post_newreply

//$(\'note_\').focus();
function succeedhandle_vfastpost(url, message, param) {
$(\'vmessage\').value = \'\';
succeedhandle_fastpost(url, message, param);
showCreditPrompt();
}
var vf_tips = \'#在這里快速回復#\';
$(\'vmessage\').value = vf_tips;
$(\'vmessage\').style.color = \'#CDCDCD\';
$(\'vmessage\').onclick = function() {
if($(\'vmessage\').value==vf_tips) {
$(\'vmessage\').value=\'\';
$(\'vmessage\').style.color=\"#000\";
}
}
$(\'vmessage\').onblur = function() {
if(!$(\'vmessage\').value) {
$(\'vmessage\').value=vf_tips;
$(\'vmessage\').style.color=\"#CDCDCD\";
}
}
$(\'vreplysubmit\').onclick = function() {
if($(\'vmessage\').value == vf_tips) {
return false;
}
}

⑷ 系統為安卓2.3 能否播放H264編碼視頻

沒有播放器要求 跟系統沒關系 跟手機CPU 屏幕解析度有關 一般普通智能手機支持720P以下

⑸ android支持H264編碼嗎

不支持,支持H263編碼,264你可以從opencore中進行提取或者從ffmpeg中繼續擰移植來解析H264

⑹ android錄像是h264壓縮的嗎

H264是一種壓縮編碼方式 不是格式 H264壓縮後通常會以TS或者TP格式封裝,移動設備上通常是.MP4 相對於MPEG2來說 H264壓縮率更高 所以相同信息量下H264壓縮後體積更小 基本上一部高清電影如果是MPEG2壓縮需要100G左右二H264編碼方式下只需要25G左右。 相比MPG(MPEG1 VCD)來說壓縮率大的多,比之AVI來說也要強大很多 另外你說的其實不是一個概念 而且通常狀況下H264是用來壓縮高清視頻用的 AVI和MPG則不一定,等體積的情況下 H264模式壓縮出來的質量更好。

⑺ Android自帶的瀏覽器是否支持h264編碼的html5視頻

特別是移動平台的瀏覽器對h264的支持尤其重要,近兩年的ARM處理器基本都包含h264硬解碼,若不啟用硬解碼,不但耗電,流暢性也得不到保證。

⑻ 如何將攝像頭數據實時使用h264格式編碼傳送出去

import java.io.File;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;

import android.content.res.Configuration;
import android.os.Bundle;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.Window;
import android.view.WindowManager;
import android.view.SurfaceHolder.Callback;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.PixelFormat;
import android.graphics.Bitmap.Config;
import android.hardware.Camera;

public class AndroidVideo extends Activity implements Callback,
Camera.PictureCallback {
private SurfaceView mSurfaceView = null;
private SurfaceHolder mSurfaceHolder = null;
private Camera mCamera = null;

int width = 352; // 此處設定不同的解析度
int height = 288;
private boolean mPreviewRunning = false;
byte [] mPixel = new byte[width*height*2];

ByteBuffer buffer = ByteBuffer.wrap( mPixel );
Bitmap VideoBit = Bitmap.createBitmap(width, height, Config.RGB_565);

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

getWindow().setFormat(PixelFormat.TRANSLUCENT);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);

setContentView(R.layout.camera);

mSurfaceView = (SurfaceView) this.findViewById(R.id.surface_camera);
mSurfaceHolder = mSurfaceView.getHolder();
mSurfaceHolder.addCallback(this);
mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

}

@Override
public void onPictureTaken(byte[] data, Camera camera) {

}

@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
if (mPreviewRunning) {
mCamera.stopPreview();
}
Camera.Parameters p = mCamera.getParameters();
p.setPreviewSize(352, 288);
mCamera.setPreviewCallback(new H264Encoder(352, 288));
mCamera.setParameters(p);
try {
mCamera.setPreviewDisplay(holder);
} catch (Exception ex) {
}
mCamera.startPreview();
mPreviewRunning = true;
}

@Override
public void surfaceCreated(SurfaceHolder holder) {
mCamera = Camera.open();
}

@Override
public void surfaceDestroyed(SurfaceHolder holder) {

if (mCamera != null) {
mCamera.setPreviewCallback(null);
mCamera.stopPreview();
mPreviewRunning = false;
mCamera.release();
mCamera = null;
}

}

@Override
protected void onDestroy() {
if (mCamera != null) {
mCamera.stopPreview();
mCamera.release();
mCamera = null;
}
}

public void onConfigurationChanged(Configuration newConfig) {
try {
super.onConfigurationChanged(newConfig);
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
} else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
}
} catch (Exception ex) {
}
}

protected void onDraw(Canvas canvas) {

// Bitmap tmpBit = Bitmap.createBitmap(mPixel, 320, 480, Bitmap.Config.RGB_565);//.ARGB_8888);

VideoBit.PixelsFromBuffer(buffer);//makeBuffer(data565, N));

canvas.drawBitmap(VideoBit, 0, 0, null);
}
}

class H264Encoder implements Camera.PreviewCallback {
long encoder=0;
long count=0;
long decoder=0;
RandomAccessFile raf=null;
private foxSocket foxsocket=null;
byte[] h264Buff =null;
static {
System.loadLibrary("H264Android");
//System.loadLibrary("ffmpeg");
//
}
private H264Encoder(){};

public H264Encoder(int width, int height) {
foxsocket=new foxSocket();
encoder = CompressBegin(width, height);

//decoder = InitDecoder();
h264Buff = new byte[width * height *2];
count = 0;
try {
File file = new File("/sdcard/camera.h264");
raf = new RandomAccessFile(file, "rw");
} catch (Exception ex) {
Log.v("System.out", ex.toString());
}

};
@Override
protected void finalize()
{
CompressEnd(encoder);
Log.v("System.out", "finalize");
if (null != raf)
{
try {
raf.close();
} catch (Exception ex) {
Log.v("System.out", ex.toString());
}
}
try {
super.finalize();
} catch (Throwable e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private native long CompressBegin(int width,int height);
private native int CompressBuffer(long encoder, int type,byte[] in, int insize,byte[] out);
private native int CompressEnd(long encoder);

public native long InitDecoder();
public native int UninitDecoder(long encoder);
public native int DecoderNal(long encoder, byte[] in, int insize, byte[] out);
public native int GetH264Width(long encoder);
public native int GetH264Height(long encoder);
public static native int ntohl(int i);
public static native int htonl(int i);
public static native short ntohs(short i);
public static native short htons(short i);

@Override
public void onPreviewFrame(byte[] data, Camera camera) {
if (count<50)
{
int result=CompressBuffer(encoder, -1, data, data.length,h264Buff);
try {
if (result>0)
{
raf.write(h264Buff, 0, result);
foxsocket.UDP_SendBufData("192.168.1.17", 6000, h264Buff, result);
}
count++;
} catch (Exception ex) {
Log.v("System.out", ex.toString());
}
}
else
{
if (count!=9999)
{
count = 9999;
CompressEnd(encoder);
Log.v("System.out", "finalize");
if (null != raf)
{
try {
raf.close();
} catch (Exception ex) {
Log.v("System.out", ex.toString());
}
}
}

}
}

}

⑼ android h264硬編碼,得到流寫入文件後不能播放是怎麼回事

自己寫解碼264文件,如果用view顯示,就需要轉成bitmap顯示,或者使用opengl可以顯示yuv數據

如果已經保存成MP4格式的文件,就不需要解碼了,通過mediaplayer就能播

熱點內容
c語言點陣字模 發布:2024-04-26 22:19:35 瀏覽:918
光加密 發布:2024-04-26 22:15:28 瀏覽:352
aspnet經典源碼 發布:2024-04-26 22:14:46 瀏覽:135
linux編譯提示缺少build 發布:2024-04-26 22:14:34 瀏覽:415
編譯opengl 發布:2024-04-26 21:57:32 瀏覽:506
ubuntu查找文件夾 發布:2024-04-26 21:48:18 瀏覽:203
qq瀏覽器wifi助手怎麼查看密碼 發布:2024-04-26 21:48:18 瀏覽:669
在線安裝androidsdk 發布:2024-04-26 21:42:33 瀏覽:480
杭州地鐵wifi密碼是多少 發布:2024-04-26 21:32:45 瀏覽:320
重裝系統源碼 發布:2024-04-26 21:32:44 瀏覽:275