Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Mp4Parser输出视频不在任何播放器中播放_Android_Video_Mp4parser - Fatal编程技术网

Android Mp4Parser输出视频不在任何播放器中播放

Android Mp4Parser输出视频不在任何播放器中播放,android,video,mp4parser,Android,Video,Mp4parser,我正在尝试替换mp4视频的音频。我有一个mp4源文件和一个.aac音频文件。我从本地android MediaRecorder录制的Mp4文件下面是我用于录制Mp4视频的代码 public void initRecorder(文件保存到文件、int-displayWidth、int-displayHeight、, int desiredWidth,int desiredHeight,int orientationHint, MediaRecorder.OneErrorListener error

我正在尝试替换mp4视频的音频。我有一个mp4源文件和一个.aac音频文件。我从本地android MediaRecorder录制的Mp4文件下面是我用于录制Mp4视频的代码

public void initRecorder(文件保存到文件、int-displayWidth、int-displayHeight、,
int desiredWidth,int desiredHeight,int orientationHint,
MediaRecorder.OneErrorListener errorListener,
MediaRecorder.onInfo侦听器(infoListener)
抛出IOException{
MediaRecorder=新的MediaRecorder();
setOnInfoListener(infoListener);
mediaRecorder.SetOneErrorListener(errorListener);
mediaRecorder.setVideoSource(mediaRecorder.VideoSource.SURFACE);
mediaRecorder.setInputSurface(mSurface);
mediaRecorder.setAudioSource(mediaRecorder.AudioSource.MIC);
setOutputFormat(mediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setAudioEncoder(mediaRecorder.AudioEncoder.AAC);
mediaRecorder.setAudioSamplingRate(44100);
mediaRecorder.setAudioEncodingBitRate(96000);
mediaRecorder.setVideoEncoder(mediaRecorder.VideoEncoder.H264);
mediaRecorder.setVideoEncodingBitRate(12000000);
mediaRecorder.setVideoFrameRate(30);
如果(所需宽度>所需高度){
所需浮点数=1080.0f/2280.0f;
如果(所需宽度>2280 | |所需高度>1080){
浮动纵横比=(浮动)所需高度/所需宽度;
如果(方面>所需方面){
期望高度=1080;
desiredWidth=(int)数学地板(desiredHeight/aspect);
}否则{
期望宽度=2280;
desiredHeight=(int)数学地板(desiredWidth*纵横比);
}
}
}否则{
所需浮点数=2280.0f/1080.0f;
如果(所需宽度>1080 | |所需高度>2280){
浮动纵横比=(浮动)所需高度/所需宽度;
如果(方面>所需方面){
期望高度=2280;
desiredWidth=(int)数学地板(desiredHeight/aspect);
}否则{
期望宽度=1080;
desiredHeight=(int)数学地板(desiredWidth*纵横比);
}
}
}
mDesiredHeight=所需高度;
mDesiredWidth=所需宽度;
mediaRecorder.setVideoSize(mDesiredWidth,mDesiredHeight);
mediaRecorder.setOrientionHint(方向提示);
setOutputFile(saveToFile.getPath());
mediaRecorder.prepare();
媒体记录器=媒体记录器;
}
上述MediaRecorder对象用于生成mp4视频文件。 我从一些互联网来源下载了.aac文件&我不知道它的比特率、编码等。
以下代码是我用于将.aac与mp4合并/混合的代码

moviem=MovieCreator.build(视频);
List nuTracks=new ArrayList();
对于(轨道t:m.getTracks()){
如果(!“soun”.equals(t.getHandler())){
添加(t);
Log.d(标记“找到视频曲目”);
}
}
Track nuAudio=new-AACTrackImpl(新文件数据源mpl(音频));
轨道作物\轨道=CropAudio(视频,nuAudio);
nuTracks.add(裁剪轨迹);
m、 设置轨道(nuTracks);
容器mp4file=new DefaultMp4Builder().build(m);
FileChannel fc=newfileoutputstream(新文件(输出)).getChannel();
mp4file.writeContainer(fc);
fc.close();
//正在将最终输出文件发送给播放机。
输出文件在某些播放机中未播放,在某些播放机中未播放音频。我试图在ubuntu视频播放器中播放输出文件,但也无法正常工作。我不确定我在做什么,但怀疑这可能是不同的编码问题,但不确定如何处理。任何想法/建议都会有帮助




为字节检查提供一个简短的视频文件…。@VC.One感谢您的回复我更新了输入和输出文件的链接。