HOME 首页
SERVICE 服务产品
XINMEITI 新媒体代运营
CASE 服务案例
NEWS 热点资讯
ABOUT 关于我们
CONTACT 联系我们
创意岭
让品牌有温度、有情感
专注品牌策划15年

    ivlc十大排名(lc 排名)

    发布时间:2023-05-05 06:43:03     稿源: 创意岭    阅读: 482        

    大家好!今天让创意岭的小编来大家介绍下关于ivlc十大排名的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    创意岭作为行业内优秀的企业,服务客户遍布全球各地,相关业务请拨打电话:175-8598-2043,或添加微信:1454722008bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    本文目录:bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    ivlc十大排名(lc 排名)

    一、vlc的pts是怎么计算的bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    H264的ES原始数据一般是以NAL(Network Abstract Layer)的格式存在。可以直接用于文件存储和网络传输。每一个NALU(Network Abstract Layer Unit)数据,是由数据头+RBSP数据组成。bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    首先需要将数据流,分割成一个一个独立的NALU数据。bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    接着获取NALU的nal_type,i_nal_type的值等于0x7表示这个nalu是个sps数据包。找到并解析这个sps数据包,里面包含有非常重要的帧率信息bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    time_scale/num_units_in_tick=fpsbsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    然后根据nal_type判断slice(H264中的slice类似一个帧FRAME的概念)。其中nal_type值小于0x1,或大于0x5,表示这个NALU属于一个slice。bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    // 检查是否是slice if ( i_nal_type < 1/*NAL_SLICE*/ || i_nal_type > 5/*NAL_SLICE_IDR*/ ) // 找到slice!!!!! bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    在找到slice的NALU后,可以逐字节将NALU的数据与0x80进行与运算,结果为真表示这个slice(帧FRAME)的结束位置。bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    // 判断是否帧结束 for (uint32_t i = 3; i < nal_length; i++) { if (p_nal[i] 0x80) { // 找到frame_begin!!!!上一帧frame的结束,下一帧frame的开始 } } bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    上面的这个代码是摘抄自FFMPEG。他实际作用是判断slice里面的first_mb_in_slice,即第1个宏块在slice中的位置,如果是bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    一帧开始,这个字段的值肯定是标识第1个宏块。因此,也可以完整解析slice的头部信息,解析出first_mb_in_slice,如果是0(注意:bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    这是1个哥伦布数值),即这个NALU是一帧的开始。bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    为什么这里的代码是逐字节判断0x80?我额外写点某大神的名言:程序猿不是十万个为什么,不是维基猿,程序猿是需求猿。如果某程序猿已经着手开始研究如何解析slice头部格式,他很自然的不会有这个疑问。bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    另外通过nal_type以及silice_type也可以判断出帧结束位置,VLC里面的代码就是这么干。bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    解析到位于帧结束位置的NALU,就可以判断出每一帧(slice)的开始和结尾。解析slice的slice_type,根据slice_type,可以判断出这个slice的IPB类型。bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    // 根据slice类型判断帧类型 switch(slice.i_slice_type) { case 2: case 7: case 4: case 9: *p_flags = 0x0002/*BLOCK_FLAG_TYPE_I*/; break; case 0: case 5: case 3: case 8: *p_flags = 0x0004/*BLOCK_FLAG_TYPE_P*/; break; case 1: case 6: *p_flags = 0x0008/*BLOCK_FLAG_TYPE_B*/; break; default: *p_flags = 0; break; } bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    从现在开始,就有两种办法来计算PTS了。bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    方法一、根据前后帧的IPB类型,可以得知帧的实际显示顺序,使用前面获取的sps信息中的帧率,以及帧计数frame_count即可计算出PTS。此方法需要做几帧缓存(一般缓存一个group的长度)。bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    I P B B I P B B I P B 帧类型bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    1 2 3 4 5 6 7 8 9 10 11 第几帧bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    1 4 2 3 5 8 6 7 9 12 10 帧显示顺序bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    一个I帧与下一个I帧之间,是一个group。bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    从上图可见,P类型的帧的显示顺序,是排在后面最后一个B帧之后。bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    所以要获取第7帧的pts,起码要知道他下一帧的类型,才能得知他的显示顺序。bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    第8帧的pts=1000(毫秒)*7(帧显示顺序)*帧率bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    方法二、每一个slice的信息里面,都记录有pic_order_cnt_lsb,当前帧在这个group中的显示顺序。通过这个pic_order_cnt_lsb,可以直接计算出当前帧的PTS。此方法不需要做帧缓存。bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    计算公式:bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    pts=1000*(i_frame_counter + pic_order_cnt_lsb)*(time_scale/num_units_in_tick)bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    i_frame_counter是最近一次I帧位置的帧序,通过I帧计数+当前group中的帧序,得到帧实际显示序列位置,乘上帧率,再乘上1000(毫秒)的base_clock(基本时钟频率),得到PTS。bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    I P B B I P B B I P B 帧类型bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    1 2 3 4 5 6 7 8 9 10 11 第几帧bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    1 4 2 3 5 8 6 7 9 12 10 帧显示顺序bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    0 6 2 4 0 6 2 4 0 6 2 pic_order_cnt_lsbbsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    细心一点可以注意到,在上图,slice里面的pic_order_cnt_lsb是以2进行递增。bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    通常H264里面的sps中记录的帧率,也是实际帧率的2倍time_scale/num_units_in_tick=fps*2bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    因此,实际的计算公式应该是这样bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    pts=1000*(i_frame_counter*2+pic_order_cnt_lsb)* (time_scale/num_units_in_tick)bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    或者是bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    pts=1000*(i_frame_counter+pic_order_cnt_lsb/2)* (time_scale/num_units_in_tick/2)bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    所以,第11帧的pts应该是这么计算bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    1000*(9*2+2)*(time_scale/num_units_in_tick) bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    二、MP4视频无法播放,大概6分钟左右,文件大小11M,用了itunes,暴风影音,vlc以及windows media player。bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    暴风影音是万能播放器,它不能f播放了,就是说明这个文件损坏了。MP4格式就是MP4格式,没有什么特殊格式。 bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    三、用vs2010的c#调用vlc时出现: PInvoke 签名的调用约定和参数与非托管的目标签 名是否匹配。bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    [DllImport("libvlc.dll", EntryPoint = "libvlc_new", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    [SuppressUnmanagedCodeSecurity]bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    private static extern IntPtr libvlc_new(int argc, IntPtr argv);bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    改一下参数就好了 bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    四、苹果电脑,如果下载的歌曲是VLC的格式,怎样才能把歌曲添加到iTunes里?bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    先转换一下格式,然后再导入ITUNES bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    以上就是关于ivlc十大排名相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。bsG创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司


    推荐阅读:

    石瓦屋live杰夫餐饮品牌设计

    vivo手机一直反复优化(vivo手机一直反复优化怎么解决)

    vivo手机价格排行榜(vivo手机价格排行榜2019)

    医学影像学大一课程

    网页三列布局(网页三列布局框架代码)