Mac下编译Android FFmpeg2.2.2报错gcc is unable to create an executable file

大家好。报错如题。查看config.log里面有错:
EGIN /var/folders/ch/3lnns2f14bv398_ghdz1v9_h0000gn/T//ffconf.nj0OFFb3.c
1 #include
2 #if !(defined ARM_ARCH_4 || defined TARGET_ARCH_4)
3 #error "unsatisfied condition: defined __ARM_ARCH_4
|| defined __TARGET_ARCH_4"
4 #endif
END /var/folders/ch/3lnns2f14bv398_ghdz1v9_h0000gn/T//ffconf.nj0OFFb3.c

有很多都是类似的,还有比如
#error "unsatisfied condition: defined ARM_ARCH_4T || defined TARGET_ARCH_4T"
#error "unsatisfied condition: defined __ARM_ARCH_5
|| defined __TARGET_ARCH_5"
这种。

我的config.sh如下:

#!/bin/bash

export PREBUILT=/Users/AAA/Documents/Development/Android/Environment/android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64
export PLATFORM=/Users/AAA/Documents/Development/Android/Environment/android-ndk-r9d/platforms/android-9/arch-arm

./configure --target-os=linux \
--arch=arm \
--enable-version3 \
--enable-gpl \
--enable-nonfree \
--disable-stripping \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffserver \
--disable-ffprobe \
--disable-symver \
--enable-encoders \
--enable-decoders \
--enable-muxers \
--disable-devices \
--disable-protocols \
--enable-protocol=file \
--enable-avfilter \
--enable-network \
--enable-avdevice \
--disable-asm \
--enable-cross-compile \
--enable-runtime-cpudetect \
--sysroot=$PLATFORM \
--disable-everything \
--disable-doc \
--enable-avresample \
--enable-demuxer=rtsp \
--enable-muxer=rtsp \
--enable-protocol=rtp \
--enable-hwaccels \
--enable-zlib \
--prefix=$PLATFORM/usr \
--cc=$PREBUILT/bin/arm-linux-androideabi-gcc \
--cross-prefix=$PREBUILT/bin/arm-linux-androideabi- \
--nm=$PREBUILT/bin/arm-linux-androideabi-nm \
--extra-cflags="-I$PLATFORM/usr/include -fPIC -DANDROID -D__thumb__ -mthumb -Wfatal-errors -Wno-deprecated -mfloat-abi=softfp -mfpu=vfpv3-d16 -marm -march=armv7-a" \
--disable-asm \
--enable-neon \
--enable-armv5te \
--extra-ldflags="-Wl,-T,$PREBUILT/arm-linux-androideabi/lib/ldscripts/armelf_linux_eabi.x -Wl,-rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -nostdlib $PLATFORM/usr/lib/crtbegin_dynamic.o $PLATFORM/usr/lib/crtend_android.o -lc -lm -ldl"

谢谢大家了。

1个回答

问题解决了么?我在windows上编译,也遇到这个问题。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
mac 下编译 ffmpeg的 libaacplus-2.0.2 总是报错求大神解决办法,谁能教我再mac下编译ffmpeg也行
make[2]: Nothing to be done for `all'. Making all in frontend gcc -DHAVE_CONFIG_H -I. -I.. -I../include -I../src -g -O2 -c -o main.o main.c main.c:89:46: warning: data argument not used by format string [-Wformat-extra-args] fprintf(stdout,"setting cfg failed\n", ret); ~~~~~~~~~~~~~~~~~~~~~~ ^ 1 warning generated. /bin/sh ../libtool --tag=CC --mode=link gcc -g -O2 -o aacplusenc main.o ../src/libaacplus.la -lm libtool: link: gcc -g -O2 -o .libs/aacplusenc main.o ../src/.libs/libaacplus.dylib -lm Undefined symbols for architecture x86_64: "_AuChannelOpen", referenced from: _main in main.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make[2]: *** [aacplusenc] Error 1 make[1]: *** [all-recursive] Error 1 make: *** [all] Error 2 risoumactekiMacBook-Pro:libaacplus-2.0.2 lixiang$
用Ubuntu16.04编译iDT算法(c++)时报错:/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o: In function `_start':(.text+0x20): undefined reference to `main'
最近在学习iDT算法,刚刚接触Ubuntu也刚刚接触c++,很多东西不是很懂,请教各位: 我在编译iDT算法的时候,需要依赖opencv和ffmpeg两个库,我安装成功并且确保这两个库能用之后,去编译iDT算法,'make'之后报错: ![图片说明](https://img-ask.csdn.net/upload/202001/10/1578648835_846854.png) 查过资料,有的人说是缺少main函数,但是我确保.cpp文件里是有main函数的。 也有帖子说是crt1.o文件的问题,也有帖子说是动态库的问题,现在很迷茫,不知道问题出在哪里,希望各位能够帮助我,万分感谢。 同时为了方便各位帮我找到问题,我上一下我的makefile文件以及Opencv和ffmpeg的安装信息。 Makefile文件 ``` # set the binaries that have to be built TARGETS := DenseTrack Video # set the build configuration set BUILD := release #BUILD := debug # set bin and build dirs BUILDDIR := .build_$(BUILD) BINDIR := $(BUILD) # libraries LDLIBS = $(addprefix -l, $(LIBS) $(LIBS_$(notdir $*))) LIBS := \ opencv_core opencv_highgui opencv_video opencv_imgproc \ avformat avdevice avutil avcodec swscale # set some flags and compiler/linker specific commands CXXFLAGS = -pipe -D __STDC_CONSTANT_MACROS -D STD=std -Wall $(CXXFLAGS_$(BUILD)) -I. -I/opt/include CXXFLAGS_debug := -ggdb CXXFLAGS_release := -O3 -DNDEBUG -ggdb LDFLAGS = -L/opt/lib -pipe -Wall $(LDFLAGS_$(BUILD)) LDFLAGS_debug := -ggdb LDFLAGS_release := -O3 -ggdb include make/generic.mk ``` 下面是opencv和ffmpeg的安装信息: ffmpeg: ![图片说明](https://img-ask.csdn.net/upload/202001/10/1578649174_591798.png) opencv: ![图片说明](https://img-ask.csdn.net/upload/202001/10/1578649330_643110.png) 恳请各位帮忙!!(小弟没有金币,没办法给悬赏,还请各位见谅!)
在树莓派(Raspbian系统)下安装open,编译时,cap_ffmpeg.cpp报错不通过
如题,已经两天了!在试了opencv2.4.9,2.4.10,2.3.1三个版本,在make时都是在 同一个地方报错,下贴上报错的内容 modules/highgui/CMakeFiles/opencv_highgui.dir/build.make:215: recipe for target 'modules/highgui/CMakeFiles/opencv_highgui.dir/src/cap_ffmpeg.cpp.o' failed make[2]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/src/cap_ffmpeg.cpp.o ] Error 1 CMakeFiles/Makefile2:1772: recipe for target 'modules/highgui/CMakeFiles/opencv_ highgui.dir/all' failed make[1]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/all] Error 2 Makefile:137: recipe for target 'all' failed make: *** [all] Error 2 我怀疑是cap_ffmpeg.h或者cap_ffmpeg.cpp有什么问题,但是不知道该怎么办, 百度了很多,其中这个帖子http://www.xuebuyuan.com/2046558.html似乎问题 和我很相似,但是并没有解决办法。找到了另外一个帖子http://blog.csdn.net/xizero00/article/details/7386695,问题也一样,它给出了解决办法还有改好的cap_ffmpeg.h,但是放上去,还是不管用。 毕设就差这个问题了.....求解救
编译android5.1,使用哪个版本的ndk
目前想使用ndk编译开源ffmpeg库,运行环境是android5.0。需要使用哪个版本的sdk呢? 我之前运行在android4.0上编译方式如下: # for android4.0 PREBUILT=/android-ndk-r6-crystax-2/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86 PLATFORM=/android-ndk-r6-crystax-2/platforms/android-8/arch-arm
编译pjsip android版时SDL报错
为了支持x264解码,使用支持x264的ffmpeg和SDL2.0编译pjsip的android版。编译好了SDL2,在pjsip的根目录下使用./configure-android 能够找到SDL2.0.但是编译的时候总是会报错。如图所视:![图片说明](https://img-ask.csdn.net/upload/201508/26/1440557385_978482.png) 如果不编译android版,只编译linux版是不会出问题的。
mac 10.10.3 Xcode6.3 环境下 ffmpeg 编译 kxmovie
ffmpeg 编译生成了 FFmpeg-iOS 如何添加到kxmovie,使其通过编译。
在用ffmpeg 2.0做一个转码工具的时候,转出的视频 视频播放速度变快
在用最新版 ffmpeg 2.0 转换视频的时候 首先遇到的一个问题是 在 avformat_write_header(pFormatCtxOut, NULL); 处报错:[mp4 @ 0x8183600] track 1: codec frame size is not set 虽然报了这个错误 但是还是能够转码,只是转出来的视频本来30秒 但是15秒左右就没有了,应该没有丢帧,只不过画面播放得特别快,就像快进一样。下面是源码,求大神 出场--- // Created by showself on 13-8-19. // Copyright (c) 2013年 showself. All rights reserved. // #include <stdio.h> #include "test2.h" #include <stdlib.h> #include <stdio.h> #include <string.h> #include <math.h> #include <libavutil/opt.h> #include <libavutil/mathematics.h> #include <libavformat/avformat.h> #include <libswscale/swscale.h> #include <libswresample/swresample.h> static AVStream *add_stream(AVFormatContext *oc, AVCodec **codec, enum AVCodecID codec_id); void transTest2(const char *src, const char *dst) { const char *filename; const char *outfilename; AVFormatContext *pFormatCtxIn,*pFormatCtxOut; AVInputFormat *inFmt; AVOutputFormat *outFmt; AVStream *audio_st,*video_st; AVFrame *pFrameIn; AVCodecContext *pVideoCodecCtxIn,*pAudioCodecCtxIn,*pVideoCodecCtxOut,*pAudioCodecCtxOut; AVCodec *pVideoCodecIn,*pAudioCodecIn,*pVideoCodecOut,*pAudioCodecOut; int i ,videoStream,audioStream;; int ret = 0; AVPacket packet; // int frame_count; /* Initialize libavcodec, and register all codecs and formats. */ av_register_all(); if (src == NULL) { printf("no input file"); return; } filename = src; outfilename = dst; /*get inout format*/ inFmt = av_find_input_format("MOV"); /*allocate the input media context*/ pFormatCtxIn = avformat_alloc_context(); if (pFormatCtxIn == NULL) { printf("allocate the input media context error"); return; } // open a video if (avformat_open_input(&pFormatCtxIn, filename, inFmt, NULL)) { return; } // get stream info if (avformat_find_stream_info(pFormatCtxIn, NULL)<0) { return; } // get streams index from a video videoStream = -1; audioStream = -1; for (i=0; i<pFormatCtxIn->nb_streams; i++) { if(pFormatCtxIn->streams[i]->codec->codec_type==AVMEDIA_TYPE_VIDEO) { printf("%d stream 为视频\n",i); videoStream=i; } if (pFormatCtxIn->streams[i]->codec->codec_type == AVMEDIA_TYPE_AUDIO) { audioStream = i;// 音轨位置 printf("%d stream 为音轨\n",i); } } if(videoStream==-1) return ; // Didn't find a video stream or Did not find a audio stream if (audioStream == -1) { return; } // get decode codec contex pointer pVideoCodecCtxIn = pFormatCtxIn->streams[videoStream]->codec; pAudioCodecCtxIn = pFormatCtxIn->streams[audioStream]->codec; // get decode codec pointer pVideoCodecIn = avcodec_find_decoder(pVideoCodecCtxIn->codec_id); if (pVideoCodecIn == NULL) { return; } pAudioCodecIn = avcodec_find_decoder(pAudioCodecCtxIn->codec_id); if (pAudioCodecIn == NULL) { return; } // open codec if (avcodec_open2(pVideoCodecCtxIn, pVideoCodecIn, NULL)<0) { return; } if (avcodec_open2(pAudioCodecCtxIn, pAudioCodecIn, NULL)<0) { return; } // allocate input frame pFrameIn = av_frame_alloc(); if (pFrameIn == NULL) { return; } /* allocate the output media context */ // // method 1 // avformat_alloc_output_context2(&pFormatCtxOut, NULL, NULL, outfilename); // if (!pFormatCtxOut) { // printf("Could not deduce output format from file extension: using MPEG.\n"); // avformat_alloc_output_context2(&pFormatCtxOut, NULL, "mpeg", outfilename); // } // if (!pFormatCtxOut) { // return ; // } // method 2 outFmt = av_guess_format(NULL, outfilename, NULL); if (outFmt == NULL) { return; } pFormatCtxOut = avformat_alloc_context(); if (pFormatCtxOut == NULL) { return; } pFormatCtxOut->oformat = outFmt; sprintf(pFormatCtxOut->filename, "%s",outfilename); // get output codec from AVOutputContext pVideoCodecOut = avcodec_find_encoder(outFmt->video_codec); if (pVideoCodecOut == NULL) { return; } pAudioCodecOut = avcodec_find_encoder(outFmt->audio_codec); if (pAudioCodecOut == NULL) { return; } /* Add the audio and video streams using the default format codecs * and initialize the codecs. */ video_st = NULL; audio_st = NULL; // 添加一条视频流 if (outFmt->video_codec != AV_CODEC_ID_NONE) { // 解码 源视频流 video_st = avformat_new_stream(pFormatCtxOut, pVideoCodecOut); if (video_st == NULL) { return; } pVideoCodecCtxOut = video_st->codec; pVideoCodecCtxOut->codec_type = AVMEDIA_TYPE_VIDEO; pVideoCodecCtxOut->codec_id = outFmt->video_codec; pVideoCodecCtxOut->bit_rate = pVideoCodecCtxIn->bit_rate/2; pVideoCodecCtxOut->width = pVideoCodecCtxIn->width; pVideoCodecCtxOut->height = pVideoCodecCtxIn->height; pVideoCodecCtxOut->time_base.den = 25; pVideoCodecCtxOut->time_base.num = 1; pVideoCodecCtxOut->gop_size = 12; pVideoCodecCtxOut->pix_fmt = PIX_FMT_YUV420P; if (pVideoCodecCtxOut->codec_id == AV_CODEC_ID_MPEG2VIDEO) { /* just for testing, we also add B frames */ pVideoCodecCtxOut->max_b_frames =2; } if (pVideoCodecCtxOut->codec_id == AV_CODEC_ID_MPEG1VIDEO) { /* Needed to avoid using macroblocks in which some coeffs overflow. * This does not happen with normal video, it just happens here as * the motion of the chroma plane does not match the luma plane. */ pVideoCodecCtxOut->mb_decision = 2; } } if (pFormatCtxOut->oformat->flags & AVFMT_GLOBALHEADER) { pVideoCodecCtxOut->flags |= CODEC_FLAG_GLOBAL_HEADER; } // 添加一条音频流 if (outFmt->audio_codec != AV_CODEC_ID_NONE) { audio_st = avformat_new_stream(pFormatCtxOut, pAudioCodecOut); if (audio_st == NULL) { return; } pAudioCodecCtxOut = audio_st->codec; pAudioCodecCtxOut->codec_id = outFmt->audio_codec; pAudioCodecCtxOut->coder_type = AVMEDIA_TYPE_AUDIO; pAudioCodecCtxOut->sample_fmt = pAudioCodecCtxIn->sample_fmt; pAudioCodecCtxOut->bit_rate = pAudioCodecCtxIn->bit_rate; pAudioCodecCtxOut->sample_rate = pAudioCodecCtxIn->sample_rate; pAudioCodecCtxOut->channels = pAudioCodecCtxIn->channels; pAudioCodecCtxOut->channel_layout = pAudioCodecCtxIn->channel_layout; } if (pFormatCtxOut->oformat->flags & AVFMT_GLOBALHEADER) { pAudioCodecCtxOut->flags |= CODEC_FLAG_GLOBAL_HEADER; } // open encode codec if (avcodec_open2(pVideoCodecCtxOut, pVideoCodecOut, NULL)<0) { return; } // if(avcodec_open2(pAudioCodecCtxOut, pAudioCodecOut, NULL)<0) // { // printf("audio encode codec not found\n"); // return; // } av_dump_format(pFormatCtxOut, 0, outfilename, 1); // open the output file, if needed if (!(pFormatCtxOut->flags & AVFMT_NOFILE)) { // if (avio_open(&pFormatCtxOut->pb, outfilename, AVIO_FLAG_WRITE) < 0) { fprintf(stderr, "Could not open '%s'\n", outfilename); return; } } printf("1\n"); // write the stream header, if any // [mp4 @ 0x99a8a00] track 1: codec frame size is not set? avformat_write_header(pFormatCtxOut, NULL); printf("2\n"); av_init_packet(&packet); int frameFinished; int videoFrameCount=0,audioFrameCount=0; int got_packet,frames=0; while (av_read_frame(pFormatCtxIn, &packet)>=0) {// 只要有帧 就读到packet中 printf("video frame %d audio frame %d dts-%lld pts-%lld \n",videoFrameCount,audioFrameCount,packet.dts,packet.pts); frames ++; /*decodec and codec*/ if (packet.stream_index == videoStream) { ret = avcodec_decode_video2(pVideoCodecCtxIn, pFrameIn, &frameFinished, &packet); videoFrameCount++; if (frameFinished) { // pFrameOut->data[0] = pFrameIn->data[0]; // pFrameOut->data[1] = pFrameIn->data[1]; // pFrameOut->data[2] = pFrameIn->data[2]; // pFrameOut->linesize[0] = pFrameIn->linesize[0]; // pFrameOut->linesize[1] = pFrameIn->linesize[1]; // pFrameOut->linesize[2] = pFrameIn->linesize[2]; if (outFmt->flags & AVFMT_RAWPICTURE) { // 不改变图片尺寸 AVPacket pkt; av_init_packet(&pkt); pkt.flags |= AV_PKT_FLAG_KEY; pkt.stream_index = video_st->index; pkt.data = (uint8_t *)pFormatCtxIn; pkt.size = sizeof(AVPicture); av_write_frame(pFormatCtxOut, &pkt); } else // 需要改变尺寸 { AVPacket pkt = {0}; av_init_packet(&pkt); ret = avcodec_encode_video2(pVideoCodecCtxOut, &pkt, pFrameIn, &got_packet); if (ret<0) { return; } /* If size is zero, it means the image was buffered. */ if (!ret && got_packet && pkt.size) { printf("frame dts-%lld pts-%lld \n",packet.dts,packet.pts); pkt.stream_index = video_st->index; pkt.pts = pVideoCodecCtxOut->coded_frame->pts; if(pVideoCodecCtxOut->coded_frame->key_frame) // 如果是关键帧 pkt.flags |= AV_PKT_FLAG_KEY; /* Write the compressed frame to the media file. */ // ret = av_interleaved_write_frame(pFormatCtxOut, &pkt); av_write_frame(pFormatCtxOut, &pkt); } else { ret = 0; } } } } else if(packet.stream_index == audioStream) { audioFrameCount ++; printf("frame dts-%lld pts-%lld \n",packet.dts,packet.pts); av_write_frame(pFormatCtxOut, &packet); } // /* get the delayed frames */ // for (got_packet = 1; got_packet; i++) { // got_output ’Ê // fflush(stdout); // ret = avcodec_encode_video2(pVideoCodecCtxOut, &packet, NULL, &got_packet); // if (ret < 0) { // fprintf(stderr, "Error encoding frame\n"); // exit(1); // } // if (got_packet) { // printf("Write frame %3d (size=%5d)\n", i, packet.size); // av_write_frame(pFormatCtxOut, &packet); // } // } } av_write_trailer(pFormatCtxOut); avcodec_close(pVideoCodecCtxIn); avcodec_close(pVideoCodecCtxOut); avcodec_close(pAudioCodecCtxIn); avcodec_close(pAudioCodecCtxOut); }
最新的 ffmpeg 2.8 其实连yuy2数据包都不能正确转换
说了你也不相信,我用 directx 采集到的数据是从web camera来的 yuy2 数据,我用自己写的转换程序可以成功转换正确的图像rgb24, yuy2 -> rgb24 -> I420 都可以,但是用ffmpeg的sws__scale 怎么也无法正确转换。 sws__scale 的解码过程如下 void scaleYUY2toI420(const void *pSrc, int widthSrc, int heightSrc, void *pDest, int widthDest, int heightDest, bool bQualityImportant/* = false*/) { struct SwsContext *pctx; AVPicture picSrc = { 0 }; AVPicture picDst = { 0 }; enum AVPixelFormat fmtSrc = AV_PIX_FMT_YUYV422; enum AVPixelFormat fmtDst = AV_PIX_FMT_YUV420P; avpicture_fill(&picSrc, (uint8_t*)pSrc, fmtSrc, widthSrc, heightSrc); // avpicture_fill(&picDst, (uint8_t*)pDest, fmtDst, widthDest, heightDest); pctx = sws_getContext(widthSrc, heightSrc, fmtSrc, widthDest, heightDest, fmtDst, bQualityImportant ? SWS_BICUBIC : SWS_POINT, NULL, NULL, NULL); if (pctx == NULL) return; sws_scale(pctx, picSrc.data, picSrc.linesize, 0, heightSrc, picDst.data, picDst.linesize); sws_freeContext(pctx); } 问题在哪里始终不得要领,希望专家们不吝赐教。 为了验证问题,我用 ffmpeg 转换 rgb24 -> I420每问题,是不是ffmpeg不支持 yuy2 packed 包到 i420?但是我看它的像素格式定义, AV_PIX_FMT_YUYV422 排在最前面啊
海思系列的芯片能使用arm-linux-gcc编译的ffmpeg吗。
问题如题! 交叉编译工具arm-linux-gcc版本是gcc version 5.4.0 (Buildroot 2016.11) 还是只能用海思芯片对应的工具链来编译ffmpeg才能使用?
win7下 nginx带ffmpeg编译找不到lib.obj
如题:win7下 nginx带ffmpeg编译找不到lib.obj ![图片说明](https://img-ask.csdn.net/upload/201508/04/1438665695_239954.png)
windows环境下编译ffmpeg报错unknown option"--disable-ffserver"
![图片说明](https://img-ask.csdn.net/upload/201910/14/1571028348_163733.jpg)
ffmpeg4中的新api ,av_guess_format()返回NULL
我需要使用ffmpeg对视频进行h264编码。而在新版本的ffmpeg4中,更新了av_guess_format()函数,其中用到av_muxer_iterate(&i)来分配AVOutputFormat的地址。这个函数里面需要用到#include "libavformat/muxer_list.c"文件里的结构体muxer_list。但是我在官网下载的源码中根本找不到这个文件,导致av_guss_format()运行错误。 请问怎么获取muxer_list.c 这个文件?或者其他的解决办法?
ffmpeg解码部分视频失败
我有一些视频,能够用播放器播放,但是用ffmpeg-3.4解不出来。 准确的说是用我自己编的ffmpeg库解不出来,用公司同样ffmpeg-3.4就能解出来。 但是我的编译应该没有大问题,因为大部分视频我都能够顺利解码的 视频解码错误时报: ``` [mov,mp4,m4a,3gp,3g2,mj2 @ 0x31b7120] STSC entry 1 is invalid (first=12 count=0 id=1) [mov,mp4,m4a,3gp,3g2,mj2 @ 0x31b7120] stream 0, contradictionary STSC and STCO [mov,mp4,m4a,3gp,3g2,mj2 @ 0x31b7120] error reading header ``` 正常解码出来的信息是: ``` Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'fail.mp4': Metadata: major_brand : mp42 minor_version : 0 compatible_brands: mp42isom creation_time : 2019-08-06T16:42:23.000000Z Duration: 00:00:10.89, start: 0.000000, bitrate: N/A Stream #0:0(und): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p, 1280x720, 2815 kb/s, 25.66 fps, 25.64 tbr, 1k tbn, 51.31 tbc (default) Metadata: creation_time : 2019-08-06T16:42:24.000000Z handler_name : encoder : VC Coding ``` 我的编译选项: ``` ./configure --prefix=./ --bindir=bin/ffmpeg --incdir=include/ffmpeg --libdir=lib64/ffmpeg --disable-x86asm --arch=x86_64 --optflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic' --extra-ldflags='-Wl,-z,relro' --enable-libx264 --enable-libx265 --enable-avfilter --enable-pthreads --enable-shared --enable-gpl --disable-debug --enable-cuda --enable-cuvid --enable-nvenc --enable-nonfree --enable-libnpp --extra-cflags=-I/usr/local/cuda-8.0/include --extra-ldflags=-L/usr/local/cuda-8.0/lib64 ``` 怀疑是我编译的时候有什么选项没有开,或者有人告诉我这个视频有什么特殊的地方需要我加特殊的编解码器吗?
Windows下怎么精准杀进程?
Windows怎么根据commandline的信息,取出processid信息,然后做到精准杀死进程 ![图片说明](https://img-ask.csdn.net/upload/202001/13/1578883279_395626.png) ``` C:\Users\Administrator>wmic process where caption="ffmpeg.exe" get caption,comma ndline,ProcessId /value Caption=ffmpeg.exe CommandLine=ffmpeg -re -rtsp_transport tcp -i "rtsp://admin:admin123@192.168.1 69.155:554/cam/realmonitor?channel=2\\&amp;subtype=0" -vcodec copy -acodec aac - ar 44100 -ab 48k -b:v 128k -r 15 -s 1280x720 -q 10 -f flv rtmp://xxxx.com/1 83_28_1/livestream ProcessId=28724 ```
ffmpeg无法分割3s一段的ts流文件?
ffmpeg 无法分割4s一段的ts流文件,默认只能10s一段 调用参数如下: ffmpeg -i output.ts -c copy -map 0 -f segment -segment_list playList.m3u8 -segment_time 4 playList_%03d.ts 为什么只能分割10s一段的,是参数不对,还是需要修改源代码重新编译ffmpeg?
win7下cygwin编译ffmpeg编译错误
在cygwin下编译ffmpeg时出现如果错误 ,跪求大牛指点 LD libswscale/libswscale-4.so d:/worktool/android-ndk-r10c/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld.exe: error: libavutil/libavutil.so:1:1: syntax error, unexpected '!', expecting $end d:/worktool/android-ndk-r10c/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld.exe: error: libavutil/libavutil.so: not an object or archive collect2.exe: error: ld returned 1 exit status library.mak:97: recipe for target 'libswscale/libswscale-4.so' failed make: *** [libswscale/libswscale-4.so] Error 1 ffmpeg的configure的配置已经完成,配置的sh脚本如下: #!/bin/bash NDK=D:/worktool/android-ndk-r10c SYSROOT=$NDK/platforms/android-21/arch-arm TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64 function build_one { ./configure \ --prefix=$PREFIX \ --enable-shared \ --disable-static \ --disable-doc \ --disable-ffmpeg \ --disable-ffplay \ --disable-ffprobe \ --disable-ffserver \ --disable-avdevice \ --disable-doc \ --disable-symver \ --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \ --target-os=linux \ --arch=arm \ --enable-cross-compile \ --sysroot=$SYSROOT \ --extra-cflags="-Os -fpic $ADDI_CFLAGS" \ --extra-ldflags="$ADDI_LDFLAGS" \ $ADDITIONAL_CONFIGURE_FLAG } CPU=arm PREFIX=$(pwd)/android/$CPU ADDI_CFLAGS="-marm" build_one
c# aforge.video.ffmpeg,version=2.2.5.0
debug在x64情况下会弹出这个错误.怎么解决?只有在anycpu可以.
androidstudio编写cmake程序ffmpeg时报的错
--------- beginning of crash 2019-12-21 14:14:46.254 6347-6381/com.zj.player A/libc: Fatal signal 4 (SIGILL), code 0, fault addr 0x18cb in tid 6381 (Thread-2) 2019-12-21 14:14:46.312 6384-6384/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** 2019-12-21 14:14:46.312 6384-6384/? A/DEBUG: Build fingerprint: 'google/android_x86/x86:7.1.2/N2G47O/V9.5.8.0.OCACNFA:/release-keys' 2019-12-21 14:14:46.312 6384-6384/? A/DEBUG: Revision: '0' 2019-12-21 14:14:46.312 6384-6384/? A/DEBUG: ABI: 'x86' 2019-12-21 14:14:46.312 6384-6384/? A/DEBUG: pid: 6347, tid: 6381, name: Thread-2 >>> com.zj.player <<< 2019-12-21 14:14:46.312 6384-6384/? A/DEBUG: signal 4 (SIGILL), code 0 (SI_USER), fault addr 0x18cb 2019-12-21 14:14:46.312 6384-6384/? A/DEBUG: eax 00000000 ebx 000018ed ecx 00000004 edx 9d5c2ff4 2019-12-21 14:14:46.312 6384-6384/? A/DEBUG: esi 9d7647e4 edi 9d84520c 2019-12-21 14:14:46.312 6384-6384/? A/DEBUG: xcs 00000073 xds 0000007b xes 0000007b xfs 0000003b xss 0000007b 2019-12-21 14:14:46.312 6384-6384/? A/DEBUG: eip 9d369fff ebp 000018cb esp 96aff6a0 flags 00000246 2019-12-21 14:14:46.313 6384-6384/? A/DEBUG: backtrace: 2019-12-21 14:14:46.313 6384-6384/? A/DEBUG: #00 pc 00209fff /system/lib/libhoudini.so --------- beginning of system 2019-12-21 14:14:46.765 1456-1477/system_process E/JavaBinder: !!! FAILED BINDER TRANSACTION !!! (parcel size = 60) 2019-12-21 14:14:46.766 1456-6391/system_process E/JavaBinder: !!! FAILED BINDER TRANSACTION !!! (parcel size = 104) 2019-12-21 14:14:46.767 1288-1288/? E/lowmemorykiller: Error writing /proc/6347/oom_score_adj; errno=22 2019-12-21 14:14:46.792 1290-1290/? E/EGL_adreno: tid 1290: eglCreateSyncKHR(2054): error 0x3004 (EGL_BAD_ATTRIBUTE) 2019-12-21 14:14:46.793 1456-1500/system_process E/InputDispatcher: channel '3c2e8ec com.zj.player/com.zj.player.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed! 2019-12-21 14:14:46.966 1912-1977/com.android.launcher3 E/EGL_adreno: tid 1977: eglSurfaceAttrib(1323): error 0x3009 (EGL_BAD_MATCH) 2019-12-21 14:14:47.016 1456-3168/system_process E/EGL_adreno: tid 3168: eglSurfaceAttrib(1323): error 0x3009 (EGL_BAD_MATCH)
使用ffmpeg保存H.264的RTSP流到AVI文件中程序执行没有报错,但是文件是空的。
使用ffmpeg保存H.264的RTSP流到AVI文件中程序执行没有报错,但是文件是空的,其中ffmpeg也根据文件名生成了相应的文件,,avformat_write_header ,av_interleaved_write_frame, av_interleaved_write_frame均返回0(0即正确返回)但是,为什么生成的AVI文件中是0个字节啊?
相见恨晚的超实用网站
相见恨晚的超实用网站 持续更新中。。。
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
python 简易微信实现(注册登录+数据库存储+聊天+GUI+文件传输)
socket+tkinter详解+简易微信实现 历经多天的努力,查阅了许多大佬的博客后终于实现了一个简易的微信O(∩_∩)O~~ 简易数据库的实现 使用pands+CSV实现数据库框架搭建 import socket import threading from pandas import * import pymysql import csv # 创建DataFrame对象 # 存储用户数据的表(...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小型人工智障。 知识可以运用在不同地方,不一定非是天气预报。
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
刷了几千道算法题,这些我私藏的刷题网站都在这里了!
遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...
JavaScript 为什么能活到现在?
作者 | 司徒正美 责编 |郭芮 出品 | CSDN(ID:CSDNnews) JavaScript能发展到现在的程度已经经历不少的坎坷,早产带来的某些缺陷是永久性的,因此浏览器才有禁用JavaScript的选项。甚至在jQuery时代有人问出这样的问题,jQuery与JavaScript哪个快?在Babel.js出来之前,发明一门全新的语言代码代替JavaScript...
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
Python 编程开发 实用经验和技巧
Python是一门很灵活的语言,也有很多实用的方法,有时候实现一个功能可以用多种方法实现,我这里总结了一些常用的方法和技巧,包括小数保留指定位小数、判断变量的数据类型、类方法@classmethod、制表符中文对齐、遍历字典、datetime.timedelta的使用等,会持续更新......
吐血推荐珍藏的Visual Studio Code插件
作为一名Java工程师,由于工作需要,最近一个月一直在写NodeJS,这种经历可以说是一部辛酸史了。好在有神器Visual Studio Code陪伴,让我的这段经历没有更加困难。眼看这段经历要告一段落了,今天就来给大家分享一下我常用的一些VSC的插件。 VSC的插件安装方法很简单,只需要点击左侧最下方的插件栏选项,然后就可以搜索你想要的插件了。 下面我们进入正题 Material Theme ...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
开源并不是你认为的那些事
点击上方蓝字 关注我们开源之道导读所以 ————想要理清开源是什么?先要厘清开源不是什么,名正言顺是句中国的古代成语,概念本身的理解非常之重要。大部分生物多样性的起源,...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
Python 植物大战僵尸代码实现(2):植物卡片选择和种植
这篇文章要介绍的是: - 上方植物卡片栏的实现。 - 点击植物卡片,鼠标切换为植物图片。 - 鼠标移动时,判断当前在哪个方格中,并显示半透明的植物作为提示。
相关热词 c#委托 逆变与协变 c#新建一个项目 c#获取dll文件路径 c#子窗体调用主窗体事件 c# 拷贝目录 c# 调用cef 网页填表c#源代码 c#部署端口监听项目、 c#接口中的属性使用方法 c# 昨天
立即提问