Я строю приложение для Android, которое будет кодировать изображение, снятое из предварительного просмотра камеры, а затем расшифровывать его. Я использую библиотеку FFMPEG для кодирования и декодирования. Чтобы построить статическую библиотеку с X264, я использовал этот урок. http://dl.dropbox.com/u/22605641/ffmpeg ... /main.html. В качестве исходного кода FFMPEG, если я использую тот, который загружен по ссылке, приведенной в учебном пособии, я могу построить его, но не могу построить библиотеку, если я использую исходный код, загруженный отсюда GIT Clone Git: //source.ffmpeg.org/ffmpeg.git ffmpeg. Я построил библиотеку в Ubuntu и использовал ее в Windows 7 в Eclipse. Поскольку мне нужен только энкодер и декодер H264, которые я использовал следующим кодом для FFMPEG, слегка измененный в учебном пособии. < /P>
#!/bin/bash
NDK=~/Documents/android-ndk-r8e
PLATFORM=$NDK/platforms/android-8/arch-arm
PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86
PREFIX=/home/android-ffmpeg
function build_one
{
./configure --target-os=linux --prefix=$PREFIX \
--enable-cross-compile \
--enable-runtime-cpudetect \
--disable-asm \
--arch=arm \
--cc=$PREBUILT/bin/arm-linux-androideabi-gcc \
--cross-prefix=$PREBUILT/bin/arm-linux-androideabi- \
--disable-stripping \
--nm=$PREBUILT/bin/arm-linux-androideabi-nm \
--sysroot=$PLATFORM \
--enable-nonfree \
--enable-version3 \
--disable-everything \
--enable-gpl \
--disable-doc \
--enable-avresample \
--disable-ffplay \
--disable-ffserver \
--enable-ffmpeg \
--disable-ffprobe \
--enable-avcodec \
--enable-libx264 \
--enable-encoder=libx264 \
--enable-encoder=libx264rgb \
--enable-decoder=h263 \
--enable-decoder=h264 \
--enable-decoder=svq3 \
--enable-zlib \
--enable-gpl \
--enable-pic \
--disable-devices \
--disable-avdevice \
--extra-cflags="-I/home/android-ffmpeg/include -fPIC -DANDROID -D__thumb__ -mthumb -Wfatal-errors -Wno-deprecated -mfloat-abi=softfp -mfpu=vfpv3-d16 -marm -march=armv7-a" \
--extra-ldflags="-L/home/android-ffmpeg/lib"
make -j4 install
$PREBUILT/bin/arm-linux-androideabi-ar d libavcodec/libavcodec.a inverse.o
$PREBUILT/bin/arm-linux-androideabi-ld -rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -L$PREFIX/lib -soname libffmpeg.so -shared -nostdlib -z,noexecstack -Bsymbolic --whole-archive --no-undefined -o $PREFIX/libffmpeg.so libavcodec/libavcodec.a libavfilter/libavfilter.a libavresample/libavresample.a libavformat/libavformat.a libavutil/libavutil.a libswscale/libswscale.a -lc -lm -lz -ldl -llog -lx264 --warn-once --dynamic-linker=/system/bin/linker $PREBUILT/lib/gcc/arm-linux-androideabi/4.4.3/libgcc.a
}
build_one
< /code>
После строительства библиотеки я смог построить Android NDK. Небольшая часть моего кода JNI здесь. < /P>
JNIEXPORT jint JNICALL Java_com_example_testjava_TestjniActivity_initencoder(JNIEnv* env,jobject obj){
av_register_all();
avcodec_register_all();
codec = avcodec_find_encoder(AV_CODEC_ID_H264);
if (!codec) {
__android_log_write(ANDROID_LOG_INFO, "debug", "not found");
return -1;
}
.
.
.
}
< /code>
Когда я запускаю свой исходный код Java, который вызывает initencoder (), я получаю -1 как возвращаемое значение и отпечатки logcat «не найден». Это означает, что AVCODEC_FIND_ENCODER () возвращает NULL, и если условие в порядке. Я не знаю, что случилось. Почему эта функция возвращает NULL? Я много искал, но не нашел никакого решения, которое могло бы направить меня в правильное направление. Некоторые говорят использовать avcodec_init (). Но команда NDK-Build не удается и показывает ошибку, говоря, что неопределенная ссылка на 'avcodec_init ()'. Я начал с сборки библиотеки, потому что я думал, что я делаю неправильно с первого этапа. Я совершил какую -либо ошибку в здании библиотеки, как не позволяя мне, что мне нужно? Пожалуйста, помогите мне здесь. Это довольно срочно для меня.
Подробнее здесь: https://stackoverflow.com/questions/158 ... turns-null
AVCODEC_FIND_ENCODER (AV_CODEC_ID_H264) возвращает NULL ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1758611010
Anonymous
Я строю приложение для Android, которое будет кодировать изображение, снятое из предварительного просмотра камеры, а затем расшифровывать его. Я использую библиотеку FFMPEG для кодирования и декодирования. Чтобы построить статическую библиотеку с X264, я использовал этот урок. http://dl.dropbox.com/u/22605641/ffmpeg_android/main.html. В качестве исходного кода FFMPEG, если я использую тот, который загружен по ссылке, приведенной в учебном пособии, я могу построить его, но не могу построить библиотеку, если я использую исходный код, загруженный отсюда GIT Clone Git: //source.ffmpeg.org/ffmpeg.git ffmpeg. Я построил библиотеку в Ubuntu и использовал ее в Windows 7 в Eclipse. Поскольку мне нужен только энкодер и декодер H264, которые я использовал следующим кодом для FFMPEG, слегка измененный в учебном пособии. < /P>
#!/bin/bash
NDK=~/Documents/android-ndk-r8e
PLATFORM=$NDK/platforms/android-8/arch-arm
PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86
PREFIX=/home/android-ffmpeg
function build_one
{
./configure --target-os=linux --prefix=$PREFIX \
--enable-cross-compile \
--enable-runtime-cpudetect \
--disable-asm \
--arch=arm \
--cc=$PREBUILT/bin/arm-linux-androideabi-gcc \
--cross-prefix=$PREBUILT/bin/arm-linux-androideabi- \
--disable-stripping \
--nm=$PREBUILT/bin/arm-linux-androideabi-nm \
--sysroot=$PLATFORM \
--enable-nonfree \
--enable-version3 \
--disable-everything \
--enable-gpl \
--disable-doc \
--enable-avresample \
--disable-ffplay \
--disable-ffserver \
--enable-ffmpeg \
--disable-ffprobe \
--enable-avcodec \
--enable-libx264 \
--enable-encoder=libx264 \
--enable-encoder=libx264rgb \
--enable-decoder=h263 \
--enable-decoder=h264 \
--enable-decoder=svq3 \
--enable-zlib \
--enable-gpl \
--enable-pic \
--disable-devices \
--disable-avdevice \
--extra-cflags="-I/home/android-ffmpeg/include -fPIC -DANDROID -D__thumb__ -mthumb -Wfatal-errors -Wno-deprecated -mfloat-abi=softfp -mfpu=vfpv3-d16 -marm -march=armv7-a" \
--extra-ldflags="-L/home/android-ffmpeg/lib"
make -j4 install
$PREBUILT/bin/arm-linux-androideabi-ar d libavcodec/libavcodec.a inverse.o
$PREBUILT/bin/arm-linux-androideabi-ld -rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -L$PREFIX/lib -soname libffmpeg.so -shared -nostdlib -z,noexecstack -Bsymbolic --whole-archive --no-undefined -o $PREFIX/libffmpeg.so libavcodec/libavcodec.a libavfilter/libavfilter.a libavresample/libavresample.a libavformat/libavformat.a libavutil/libavutil.a libswscale/libswscale.a -lc -lm -lz -ldl -llog -lx264 --warn-once --dynamic-linker=/system/bin/linker $PREBUILT/lib/gcc/arm-linux-androideabi/4.4.3/libgcc.a
}
build_one
< /code>
После строительства библиотеки я смог построить Android NDK. Небольшая часть моего кода JNI здесь. < /P>
JNIEXPORT jint JNICALL Java_com_example_testjava_TestjniActivity_initencoder(JNIEnv* env,jobject obj){
av_register_all();
avcodec_register_all();
codec = avcodec_find_encoder(AV_CODEC_ID_H264);
if (!codec) {
__android_log_write(ANDROID_LOG_INFO, "debug", "not found");
return -1;
}
.
.
.
}
< /code>
Когда я запускаю свой исходный код Java, который вызывает initencoder (), я получаю -1 как возвращаемое значение и отпечатки logcat «не найден». Это означает, что AVCODEC_FIND_ENCODER () возвращает NULL, и если условие в порядке. Я не знаю, что случилось. Почему эта функция возвращает NULL? Я много искал, но не нашел никакого решения, которое могло бы направить меня в правильное направление. Некоторые говорят использовать avcodec_init (). Но команда NDK-Build не удается и показывает ошибку, говоря, что неопределенная ссылка на 'avcodec_init ()'. Я начал с сборки библиотеки, потому что я думал, что я делаю неправильно с первого этапа. Я совершил какую -либо ошибку в здании библиотеки, как не позволяя мне, что мне нужно? Пожалуйста, помогите мне здесь. Это довольно срочно для меня.
Подробнее здесь: [url]https://stackoverflow.com/questions/15801722/avcodec-find-encoderav-codec-id-h264-returns-null[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия