2011年7月14日 星期四

Android Emulator 問題

今天打開已經長了厚厚一層灰塵的 Elicpse,發現需要更新;全部更新完後,很自然地按下 Run,然後出現…

[2011-07-14 20:34:28 - Emulator] invalid command-line parameter: Files\Android\android-sdk-windows\tools/emulator-arm.exe.
[2011-07-14 20:34:28 - Emulator] Hint: use '@foo' to launch a virtual device named 'foo'.
[2011-07-14 20:34:28 - Emulator] please use -help for more information

奇怪,之前一模一樣的步驟都可以執行的。

原本還懷疑是不是更新不完全,有股衝動想要把整個SDK重新安裝;後來在這個網頁看到了原因

https://code.google.com/p/android/issues/detail?id=18317

原來是SDK安裝在”Program Files”目錄底下,Program跟Files中間的空格在搞鬼。

解決方法:按下Eclipse的Windows→Preferences,在跳出來的視窗選擇Android,然後在SDK Location把目錄位址改成C:\Progra~1\Android\android-sdk-windows,一切就正常了。

2011年1月4日 星期二

使用ffmpeg判斷壓縮的CODEC

要判斷一個影片檔使用的Video CODEC和Audio CODEC,可以藉ffmpeg實現。

程式碼如下:

 

#include <libavformat/avformat.h>

int main(int argc, char *argv[]) {

    AVFormatContext *avformat;

    av_register_all();
    av_open_input_file(&avformat,argv[1],NULL,0,NULL);
    av_find_stream_info(avformat);
    dump_format(avformat, 0, argv[1], 0);

    return 0;
}

 

記得要先安裝ffmpeg library,並且在compile上面的程式時,要link libavformat library, 即 gcc xxx.c -lavformat。

用法很簡單,就執行檔後面跟著要判斷的影片檔即可。輸出範例如下:

> ./a.out ~/iPod_video/dance.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/khchung/iPod_video/dance.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf52.47.0
  Duration: 00:06:17.42, start: 0.000000, bitrate: 1262 kb/s
    Stream #0.0(und): Video: h264, yuv420p, 480x320 [PAR 1:1 DAR 3:2], 1132 kb/s, 24 fps, 24 tbr, 24 tbn, 48 tbc
    Stream #0.1(und): Audio: aac, 48000 Hz, stereo, s16, 126 kb/s

可以看出,Video 部份是做用H.264壓縮,audio 則是用 AAC 壓縮。