как вы можете увидеть av_dump_format для печати сообщений в android logcat - PullRequest
1 голос
/ 10 марта 2020

Мне просто интересно ...

как вы можете увидеть сообщение печати av_dump_format в android logcat?

1 Ответ

1 голос
/ 03 апреля 2020

Прежде всего, вам нужно включить журнал в вашем Android.mk или CMakeLists.txt файле

Если вы используете сборку NDK, то добавьте

LOCAL_LDLIBS    := -llog

к вашему Android.mk файл.

ИЛИ

Если вы используете сборку CMake, то сначала найдите библиотеку журналов, используя

find_library( # Defines the name of the path variable that stores the
              # location of the NDK library.
              log_lib

              # Specifies the name of the NDK library that
              # CMake needs to locate.
              log )

, а затем свяжите библиотеку журналов с вашей целевой библиотекой. как это

target_link_libraries( # Specifies the target library.
                       YOUR_LIB_NAME

                       # Links the log library to the target library.
                       ${log_lib} )

Как только вы закончите связывать библиотеку журналов с вашей собственной сборкой, сделайте следующее:

  • Добавьте #include "android/log.h" поверх файла.
  • Определите макрос для печати журнала следующим образом

#define print_log(LOG_LEVEL, TAG, ...) __android_log_print(LOG_LEVEL, TAG, __VA_ARGS__)

  • Создайте функцию Callback для вашего собственного класса с указанием c подпись метода
static void callback(void *ptr, int level, const char *fmt, va_list vl)
{
    if (level > av_log_get_level())
        return;

    va_list vl2;
    char line[1024];
    static int print_prefix = 1;

    va_copy(vl2, vl);
    av_log_format_line(ptr, level, fmt, vl2, line, sizeof(line), &print_prefix);
    va_end(vl2);

    print_log(ANDROID_LOG_INFO, "FFMPEG", "%s", line);
}
  • Установите уровень журнала, который вы хотите получить av_log_set_level(32);
  • Установите обратный вызов журнала, вызвав av_log_set_callback(callback);

Вы можете принять решение с уровня, хотите ли вы распечатать журнал как INFO, ERROR, WARNING or VERVOSE из level.

Сборка приложения и Запуск запятая nd

ffmpeg -hide_banner -i /storage/emulated/0/input.mp4

Вы должны увидеть что-то подобное в logcat.

2020-04-03 11:41:49.154 25142-25259/com.example.ffmpeg I/FFMPEG: Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/storage/emulated/0/input.mp4':
2020-04-03 11:41:49.154 25142-25259/com.example.ffmpeg I/FFMPEG:   Metadata:
2020-04-03 11:41:49.154 25142-25259/com.example.ffmpeg I/FFMPEG:     major_brand     : 
2020-04-03 11:41:49.154 25142-25259/com.example.ffmpeg I/FFMPEG: isom
2020-04-03 11:41:49.154 25142-25259/com.example.ffmpeg I/FFMPEG:     minor_version   : 
2020-04-03 11:41:49.154 25142-25259/com.example.ffmpeg I/FFMPEG: 512
2020-04-03 11:41:49.155 25142-25259/com.example.ffmpeg I/FFMPEG:     compatible_brands: 
2020-04-03 11:41:49.155 25142-25259/com.example.ffmpeg I/FFMPEG: isomiso2avc1mp41
2020-04-03 11:41:49.155 25142-25259/com.example.ffmpeg I/FFMPEG:     encoder         : 
2020-04-03 11:41:49.155 25142-25259/com.example.ffmpeg I/FFMPEG: Lavf57.83.100
2020-04-03 11:41:49.155 25142-25259/com.example.ffmpeg I/FFMPEG:   Duration: 
2020-04-03 11:41:49.155 25142-25259/com.example.ffmpeg I/FFMPEG: 00:00:58.10
2020-04-03 11:41:49.155 25142-25259/com.example.ffmpeg I/FFMPEG: , start: 
2020-04-03 11:41:49.155 25142-25259/com.example.ffmpeg I/FFMPEG: 0.000000
2020-04-03 11:41:49.155 25142-25259/com.example.ffmpeg I/FFMPEG: , bitrate: 
2020-04-03 11:41:49.155 25142-25259/com.example.ffmpeg I/FFMPEG: 3716 kb/s
2020-04-03 11:41:49.155 25142-25259/com.example.ffmpeg I/FFMPEG:     Stream #0:0
2020-04-03 11:41:49.155 25142-25259/com.example.ffmpeg I/FFMPEG: (und)
2020-04-03 11:41:49.155 25142-25259/com.example.ffmpeg I/FFMPEG: : Video: h264 (avc1 / 0x31637661), yuv420p, 1080x1350, 3588 kb/s
2020-04-03 11:41:49.155 25142-25259/com.example.ffmpeg I/FFMPEG: , 
2020-04-03 11:41:49.155 25142-25259/com.example.ffmpeg I/FFMPEG: 29.99 fps, 
2020-04-03 11:41:49.155 25142-25259/com.example.ffmpeg I/FFMPEG: 29.97 tbr, 
2020-04-03 11:41:49.155 25142-25259/com.example.ffmpeg I/FFMPEG: 1000k tbn, 
2020-04-03 11:41:49.155 25142-25259/com.example.ffmpeg I/FFMPEG: 2000k tbc
2020-04-03 11:41:49.155 25142-25259/com.example.ffmpeg I/FFMPEG:  (default)
2020-04-03 11:41:49.155 25142-25259/com.example.ffmpeg I/FFMPEG:     Metadata:
2020-04-03 11:41:49.155 25142-25259/com.example.ffmpeg I/FFMPEG:       handler_name    : 
2020-04-03 11:41:49.155 25142-25259/com.example.ffmpeg I/FFMPEG: VideoHandler
2020-04-03 11:41:49.155 25142-25259/com.example.ffmpeg I/FFMPEG:     Stream #0:1
2020-04-03 11:41:49.155 25142-25259/com.example.ffmpeg I/FFMPEG: (und)
2020-04-03 11:41:49.155 25142-25259/com.example.ffmpeg I/FFMPEG: : Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 124 kb/s
2020-04-03 11:41:49.155 25142-25259/com.example.ffmpeg I/FFMPEG:  (default)
2020-04-03 11:41:49.155 25142-25259/com.example.ffmpeg I/FFMPEG:     Metadata:
2020-04-03 11:41:49.155 25142-25259/com.example.ffmpeg I/FFMPEG:       handler_name    : 
2020-04-03 11:41:49.155 25142-25259/com.example.ffmpeg I/FFMPEG: SoundHandler
2020-04-03 11:41:49.155 25142-25259/com.example.ffmpeg I/FFMPEG: At least one output file must be specified
2020-04
...