- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
libav 的文档 av_find_best_stream
函数(libav 11.7、Windows、i686、GPL)指定一个参数,该参数可用于接收指向适当 AVCodec
的指针:
decoder_ret - if non-NULL, returns the decoder for the selected stream
还有 avcodec_find_decoder
函数可以找到给定 ID 的 AVCodec
。
不过,官方demuxing + decoding example使用 av_find_best_stream
查找流,但选择使用 avcodec_find_decoder
查找编解码器代替 av_find_best_stream
的编解码器返回参数:
ret = av_find_best_stream(fmt_ctx, type, -1, -1, NULL, 0);
...
stream_index = ret;
st = fmt_ctx->streams[stream_index];
...
/* find decoder for the stream */
dec = avcodec_find_decoder(st->codecpar->codec_id);
与类似的东西相反:
ret = av_find_best_stream(fmt_ctx, type, -1, -1, &dec, 0);
我的问题很简单:使用 av_find_best_stream
的返回参数与使用 avcodec_find_decoder
查找 AVCodec
之间有区别吗?
我问的原因是因为该示例选择使用 avcodec_find_decoder
而不是看似更方便的返回参数,我不知道该示例是否出于特定原因这样做。文档本身有点参差不齐且不连贯,因此很难判断这样的事情是否出于特定的重要原因而完成。我不知道这个例子是在暗示它“应该”那样做,还是这个例子的作者是出于一些更武断的个人原因。
最佳答案
av_find_best_stream
在内部使用 avcodec_find_decoder
的方式与您的代码示例中的方式几乎相同。然而,当向它请求解码器时,av_find_best_stream
行为发生了变化 - 即,它将尝试在每个候选流上使用 avcodec_find_decoder
,如果失败,它将丢弃候选人,然后继续下一个。最后它将返回最佳流及其解码器。如果没有请求解码器,它只会返回最佳流,而不检查它是否可以解码。
因此,如果您只想获取单个视频/音频流,而不打算编写一些自定义流选择逻辑,那么我认为使用 av_find_best_stream
获取解码器没有任何缺点。
关于c - av_find_best_stream 与 avcodec_find_decoder 的解码器返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39905172/
我想解码传入的 MPEG2 传输流,然后将其编码为 h264。 h264 编解码器一切正常,但问题是 libavcodec 似乎无法识别 MPEG2-Transportstream。我基本上是在模仿官
libav 的文档 av_find_best_stream函数(libav 11.7、Windows、i686、GPL)指定一个参数,该参数可用于接收指向适当 AVCodec 的指针: decoder
我最近尝试通过从源代码下载和编译 ffmpeg 来升级我在 Mac OS X 应用程序中使用的 ffmpeg 库。 我的代码在 Windows 上与相同版本的预编译库一起正常工作。 在 Mac OS
我最近尝试通过从源代码下载和编译 ffmpeg 来升级我在 Mac OS X 应用程序中使用的 ffmpeg 库。 我的代码在 Windows 上与相同版本的预编译库一起正常工作。在 Mac OS X
我正在使用的 FFmpeg 很好,因为如果我使用 AV_CODEC_ID_PCM_U8 和其他一些带有 avcodec_find_encoder 和 avcodec_find_decoder 的 CO
我是一名优秀的程序员,十分优秀!