ffmpeg如何自己多线程解码音频或者视频呢???

a1875566250 2014-06-10 04:47:08
ffmpeg如何多线程解码呢???
我想多线程解码音频,但是经过测试发现,avcodec_decode_audio4这个函数视乎并不兼容多线程???还是我的使用方式有问题,我new了n个thread并行PopPacket然后avcodec_decode_audio4,发现avcodec_decode_audio4这个函数里面有一个操作全局变量的代码avctx->internal->pkt = &tmp;,然后会调用:av_packet_get_side_data(avctx->internal->pkt, AV_PKT_DATA_SKIP_SAMPLES, &side_size);
而他操作完成后又设置这个avctx->internal->pkt = NULL;,并行起来有时候碰到NULL,就挂了,我发现解码视频的函数也有这个问题,我该如何多线程并行解码呢,就是跑满多核CPU?
...全文
2308 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wzj005 2015-11-13
  • 打赏
  • 举报
回复
楼主可否把你以前玩的VB多线程dll 发源码一份出来,以前的那个网盘挂了, 最近在弄多进程,我好研究下,455041119@qq.com
okletsgo007 2014-06-20
  • 打赏
  • 举报
回复
引用 8 楼 u013089362 的回复:
[quote=引用 7 楼 okletsgo007 的回复:] 不知道楼主搞定了吗?我也遇到android下多线程解码视频的问题了
解码本地文件还是网络文件?[/quote] 解码网络文件。。。。有方法吗?
okletsgo007 2014-06-19
  • 打赏
  • 举报
回复
不知道楼主搞定了吗?我也遇到android下多线程解码视频的问题了
qazmoon 2014-06-19
  • 打赏
  • 举报
回复
引用 7 楼 okletsgo007 的回复:
不知道楼主搞定了吗?我也遇到android下多线程解码视频的问题了
解码本地文件还是网络文件?
__cc__ 2014-06-12
  • 打赏
  • 举报
回复
音频说实在的,的确没必要并行,看看是不是你对需求理解正确没有。
a1875566250 2014-06-11
  • 打赏
  • 举报
回复
您的意思是让我开new多个ctx来并行么?我做的是移动端的。
__cc__ 2014-06-11
  • 打赏
  • 举报
回复
引用 2 楼 a1875566250 的回复:
几个ctx肯定没必要,那除了ffmpeg内置的多线程支持,就没有其他多线程解码的方法了么。 多线程跑音频是为了load块。。。
音频相对视频改成多线程要容易些,因为音频帧之间是相互独立的,所以可以同时多帧并行解码。 视频要改成多线程就不太容易,毕竟多帧之间相互有关系,多线程要考虑共享。
a1875566250 2014-06-10
  • 打赏
  • 举报
回复
几个ctx肯定没必要,那除了ffmpeg内置的多线程支持,就没有其他多线程解码的方法了么。 多线程跑音频是为了load块。。。
__cc__ 2014-06-10
  • 打赏
  • 举报
回复
1)第一个疑问,为什么要多线程解码音频,相对视频,音频解码耗时基本忽略,除非几种特殊的编码。 2)视频并行解码的话,ffmpeg新版本是有内置支持的。 3)实在不行,你又不想改代码,那就多创建几个ctx,每个线程独立解码,不过这种效率不高。

2,542

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧