当前位置: 首页 > news >正文

赣州网站建设流程全网加速器

赣州网站建设流程,全网加速器,专业做蜂蜜的网站,做网站视频手机在《选择最新 Chromium#xff0c;支持 H264 / H265》一文中#xff0c;记录了我通过升级 Chromium 版本解决了 H264 / H265 视频支持难题。然而难题接踵而至#xff0c;这次的难题是 MPEG TS 流的支持。MPEG2-TS 传输流广泛应用于数字电视广播系统#xff0c;所以是一个不…在《选择最新 Chromium支持 H264 / H265》一文中记录了我通过升级 Chromium 版本解决了 H264 / H265 视频支持难题。然而难题接踵而至这次的难题是 MPEG TS 流的支持。MPEG2-TS 传输流广泛应用于数字电视广播系统所以是一个不得不支持的格式。通过查询资料了解到 FFmpeg 是支持 TS 格式的但 Chromium 中并没有默认开启这个功能。这可能是出于版权、性能或者兼容性的考虑。关于如何让 Chromium 支持 TS我请教了一下 AI。AI 给的思路是修改 FFmpeg 的配置文件开启 MPEG TS 的解复用器和解码器修改 Chromium for Android 的媒体框架添加对 MPEG TS 的支持修改 Chromium for Android 的网络模块添加对 MPEG TS 的传输协议的支持。按照 AI 的建议我一步步解决了 TS 格式的支持问题。一第一步研究 Chromium 的编译参数。媒体有关的编译选项主要位于 media 目录下的 media_options/gni 文件中。研究了一下发现一个 enable_mse_mpeg2ts_stream_parser 参数目前的值是enable_mse_mpeg2ts_stream_parser proprietary_codecs  (enable_cast_receiver || use_fuzzing_engine)对于 Chromium for Android上面的值是 false。看起来这个选项是与 MSE(Media Source Extensions) 有关但实际上也会影响 TS 文件的解析因为在 mime_util_internal.cc 中有这样的代码#if BUILDFLAG(ENABLE_MSE_MPEG2TS_STREAM_PARSER)CodecSet mp2t_codecs{H264, MPEG2_AAC, MPEG4_AAC, MP3};AddContainerWithCodecs(video/mp2t, mp2t_codecs); #endif  // BUILDFLAG(ENABLE_MSE_MPEG2TS_STREAM_PARSER)TS 容器的 mime type 为 video/mp2t只有开启了 enable_mse_mpeg2ts_stream_parser才会加入对 TS 容器的处理。所以首先需要将 enable_mse_mpeg2ts_stream_parser 选项修改为 true。修改这个参数后立刻又碰到一个新的错误信息03-09 07:44:55.322 31903 32010 V chromium: [VERBOSE1:batching_media_log.cc(35)] MediaEvent: {error:FFmpegDemuxer: open context failed}二稍微捋一下代码可以发现 open context 的代码实际位于 FFmpegGlue::OpenContext这个方法中又会调用 FFMPEG 的 avformat_open_input 函数。接下来的调用流程:avformat_open_input - init_input - av_probe_input_buffer2 - av_probe_input_format2 - av_probe_input_format3 - av_demuxer_iterator可以很明显看出av_demuxer_iterator 就是遍历系统的 demuxer那这个 demuxer 列表来自哪儿呢查看其实现文件 allformats.c可以看到它有如下包含文件#include libavformat/demuxer_list.c也就是在 demuxer_list.c 这个文件里面进行了定义。搜索 demuxer_list.c 文件发现这个文件有多份位于 third_party/ffmpeg/chromium/config 下。这个 config 下的文件组织有些讲究最上一层是 branding也就是我们在 args.gn 下定义的 ffmpeg_branding 选项默认是 Chromiium。再下一层是按 OS 划分接下来就是按 CPU 分。找出你的目标平台修改 demuxer_list.c增加一行ff_mpegts_demuxer,接下来还要修改 FFmpegGlue::OpenContext 方法在DCHECK_NE(container_, container_names::CONTAINER_UNKNOWN);前面增加容器判断else if (strcmp(format_context_-iformat-name, mpegts)  0)container_  container_names::CONTAINER_MPEG2TS;解决了上面的错误后又会碰到新的错误03-04 09:53:29.573 28173 28233 W [FFMPEG]: Could not find codec parameters for stream 0 (Video: h264 ([27][0][0][0] / 0x001B), none): unspecified size 03-04 09:53:29.573 28173 28233 W [FFMPEG]: Consider increasing the value for the analyzeduration (60000000) and probesize (5000000) options 03-04 09:53:29.573 28173 28233 W [FFMPEG]: Could not find codec parameters for stream 1 (Audio: ac3 (AC-3 / 0x332D4341), 0 channels): unspecified sample rate 03-04 09:53:29.573 28173 28233 W [FFMPEG]: Consider increasing the value for the analyzeduration (60000000) and probesize (5000000) options 03-04 09:53:29.573 28173 28233 D [FFMPEG]: After avformat_find_stream_info() pos: 0 bytes read:36960112 seeks:8 frames:292 03-04 09:53:29.574 28173 28247 V chromium: [VERBOSE1:ffmpeg_common.cc(246)] Unknown profile id: -2659 03-04 09:53:29.575 28173 28247 V chromium: [VERBOSE1:batching_media_log.cc(37)] MediaEvent: {debug:Warning, FFmpegDemuxer failed to create a valid/supported video decoder configuration from muxed str} 03-04 09:53:29.575 28173 28247 V chromium: [VERBOSE1:batching_media_log.cc(37)] MediaEvent: {info:FFmpegDemuxer: skipping invalid or unsupported video track} 03-04 09:53:29.575 28173 28247 V chromium: [VERBOSE1:ffmpeg_common.cc(122)] Unknown audio CodecID: 86019 03-04 09:53:29.575 28173 28247 V chromium: [VERBOSE1:ffmpeg_common.cc(294)] Unknown AVSampleFormat: -1三看日志似乎是解码器创建失败有了前面的经验直接找到 codec_list.cc 文件加入如下行ff_h264_decoder,同时修改 config_components.h 文件 将#define CONFIG_H264_DECODER 0修改为#define CONFIG_H264_DECODER 1经过这样的修改后我们会发现出现很多链接错误。没有关系将缺的代码文件加入编译即可。需要注意的是有些底层代码是使用汇编语言编写在 Android 平台下就是那些以 .S 为后缀的文件。非常神奇的是clang 直接支持编译汇编语言所以将这些汇编文件和 C 文件一起加入编译列表即可。经过这样一番操作TS 流终于播放起来了。需要说明的是我测试使用的 TS 流内部视频采用的 H264 编码如果采用其他格式编码修改的过程会有所不同但思路类似。四经过上述的改造是否就完美解决问题了呢并没有。测试下来发现视频播放出来了但是没有声音从日志可以看出03-05 21:14:18.706 18936 19047 V chromium: [VERBOSE1:batching_media_log.cc(37)] MediaEvent: {debug:Warning, FFmpegDemuxer failed to create a valid/supported audio decoder configuration from muxed str} 03-05 21:14:18.707 18936 19047 V chromium: [VERBOSE1:batching_media_log.cc(37)] MediaEvent: {info:FFmpegDemuxer: skipping invalid or unsupported audio track}解决的方法类似但真正解决声音输出又花费了一番精力这个留在下一篇继续敬请关注
http://www.hkea.cn/news/14431918/

相关文章:

  • 做网站用百度浏览器googleseo关键词
  • 建立微网站魔方的网站
  • 建站平台wpwordpress学校站模板
  • 现在的网站一般做多宽最好wordpress文章点击数插件
  • 来宾市住房和城乡建设局网站网页设计怎么做流动图片
  • 手机视频wordpressseo沈阳
  • 网站验收流程互联网创业就是做网站吗
  • 手机网站建设的规划网站建设sunmun
  • 网站做支付系统太仓网页制作招聘
  • 单页网站内链接哪里有网页设计
  • 做网站就业要会什么手机商城建站系统网站建设
  • 网站建设方案 前台 后台WordPress引用阿里云矢量图
  • 无锡建设局评职称网站单位的网站的建设
  • 上海php做网站津南房地产网站建设
  • 昌平知名的网站制作建设报价手机写代码的软件
  • 网站重新备案怎么做网站策划案模板
  • 网站建设费挂什么科目wordpress建站双语
  • 做网站生意影响网站收录的因素
  • 网站开发强制开启浏览器极速模式网站建设公司 关于我们
  • 上海企业网站的建设网站建设课结课感受
  • 有哪些企业会找人做网站建设网站 怎么备案
  • 网站 linux 服务器涨粉丝1元1000个
  • 自己做网站想更换网址怎么增加网站权重
  • 深圳罗湖网站建设赣州专业做网站
  • 公司网站怎么免费建博客网站开发技术
  • 如何网站全部结构建站之星模板下载网站
  • 用服务器ip怎么做网站工程交易网
  • 做网站用的国外节点服务器深圳高端品牌网站建设
  • 三明市住房与建设局网站wordpress 上传图片插件
  • 做预售的网站dede网站开发步骤