Объедините изображение в звуковой файл и программно создайте видеофайл в андроиде
12 jagdish [2013-11-19 15:47:00]
Я прочитал учебник библиотеки ffmpeg, чтобы объединить изображение в аудиофайл.
Это выглядит очень сложным, и ошибка с значением среды равна нулю.
Я много исследовал, но не нашел решения.
Есть ли способ Android для объединения изображения и аудиофайла для создания видео?
android ffmpeg audio
2 ответа
6 sham.y [2014-05-27 14:01:00]
Я не компилировал FFMPEG, просто использовал javacv для android и решил мою задачу объединить звук и изображение и сделать его как видеофайл. шаги: Сначала выполните следующие шаги здесь, а затем поместите приведенный ниже код в свою деятельность и убедитесь, что измените путь к входным файлам и выходному файлу.
new AsyncTask<Void, Void, Void>() {
ProgressDialog dialog;
FFmpegFrameRecorder recorder;
protected void onPreExecute() {
dialog = new ProgressDialog(RecordActivity.this);
dialog.setMessage("Genrating video, Please wait.........");
dialog.setCancelable(false);
dialog.show();
};
@Override
protected Void doInBackground(Void... arg0) {
File folder = Environment.getExternalStorageDirectory();
String path = folder.getAbsolutePath() + "/DCIM/Camera";
// ArrayList<String> paths = (ArrayList<String>) getListOfFiles(path, "jpg");
long millis = System.currentTimeMillis();
videoPath = path + "/" + "test_sham_"+millis+".3gp";
try {
//audio grabber
FrameGrabber grabber2 = new FFmpegFrameGrabber(folder.getAbsolutePath()+"/Samsung/Music/Over_the_horizon.mp3");
//video grabber
FrameGrabber grabber1 = new FFmpegFrameGrabber(path+"/20140527_133034.jpg");
grabber1.start();
grabber2.start();
recorder = new FFmpegFrameRecorder(path
+ "/" + "test_sham_"+millis+".3gp", grabber1.getImageWidth(), grabber1.getImageHeight(),2);
//recorder.setVideoCodec(5);
recorder.setVideoCodec(avcodec.AV_CODEC_ID_MPEG4);
// recorder.setVideoCodec(avcodec.AV_CODEC_ID_MP4ALS);
recorder.setFormat("3gp");
// recorder.setFormat("mp4");
recorder.setFrameRate(frameRate);
recorder.setSampleRate(grabber2.getSampleRate());
recorder.setVideoBitrate(30);
startTime = System.currentTimeMillis();
recorder.start();
Frame frame1, frame2 = null;
while ((frame1 = grabber1.grabFrame()) != null ||
(frame2 = grabber2.grabFrame()) != null) {
recorder.record(frame1);
recorder.record(frame2);
}
recorder.stop();
grabber1.stop();
grabber2.stop();
System.out.println("Total Time:- " + recorder.getTimestamp());
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
protected void onPostExecute(Void result) {
dialog.dismiss();
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(videoPath), "video/3gp");
startActivity(intent);
Toast.makeText(RecordActivity.this, "Done:::"+videoPath, Toast.LENGTH_SHORT)
.show();
};
}.execute();
0 Caner [2013-11-19 16:08:00]
ffmpeg
не поставляется с телефонами Android. Вам необходимо скомпилировать его самостоятельно для Android и развернуть на устройстве.
Кажется, кто-то уже это сделал, но, возможно, это не бесплатно для профессионального использования:
https://play.google.com/store/apps/details?id=com.netcompss.ffmpeg4android