0 0

android record video(3gp) to remote server5

经过几天的折腾,最终还是没有解决问题,特此发表问题,希望能够得到JE朋友帮助。
需求:通过android来录制视频并通过socket方式传到服务器上保存文件(3gp文件)。

 

问题:保存到服务器的3gp文件,手机播放器打不开,3gp文件编码不正确。

 

备注:保存在手机的本地系统中,3gp文件编码格式正确,手机播放器能打开。

 

并通过AtomicParsley工具还查看已录制视频文件编码格式:



 查看正确编码格式的3gp文件:



 

android录制视频的代码:

try
		{
			socket = new Socket(InetAddress.getByName(hostname), port);
		}
		catch (UnknownHostException e)
		{
			e.printStackTrace();
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}
		ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(socket);
		mMediaRecorder = new MediaRecorder();

		// 设置以流方式输出
		mMediaRecorder.setOutputFile(pfd.getFileDescriptor());
		mMediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface());
		mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
		mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
		mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
		mMediaRecorder.setVideoSize(176, 144);
		mMediaRecorder.setVideoFrameRate(15);
		mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);
		mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
		mMediaRecorder.setMaxDuration(10000);

 

服务端代码:

public MultiThreadServer() throws IOException
	{
		serverSocket = new ServerSocket(port);
		// Runtime的availableProcessor()方法返回当前系统的CPU数目.
		executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() * POOL_SIZE);
		
		System.out.println("服务器启动");
	}

	public void service()
	{
		while (true)
		{
			Socket socket = null;
			try
			{
				// 接收客户连接,只要客户进行了连接,就会触发accept();从而建立连接
				socket = serverSocket.accept();
				//executorService.execute(new Handler(socket));
				new Thread(new Handler(socket)).start();

			}
			catch (Exception e)
			{
				e.printStackTrace();
			}
		}
	}

 Handler代码:

	public Handler(Socket socket)
	{
		this.socket = socket;
		d = new File("D:/ds");
		if (!d.exists())
		{
			d.mkdirs();
		}

		try
		{
			store = File.createTempFile("sdsd", ".3gp", d);
			fos = new FileOutputStream(store);
			socketIn = socket.getInputStream();
		}
		catch (IOException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public void run()
	{
		try
		{
			System.out.println("New connection accepted " + socket.getInetAddress() + ":" + socket.getPort());

			while ((length = socketIn.read(buffer)) != -1)
			{
				fos.write(buffer, 0, length);
				fos.flush();
				System.out.println("正在写入中。。。。" + length);
			}

			fos.flush();
			store = null;
			socketIn.close();
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}
		finally
		{
			try
			{
				fos.close();
				fos = null;
				store = null;
				if (socket != null)
					socket.close();
			}
			catch (IOException e)
			{
				e.printStackTrace();
			}
		}
		System.out.println("-----------------------------完毕");
	}

 

大家帮我看看是什么原因造成的,在此谢谢了。给于高分!!!

2009年10月19日 10:13
  • 描述: 查看编码出错的3gp文件
  • 大小: 1.7 KB
  • 大小: 9.7 KB
  • ds.rar (229.3 KB)
  • 描述: 正确与错误的编码格式3gp文件
  • 下载次数: 444
  • socekt.rar (45.2 KB)
  • 描述: android 录制视频代码
  • 下载次数: 730
  • src.rar (2.4 KB)
  • 描述: 保存3gp文件的服务器代码
  • 下载次数: 558

1个答案 按时间排序 按投票排序

0 0

不要用3GP和h263,把视频格式改成h264和mp4就可以了

2009年10月28日 22:53

相关推荐

    androidRecord资源文件

    在这个“androidRecord资源文件”中,我们可以看到一个简单的录音Demo,它利用了`MediaRecorder` 类来实现按下按钮开始录音,抬起按钮结束录音的功能。以下将详细介绍`MediaRecorder` 类以及如何在Android应用中实现...

    android record view,无需root权限

    在Android平台上,录制屏幕视图(Record View)是一项常见的需求,比如用于教程、游戏录屏或者应用程序演示。然而,早期的Android版本并不直接支持这一功能,开发者需要借助第三方库或者root权限来实现。随着Android...

    前端项目-videojs-record.zip

    由于依赖于浏览器的 MediaRecorder API,`videojs-record` 主要支持现代的桌面和移动浏览器,如 Chrome、Firefox、Safari、Edge 和某些版本的 Android 浏览器。值得注意的是,不同浏览器对音频和视频编码的支持可能...

    Android audioRecord录音Demo

    在Android平台上,音频录制是应用程序开发中的一个常见需求,`AudioRecord`类是Android SDK提供的一种用于低级音频数据录制的API。这个`Android audioRecord录音Demo`将向我们展示如何利用`AudioRecord`类来实现一个...

    Android AudioRecord和MediaRecorder录音并实现了实时获取音量大小

    首先,`AudioRecord`是Android提供的一个低级API,允许开发者直接访问音频硬件来录制声音。它提供了高度的自定义性,可以控制采样率、通道数、位深度等参数。使用`AudioRecord`进行录音的基本步骤如下: 1. 初始化`...

    Android AudioRecord Demo.zip

    在Android平台上,AudioRecord类是音频输入的核心组件,它允许开发者录制音频数据并进行处理。这个"Android AudioRecord Demo.zip"文件很可能包含了演示如何使用AudioRecord类的一个示例项目。让我们深入了解一下...

    android AudioRecord AudioTrack实现录音并播放

    android AudioRecord AudioTrack实现录音并播放 并支持参数选择(频率、编码格式、声道) 更多信息可参考http://blog.sina.com.cn/u/1788464665

    Android下录音及播放录音(AudioRecord)

    本文将深入探讨如何使用Android的`AudioRecord`类进行录音,并利用`MediaPlayer`或`AudioTrack`进行播放。`AudioRecord`是Android SDK中的一个关键组件,它允许开发者捕获原始音频数据,而`MediaPlayer`则用于播放...

    Android应用源码之AudioRecord_Android.zip

    在Android平台上,AudioRecord类是音频输入的核心组件,它允许开发者录制音频数据并进行处理。这份"Android应用源码之AudioRecord_Android.zip"显然包含了关于如何使用AudioRecord类进行音频录制的示例代码。接下来...

    android audiorecord录音并绘图

    在Android平台上,`AudioRecord`类是用于音频输入的核心组件,它允许开发者捕获设备麦克风的声音数据。本文将深入探讨如何使用`AudioRecord`进行录音,并结合图形绘制技术,实时展示音频波形,实现一个简易的音频...

    Android Record录音测试样例【源代码】.rar

    Android Record录音测试样例【源代码】,测试android录音功能的例子,将按钮绑定点击事件,也就是录音程序,将录音存储在SD卡上,若没有SD卡,会弹出提示,录音完成释放资源,基础级的android多媒体编程例子,仅供...

    Android 使用AudioRecord实现暂停录音功能

    在Android平台上,录音功能是通过`AudioRecord`类来实现的。`AudioRecord`是Android提供的一个音频输入类,它可以捕获系统音频硬件的原始音频数据。本文将深入探讨如何利用`AudioRecord`来实现暂停和恢复录音的功能...

    circle-video-record,在android上录制视频的简单组件.zip

    "circle-video-record" 是一个专为Android设计的简单视频录制组件,旨在提供一个轻量级、易于集成的解决方案。这个开源项目可以帮助开发者快速实现用户友好的视频录制界面,使得在应用中添加视频录制功能变得更加...

    android 使用 audiotrack和audiorecord c++代码

    在Android平台上,开发音频应用时,常常会涉及到`AudioTrack`和`AudioRecord`这两个核心API。它们分别用于播放和录制音频数据,是Android系统原生提供的Java接口。当需要在C++层处理音频时,可以借助JNI(Java ...

    Android代码-DcCam

    And if you want to add a limit to user , that user should only able to record video up to certain length. Like instagram then this demo is for you. Pros Its handles orientations by its own. For both...

    Android连接sqlserver2008

    在Android平台上连接并操作SQL Server 2008是一项技术性较强的任务,涉及到多个关键知识点。首先,我们需要了解Android系统如何与远程服务器交互,以及如何处理SQL Server的数据库操作。以下是一些核心概念和步骤: ...

    Android 使用 AudioRecord 和 AudioTrack 完成音频PCM数据的采集和播放,并读写音频wav文件。

    Android 使用 AudioRecord 和 AudioTrack 完成音频PCM数据的采集和播放,并读写音频wav文件。 封装好的Java代码,可同时录制PCM和WAV文件。自己定义存储位置。 Android提供了AudioRecord和MediaRecord。MediaRecord...

    android的AudioRecord

    在Android平台上,AudioRecord类是用于实现低级别音频录制的核心组件。它允许开发者直接与设备的音频硬件交互,提供了一种高效且灵活的方式来捕获声音数据。本文将深入解析AudioRecord的使用方法及其在语音质量评测...

    android使用audioRecord和audioTrack实现语音录音播放与即时播放

    `AudioRecord`和`AudioTrack`是Android SDK提供的一对关键类,分别用于录音和播放音频数据。这两个类允许开发者进行低级别的音频操作,实现更加灵活和高效的声音处理。接下来,我们将深入探讨如何使用`AudioRecord`...

    android-recorder-6.tar.gz_android Recorder_android audio record_

    将Android录音器与Red5 Server结合,可以实现实时音频流的接收和播放。为了将音频数据推送到Red5 Server,你需要在Android应用中配置服务器的URL和流名,然后利用RTMP库进行连接和数据推送。 在`android-recorder-6...

Global site tag (gtag.js) - Google Analytics