我试着关注 ffmpeg4android library ,我在压缩视频时遇到了问题,如下图所示。
我使用 Intent 转移到 Compressing Media 类,
Intent intent = new Intent(this, CompressingMedia.class);
intent.putExtra("file_path", mLlItems.get(0).getPath());
startActivity(intent);
这是被转移到的类(class):
public class CompressingMedia extends BaseWizard {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
Log.d(Prefs.TAG, "path " + intent.getExtras().getString("file_path"));
// /storage/emulated/0/DCIM/Camera/VID_20140312_090612.mp4
String command = "ffmpeg -y -i " + intent.getExtras().getString("file_path") +
" -strict experimental -s 320x240 -r 15 -aspect 3:4 -ab 12288 -vcodec mpeg4 -b 2097152 -sample_fmt s16 /sdcard/out.mp4";
// if you want to change the default work location (/sdcard/videokit/) use the uncomment the below method.
// It must be defined before calling the copyLicenseAndDemoFilesFromAssetsToSDIfNeeded method,
// in order for this method to copy the assets to the correct location.
// setWorkingFolder("/sdcard/videokit/");
// this will copy the license file and the demo video file.
// to the videokit work folder location.
// without the license file the library will not work.
copyLicenseAndDemoFilesFromAssetsToSDIfNeeded();
commandStr = command;
setCommand(commandStr);
runTranscoing();
}
}
虽然收到了Transcoding Successfully的通知,但是好像压缩后的文件容量一直是0。(图片底部的日志)
我不知道结果,因为下面的图片好不好,我得不到预期的结果 - 视频完全成功压缩。
有人知道为什么压缩后文件总是0,请告诉我。谢谢。
这是日志猫:
03-13 14:49:45.655: I/ActivityManager(6065): Timeline: Activity_launch_request id:app.cloudstringers time:38212359
03-13 14:49:45.665: V/Home(6065): Global ID is 000400010007;Sell is 3
03-13 14:49:45.770: D/ffmpeg4android(6065): path /storage/emulated/0/videokit/out.mp4
03-13 14:49:45.770: I/ffmpeg4android(6065): workingFolderPath: /sdcard/videokit/
03-13 14:49:45.775: D/ffmpeg4android(6065): Working directory exists, not coping assests (license file and demo videos)
03-13 14:49:45.785: D/ffmpeg4android(6065): output directory exists.
03-13 14:49:45.785: I/ffmpeg4android(6065): Command is set
03-13 14:49:45.785: I/ffmpeg4android(6065): set remoteNotificationIconId: 0
03-13 14:49:45.785: D/ffmpeg4android(6065): Client Cannot unbind - service not bound
03-13 14:49:45.785: D/ffmpeg4android(6065): Client stopService()
03-13 14:49:45.790: W/ContextImpl(6065): Implicit intents with startService are not safe: Intent { act=com.netcompss.ffmpeg4android.FFMpegRemoteServiceBridge } android.content.ContextWrapper.stopService:499 com.netcompss.ffmpeg4android_client.BaseWizard.stopService:451 com.netcompss.ffmpeg4android_client.BaseWizard.runTranscoing:285
03-13 14:49:45.795: I/ffmpeg4android(6065): !!!!!!!!!!!!!!!!!!services.size(): 1
03-13 14:49:45.795: I/ffmpeg4android(6065): putting Base categoty
03-13 14:49:45.810: D/ffmpeg4android(6065): started: com.netcompss.ffmpeg4android.FFMpegRemoteServiceBridge
03-13 14:49:45.810: D/ffmpeg4android(6065): Client startService()
03-13 14:49:45.810: D/ffmpeg4android(6065): bindService() called
03-13 14:49:45.815: W/ContextImpl(6065): Implicit intents with startService are not safe: Intent { act=com.netcompss.ffmpeg4android.FFMpegRemoteServiceBridge } android.content.ContextWrapper.bindService:517 com.netcompss.ffmpeg4android_client.BaseWizard.bindService:462 com.netcompss.ffmpeg4android_client.BaseWizard.runTranscoing:288
03-13 14:49:45.820: D/ffmpeg4android(6065): Client bindService()
03-13 14:49:45.935: I/ffmpeg4android(6616): =======service onCreate(): Stopping forground (to overcome 2.3.x bug)
03-13 14:49:45.935: I/ffmpeg4android(6616): =======service onBind()=======
03-13 14:49:45.940: I/ffmpeg4android(6616): ===onStartCommand called
03-13 14:49:45.940: I/ffmpeg4android(6616): ===onStartCommand cat: Base
03-13 14:49:45.940: D/ffmpeg4android(6616): onStartCommand, START_STICKY, base Command
03-13 14:49:45.955: I/ffmpeg4android(6616): get remoteNotificationIconId: 0
03-13 14:49:45.955: I/ffmpeg4android(6616): notifIcon is set
03-13 14:49:45.955: I/ffmpeg4android(6616): Start RemoteService with notification id: 5326
03-13 14:49:45.965: I/ffmpeg4android(6616): Run called.
03-13 14:49:45.965: D/ffmpeg4android(6616): Sleeping, waiting for command
03-13 14:49:45.970: D/ffmpeg4android(6065): Client onServiceConnected()
03-13 14:49:45.970: I/ffmpeg4android(6065): invokeService called
03-13 14:49:45.970: I/Videokit(6065): licenseCheck in path: /sdcard/videokit
03-13 14:49:45.970: I/Videokit(6065): isLicExistsComplex...
03-13 14:49:45.970: I/Videokit(6065): trying to open /sdcard/videokit/ffmpeglicense.lic
03-13 14:49:45.970: I/Videokit(6065): license file found...
03-13 14:49:45.970: I/Videokit(6065): time decoded: 1394535283
03-13 14:49:45.970: I/Videokit(6065): timeStrDec 1394535283 is a valid number.
03-13 14:49:45.970: I/Videokit(6065): time diff: 161702
03-13 14:49:45.970: I/Videokit(6065): You used 1 of your 15 trial days.
03-13 14:49:45.970: I/ffmpeg4android(6065): setting remote notification info
03-13 14:49:45.970: D/ffmpeg4android(6616): command items num: 21
03-13 14:49:45.970: D/ffmpeg4android(6616): command: ffmpeg -y -i /storage/emulated/0/videokit/out.mp4 -strict experimental -s 320x240 -r 15 -aspect 3:4 -ab 12288 -vcodec mpeg4 -b 2097152 -sample_fmt s16 /sdcard/out.mp4
03-13 14:49:45.970: D/ffmpeg4android(6616): workingFolder from remote: /sdcard/videokit
03-13 14:49:45.970: D/ffmpeg4android(6065): deleteing: /sdcard/videokit/vk.log isdeleted: true
03-13 14:49:45.975: D/ffmpeg4android(6065): deleteing: /sdcard/videokit/ffmpeg4android.log isdeleted: false
03-13 14:49:45.975: D/ffmpeg4android(6065): deleteing: /sdcard/videokit/videokit.log isdeleted: true
03-13 14:49:45.980: D/ffmpeg4android(6065): Client invokeService()
03-13 14:49:45.980: D/ffmpeg4android(6065): Acquire wake lock
03-13 14:49:46.265: D/ffmpeg4android(6616): Sleeping, waiting for command
03-13 14:49:46.295: D/ffmpeg4android(6065): TranscodeBackground doInBackground started
03-13 14:49:46.295: I/ffmpeg4android(6616): =======remote service runTranscoding ======
03-13 14:49:46.340: V/HomeAsync(6065): TOTAL_SPACE is 1;AVAILABLE_SPACE is 0.451
03-13 14:49:46.345: I/ActivityManager(6065): Timeline: Activity_idle id: android.os.BinderProxy@423deed8 time:38213045
03-13 14:49:46.345: I/ActivityManager(6065): Timeline: Activity_idle id: android.os.BinderProxy@420323a0 time:38213045
03-13 14:49:46.565: D/dalvikvm(6616): Trying to load lib /data/app-lib/app.cloudstringers-2/libvideokit.so 0x41b285f0
03-13 14:49:46.570: D/dalvikvm(6616): Added shared lib /data/app-lib/app.cloudstringers-2/libvideokit.so 0x41b285f0
03-13 14:49:46.570: I/Videokit(6616): Loading native library compiled at 21:59:53 Oct 23 2013
03-13 14:49:46.575: I/ffmpeg4android(6616): ===============Running command from thread path: /sdcard/videokit
03-13 14:49:46.575: I/Videokit(6616): vk ffmpeg sdcardPath: /sdcard/videokit
03-13 14:49:46.575: I/Videokit(6616): licenseCheck in path: /sdcard/videokit
03-13 14:49:46.575: I/Videokit(6616): isLicExistsComplex...
03-13 14:49:46.575: I/Videokit(6616): trying to open /sdcard/videokit/ffmpeglicense.lic
03-13 14:49:46.575: I/Videokit(6616): license file found...
03-13 14:49:46.575: I/ffmpeg4android(6616): =======ProgressBackgroundRemote doInBackground=========
03-13 14:49:46.575: I/Videokit(6616): time decoded: 1394535283
03-13 14:49:46.575: I/Videokit(6616): timeStrDec 1394535283 is a valid number.
03-13 14:49:46.575: I/Videokit(6616): time diff: 161703
03-13 14:49:46.575: I/Videokit(6616): You used 1 of your 15 trial days.
03-13 14:49:46.575: D/Videokit(6616): license check rc: 0
03-13 14:49:46.575: D/Videokit(6616): run() called verion 2.0
03-13 14:49:46.575: D/Videokit(6616): run passing off to main()
03-13 14:49:46.800: D/ffmpeg4android(6065): onServiceDisconnected
03-13 14:49:48.640: I/ffmpeg4android(6065): Got real duration: 00:00:07.78
03-13 14:49:48.640: I/ffmpeg4android(6065): ==== getting currentVkLogSize from VK
03-13 14:49:48.640: D/ffmpeg4android(6065): currentVkLogSize: 5751
03-13 14:49:48.645: I/ffmpeg4android(6065): No ffmpeg4android_log file, using vk log
03-13 14:49:48.645: I/line(6065): _rate, rate, width or height
03-13 14:49:48.650: I/line(6065): Statistics: 0 seeks, 0 writeouts
03-13 14:49:48.650: I/line(6065): Statistics: 72873 bytes read, 2 seeks
03-13 14:49:48.650: D/ffmpeg4android(6065): currentTimeStr: exit
03-13 14:49:48.650: D/ffmpeg4android(6065): ============Found one of the exit tokens in the log============
03-13 14:49:48.650: I/ffmpeg4android(6065): onProgressUpdate: 100
03-13 14:49:48.650: D/ffmpeg4android(6065): Releasing wake lock
03-13 14:49:48.650: D/ffmpeg4android(6065): TranscodeBackground onPostExecute
03-13 14:49:48.700: D/ffmpeg4android(6065): /sdcard/videokit/null length in bytes: 0
03-13 14:49:48.700: D/ffmpeg4android(6065): showNotifications
03-13 14:49:48.700: W/ffmpeg4android(6065): output file is not set use the setOutputFilePath method to set the full output file path
03-13 14:49:48.705: I/ffmpeg4android(6065): FFMPEG finished.
03-13 14:49:48.710: D/ffmpeg4android(6065): releaseService()
03-13 14:49:48.710: D/ffmpeg4android(6065): Client stopService()
03-13 14:49:48.710: W/ContextImpl(6065): Implicit intents with startService are not safe: Intent { act=com.netcompss.ffmpeg4android.FFMpegRemoteServiceBridge } android.content.ContextWrapper.stopService:499 com.netcompss.ffmpeg4android_client.BaseWizard.stopService:451 com.netcompss.ffmpeg4android_client.BaseWizard.handleServiceFinished:513
最佳答案
您也可以考虑使用来自原始来源的真实(免费!)Android 版 FFmpeg:http://trac.ffmpeg.org/wiki/How%20to%20compile%20FFmpeg%20for%20Android而不是使用似乎违反 FFmpeg LGPL 许可证的人的一些第三方编译。
关于android - 使用 ffmpeg4android 库压缩视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22341706/