首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从一个mp4获取音频,并在安卓的重采样(较小) mp4中使用

从一个mp4获取音频,并在安卓的重采样(较小) mp4中使用,可以通过以下步骤实现:

  1. 音频提取:使用音频处理库或工具,如FFmpeg,可以从mp4文件中提取音频。FFmpeg是一个开源的跨平台音视频处理工具,可以通过命令行或API调用来提取音频。具体命令如下:ffmpeg -i input.mp4 -vn -acodec copy output.aac这将从输入的mp4文件中提取音频,并将其保存为aac格式的输出文件。
  2. 安卓重采样:在安卓平台上,可以使用Android的MediaCodec API来进行音频重采样。重采样是将音频的采样率、位深度或声道数进行转换,以适应特定的需求。以下是一个简单的示例代码,展示如何使用MediaCodec进行音频重采样:MediaExtractor extractor = new MediaExtractor(); extractor.setDataSource(inputFilePath);

int audioTrackIndex = getAudioTrackIndex(extractor); // 获取音频轨道索引

MediaFormat inputFormat = extractor.getTrackFormat(audioTrackIndex);

MediaFormat outputFormat = createOutputFormat(inputFormat); // 创建输出格式

MediaCodec decoder = MediaCodec.createDecoderByType(inputFormat.getString(MediaFormat.KEY_MIME));

decoder.configure(inputFormat, null, null, 0);

decoder.start();

MediaCodec encoder = MediaCodec.createEncoderByType(outputFormat.getString(MediaFormat.KEY_MIME));

encoder.configure(outputFormat, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);

encoder.start();

ByteBuffer[] decoderInputBuffers = decoder.getInputBuffers();

ByteBuffer[] decoderOutputBuffers = decoder.getOutputBuffers();

ByteBuffer[] encoderInputBuffers = encoder.getInputBuffers();

ByteBuffer[] encoderOutputBuffers = encoder.getOutputBuffers();

MediaCodec.BufferInfo bufferInfo = new MediaCodec.BufferInfo();

boolean isEOS = false;

while (!isEOS) {

代码语言:txt
复制
   int inputBufferIndex = decoder.dequeueInputBuffer(TIMEOUT_US);
代码语言:txt
复制
   if (inputBufferIndex >= 0) {
代码语言:txt
复制
       ByteBuffer inputBuffer = decoderInputBuffers[inputBufferIndex];
代码语言:txt
复制
       int sampleSize = extractor.readSampleData(inputBuffer, 0);
代码语言:txt
复制
       if (sampleSize < 0) {
代码语言:txt
复制
           decoder.queueInputBuffer(inputBufferIndex, 0, 0, 0, MediaCodec.BUFFER_FLAG_END_OF_STREAM);
代码语言:txt
复制
           isEOS = true;
代码语言:txt
复制
       } else {
代码语言:txt
复制
           long presentationTimeUs = extractor.getSampleTime();
代码语言:txt
复制
           decoder.queueInputBuffer(inputBufferIndex, 0, sampleSize, presentationTimeUs, 0);
代码语言:txt
复制
           extractor.advance();
代码语言:txt
复制
       }
代码语言:txt
复制
   }
代码语言:txt
复制
   int outputBufferIndex = decoder.dequeueOutputBuffer(bufferInfo, TIMEOUT_US);
代码语言:txt
复制
   if (outputBufferIndex >= 0) {
代码语言:txt
复制
       ByteBuffer outputBuffer = decoderOutputBuffers[outputBufferIndex];
代码语言:txt
复制
       int inputBufferIndex = encoder.dequeueInputBuffer(TIMEOUT_US);
代码语言:txt
复制
       if (inputBufferIndex >= 0) {
代码语言:txt
复制
           ByteBuffer inputBuffer = encoderInputBuffers[inputBufferIndex];
代码语言:txt
复制
           inputBuffer.clear();
代码语言:txt
复制
           inputBuffer.put(outputBuffer);
代码语言:txt
复制
           encoder.queueInputBuffer(inputBufferIndex, 0, bufferInfo.size, bufferInfo.presentationTimeUs, 0);
代码语言:txt
复制
       }
代码语言:txt
复制
       decoder.releaseOutputBuffer(outputBufferIndex, false);
代码语言:txt
复制
   }
代码语言:txt
复制
   int encoderStatus = encoder.dequeueOutputBuffer(bufferInfo, TIMEOUT_US);
代码语言:txt
复制
   if (encoderStatus >= 0) {
代码语言:txt
复制
       ByteBuffer encodedData = encoderOutputBuffers[encoderStatus];
代码语言:txt
复制
       if (bufferInfo.size != 0) {
代码语言:txt
复制
           // 处理重采样后的音频数据
代码语言:txt
复制
           handleResampledAudio(encodedData, bufferInfo);
代码语言:txt
复制
       }
代码语言:txt
复制
       encoder.releaseOutputBuffer(encoderStatus, false);
代码语言:txt
复制
   }

}

// 释放资源

extractor.release();

decoder.stop();

decoder.release();

encoder.stop();

encoder.release();

代码语言:txt
复制

上述代码中,我们首先使用MediaExtractor从输入文件中获取音频轨道索引,并创建输入和输出的MediaFormat。然后,我们创建解码器和编码器,并配置它们的格式。接下来,我们循环从解码器读取输入数据,解码后将数据传递给编码器进行重采样,并处理重采样后的音频数据。最后,释放资源。

注意:上述代码只是一个简单示例,实际应用中可能需要根据具体需求进行适当的修改和优化。

以上是从一个mp4获取音频,并在安卓的重采样(较小) mp4中使用的步骤和示例代码。对于具体的腾讯云产品和链接地址,由于要求不能提及特定品牌商,建议在腾讯云官方网站或文档中搜索相关产品和服务,以获取更详细的信息和推荐链接。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

多媒体-iOS与Android音频文件互通

前言 在实际开发,关于音频传输上,iOS与Android通用性一直是一不可回避问题。下面记录下比较好解决方案。 ---- 现状 苹果音频格式全不支持。...,遇到过一开发人员 文件输出格式是 3pg 3GP格式是一些少数采用手机芯片3GP所支持视频格式。...两边都使用 libmp3lame 进行编码不会出现问题,也有些同学反应 那边无法把pcm 格式音频文件转化为 mp3 格式,我只想说可以使用 libmp3lame 试试,网上能找到资源 ?...Snip20161207_2.png 方不做处理,iOS端 Wav 转 amr 给使用,把amr 转化为 wav 给自己使用 由于那边录音默认保存格式就是 amr,而苹果这边也可以把音频文件输出为...wav格式进行保存,所有只要 iOS端 Wav文件 转 amr 格式给使用,把amr 文件转化为 wav格式 给自己使用即可解决iOS与Android音频文件互通问题。

3.1K20

视频播放器极致体验优化

现有的大部分短视频使用MP4格式,选择MP4格式主要是文件信息头MOOV信息应该是前移而不是在文件末尾,所以需要整个服务端进行一遍转码。...这张图展示是信息预取,就是获取table里视频页可以获取数据,以保证视频秒开,即点即放,即预取一定数据,点开就播放。48k相当于大概不到一秒数据,先下载后点开,就直接播放了。 2....文件里chunk offset表示每个chunk文件偏移,一般短视频moov较小,对于MP4来说,其前面的头信息还是较多,其中ctts是为了I、B、P帧设置。...2.3 渲染优化 渲染优化主要体现在一些选择方式上,对于来说有native windows、Opengles、MediaCodec三种;而IOS可以选择Opengles,但要考虑前台、后台播放问题。...直播一般十秒打一十秒信息,对当前播放音频码率、视频码率、原始码率是否有丢帧、卡顿等信息都会进行打点,这对服务器进行后续检查直播或者点播各种问题和进行各种优化都很有帮助。

2.9K30

非线性视频编辑器MiaoVideoCut(1) --- 视频基础知识及环境搭建

#封装格式(包装部分) 封装格式(也叫容器),就是将已经编码压缩好视频轨和音频轨按照一定格式放到一文件,也就是说,仅仅是一外壳。...#采样 Android放音采样率固定为44.1KHz,录音采样率固定为8KHz,因此底层音频设备驱动需要设置好这两固定采样率。...如果上层传过来采样率不符的话,需要进行resample采样处理。 几个名词: 1. 采样采样设备每秒抽取样本次数 2....在android studio,通过NDK从而实现JNI功能 其他解释: NDK是一工具集,允许你App使用一些底层语言代码,例如C和C++。...即,在android studio,通过NDK来实现JNI功能 4.建git仓库 5.把ffmapeg编译到平台上(坑较多) 作业 把ffmapeg编译到平台上流程理解

1.1K40

FFmpeg常见音视频处理方法

众所周知在音视频处理方面,FFmpeg是一款非常强大自由软件,它是一开源免费跨平台视频和音频流软件工具,它提供了录制、转换以及流化音视频完整解决方案。...Mediainfo 函数库 libswresample:用于音频采样和格式转换等功能 libavcodec:包含全部FFmpeg音频/视讯编解码库 libavformat:包含demuxers和muxer...一些常用参数也可以通过网上查找相关资料获取。 1....视频剪辑,当需要截取一长视频其中某一段内容,比如从一视频第10秒开始,截取6秒内容,也就是10~16秒内容,输入一out.mp4文件: ffmpeg -i in.mp4 -ss 00:00...-vn不处理图像,于仅针对声音做处理时使用。 -vcodec设置图像图像编解码器,未设置时则使用与输入文件相同之编解码器。 声音参数 -ab设置每channel流量。 -ar设置采样率。

2.8K52

展晓凯:短视频APP架构设计与实现

2016~2017年短视频App呈现爆发式增长,并在大多数人生活扮演着十分角色。...由于经过解码获取PCM或WAV文件可被直接读取,伴奏播放同时我们可将解码后伴奏PCM文件写入磁盘以方便后续编辑阶段更高效率使用。...(中间位置保持不变);根据factor计算出skip采样点个数并在input_buffer中进行skip操作。...这样的话无论用户拖动多快播放器都可从队列拿出用来展示数据,队列也就是存放3~4帧。之前我们进行开发实践时手机性能还没有现在这么高,但在平台上测试也没有什么卡顿。...A:这个取决于视频文件存储格式。如果是以MP4存储那么并不易实现预加载,而如果使用HLS加载第一分片则很容易实现。 Q:如何应对人脸识别+特效视觉情景下丢帧问题?

1.9K30

iOS AVDemo(11):视频转封装,从 MP4MP4丨音视频工程示例

这个 Demo 里包含以下内容: 1)实现一音视频解封装模块; 2)实现一音视频封装模块; 3)实现对 MP4 文件中音视频解封装逻辑,将解封装后音视频编码数据重新封装存储为一 MP4 文件...- (CMSampleBufferRef)copyNextAudioSampleBuffer CF_RETURNS_RETAINED; // 拷贝下一份音频采样。...@end NS_ASSUME_NONNULL_END 3、音视频封装逻辑 我们还是在一 ViewController 来实现对 MP4 文件中音视频解封装逻辑,然后将解封装后音视频编码数据重新封装存储为一...在 -demuxerConfig 实现,我们这里是一 MP4 文件。 2)启动解封装器。 在 -start 实现。 3)在解封装器启动成功后,启动封装器。...4、用工具播放 MP4 文件 完成 Demo 后,可以将 App Document 文件夹下面的 output.mp4 文件拷贝到电脑上,使用 ffplay 播放来验证一下效果是否符合预期: $ ffplay

84920

m3u8格式转换器android,m3u8视频转换器

m3u8视频转换器手机版是一款视频格式转换软件,手机m3u8视频格式转换器有着简捷友好界面布局,m3u8视频转换器版可以帮你轻松转换视频。...如果您使用过qq浏览器和UC浏览器在线缓存过视频,那么你就知道视频只能在浏览器上看,不能用视频播放器看,目前还没哪款播放器支持m3u8加密视频格式。...3、将你手机缓存下来视频进行一整合,一键合成MP4; 4、支持视频格式很多,支持多个浏览器进行快速操作。 软件优势 1、支持批量处理。 2、影视特效支持。 3、转换过程非常快速。...4、支持从视频中提取音频。 5、支持从视频截取图片。 6、支持在转换前进行预览。 7、操作简单,只需三步即可搞定。 8、多国语言支持。支持简体中文。...软件功能 - 支持多种视频格式(mov, mp4, m4v,avi,flv, ts,mpg,mxf,mkv,vob,mpe, h264,gif等) - 视频提取音频MP4 转换为mp3 - 视频去除音频

6.8K10

【说站】XPlayer v2.3.0.5高级版 万能视频播放器

本文编程笔记首发 软件介绍 万能视频播放器是一款专业视频播放工具。它支持所有视频格式,支持 4K/超高清视频文件,并且能够高清播放。它是手机和平板上欣赏影片最佳选择。...主要功能 支持所有的视频格式,包括 MKV、MP4、M4V、AVI、MOV、3GP、FLV、WMV、RMVB、TS 等。 超高清视频播放器,支持 4K。 硬件加速。...使用私密文件夹来保护你视频。 使用 Chromecast 投放视频到电视上播放。 支持在线字幕下载,并且提供更多字幕微调选项。 调整字幕和音频。...后台播放,把视频当作音频播放,成为音频播放器。 自动识别手机上及 SD 卡上所有的视频文件。 轻松管理和分享视频。 调节音量、亮度和播放进度,操作简单。...支持手机和平板。 隐藏资源 您需要留言评论后,刷新页面才能查看此资源! 收藏 | 0点赞 | 0打赏

95420

Android FFmpeg系列05--音频解码与播放

引言 在前面的连载系列,我们分别用FFmpeg软解和硬解两种方式解码了本地mp4文件视频流并使用OpenGL渲染上屏 Android FFmpeg系列03--视频解码与渲染 Android...FFmpeg系列04--FFmpeg调用MediaCodec进行硬解码 本篇文章将通过音频基础、AudioTrack、FFmpeg音频解码&采样部分讲解来完成对Demomp4文件内音频解码与播放功能...(48kHZ,双声道,fltp格式) 音频基础 关于音频采样率、声道、采样位数等基础可以参考Android FFmpeg系列02--音视频基础 采样 音频采样就是通过改变音频采样率、采样格式...、声道数等参数使之按照我们期望音频参数输出音频数据过程 为什么需要采样?...,这个时候也需要进行采样 FFmpeg音频采样格式 FFmpeg音频采样格式分为两种,以P结尾planar格式和不带P结尾packed格式 enum AVSampleFormat {

1.2K20

视频技术快览 0x3 - 视频封装与播放

Data 存放是 MetaData 数据,主要包括宽、高、时长、采样率等基础信息 使用 2 AMF 包来存放信息 第一 AMF 包是 onMetaData 包 第二 AMF 包第一字节是数组类型...则数据格式如下 Audio Tag Data 第一字节表示音频编码方式、采样率和位宽等信息 之后是音频数据 # MP4 MP4 封装相比 FLV 更常见,但是也更复杂一些。...其中最重要、最复杂就是 moov box 了,它里面存放了音视频基本信息和每一音视频数据具体位置。 在 MP4 文件,视频一帧和音频一段编码数据称为一 sample。...,就加快视频帧播放速度,甚至通过丢帧方式来快速赶上音频 音频同步到视频 视频按照自己节奏播放,不需要调节 如果音频相对视频快了的话,就降低音频播放速度,如采样音频增加音频采样点,延长音频播放时间...如果音频相对视频慢了,就加快音频播放速度,如采样音频数据减少音频采样点,缩短音频播放时间 音频和视频都做调整同步 如 WebRTC 里面的音视频同步就是音频和视频都做调整,如果前一次调节是视频的话

35620

FFmpeg 开发(03):FFmpeg + OpenSLES 实现音频解码播放

:FFmpeg + ANativeWindow 实现视频解码播放 本文将利用 FFmpeg 对一 Mp4 文件音频流进行解码,然后使用 libswresample 将解码后 PCM 音频数据转换为目标格式数据...FFmpeg 音频解码 旧文中,我们已经对视频解码流程进行了详细介绍,一多媒体文件(Mp4)一般包含一音频流和一视频流,而FFmpeg 对音频流和视频流解码流程一致。...因此,本节将不再对音频解码流程进行赘述。 类似于视频流处理,音频处理流程为:(Mp4文件)解协议->解封装->音频解码->采样->播放。...[音频解码播放流程图.png] 这里面有反复提到采样,类似于视频图像转码,因为显示器最终显示是 RGB 数据,这个一点比较好理解。那么为什么要对解码音频数据进行采样呢?...一般录音(采集音频)时,可能有多种采样率可以选择,当该采样率与音频设备驱动固定采样率不符时,就会导致变声或者音频出现快放慢放效果,此时就需要用到采样来确保音频采样率和设备驱动采样率一致,使音频正确播放

1.1K40

【FFmpeg】视频裁剪与拼接命令 ( 裁剪视频命令 | h264 编码 SPS 和 PPS 数据 | 拼接视频 - 相同编码和相同容器格式拼接 | 拼接视频 - 不同编码和容器格式拼接测试 )

; 这两种数据 是非常重要 视频信息单元 , PPS 数据 通常 在 SPS 数据 之后 , 并在 H.264 码流作为 元数据 传输 ; 裁剪分离 视频 时 , 如果视频格式是 H.264 编码格式...flv 格式进行拼接 , 否则有可能导致视频拼接失败 ; 1、拼接视频命令 - mp4 格式 下面的 2 命令 , 使用 mp4 格式进行视频拼接 , 要么拼接失败 , 要么拼接出视频效果不好...视频拼接 , 视频画面 分辨率 可以是不同 , 但是 视频 编码格式 必须相同 , 否则会出现问题 ; 音频 拼接时 , 音频编码格式需要相同 , 并且 音频 采样率 / 通道数 / 采样位数...等参数也必须相同 , 才可以进行拼接 , 否则会出现问题 ; 在上一章节 , 使用 ts 格式进行视频拼接 , 成功率最高 , 本章节主要展示 使用不同视频编码格式 , 不同音频编码格式 , 不同音频编码参数..., 拼接过程也出现了 DTS 警告 , 视频时长是对 , 但是 第二音频 采样率是错误 , 播放 output.mp4 文件时 , 中间一段直接跳过 , 该输出文件有问题 ;

36210

FFmpeg 开发(03):FFmpeg + OpenSL ES 实现音频解码播放

Mp4 文件音频流进行解码,然后使用 libswresample 将解码后 PCM 音频数据转换为目标格式数据,最后利用 OpenSLES 进行播放。...1 FFmpeg 音频解码 旧文中,我们已经对视频解码流程进行了详细介绍,一多媒体文件(Mp4)一般包含一音频流和一视频流,而FFmpeg 对音频流和视频流解码流程一致。...因此,本节将不再对音频解码流程进行赘述。 类似于视频流处理,音频处理流程为:(Mp4文件)解协议->解封装->音频解码->采样->播放。...音频解码播放流程图 这里面有反复提到采样,类似于视频图像转码,因为显示器最终显示是 RGB 数据,这个一点比较好理解,那么为什么要对解码音频数据进行采样呢?...一般采集音频时会有多种采样率可以选择,当该采样率与音频设备驱动固定采样率不符时,就会导致变声或者音频出现快放慢放效果。 此时就需要用到采样来确保音频采样率和设备驱动采样率一致,使音频正确播放。

79320

如何使用FFmpeg将AVI转换为MP4(有损转换和无损转换)

你需要知道最重要事就是Formats和Codecs之间区别。 简单来说, 编解码器(Codecs)获取原始音频和视频后进行压缩,压缩到一合理空间大小。...音频和视频压缩过程输出被打包进一被称为容器(Formats)格式,而打开容器以及读取音频和视频方式也有明确规则和指南。容器有不同格式,如 MP4、AVI、WebM、MKV等。...当你将AVI文件交给FFmpeg并告诉它生成一不带任何参数MP4文件,它将解复用输入文件,提取原始视频进行重新编码,然后将它放入MP4容器格式,最后返还给你输出文件。...要研究参数,我们可以使用ffprobe ,它是FFmpeg工程工具,对于分析视频文件来说非常有用。 ...视频分辨率是1280x720、30fps,视频编码方式为High ProfileH.264/AVC,其码率为234 kbps。音频使用aac ,其码率为139 kbps,采样率为48 KHz。

7.2K50

原创干货 | 入门或者转行音视频,应该要怎么做?

另外,由于星球内朋友或者关注公众号朋友大多数是从事移动开发,经常会有一误区,把音视频开发认为是分支,我是非常不认同这个观念。...就音频编码来说,涉及到 ACC 算法,常见概念有采样率、采样位数、声道数、比特率等,深入一点的话,还有 ACC ADTS 以及 ADIF 文件格式信息等。...举个例子: 使用 MediaExtractor 和 MediaMuxer 来解封装和封装 mp4 文件 使用 MediaCodec 来编码和解码 H.264 和 AAC 数据 使用 Camera API...音视频相关技能操作肯定是必须要掌握,但如果只沉醉于各种技能学习,那么我可以很认真地告诉你,你只会是一工具人而已。 不要为了学习技能而学习技能,举个例子,上想要实现音频播放有哪些方式呢?...这个时候光掌握一些技能就不够看了,要学会打地基,学会设计架构,从一模块开始再到整体模块。

48320

JavaCV摄像头实战之六:保存为mp4文件(有声音)

本篇概览 本文是《JavaCV摄像头实战》第六篇,在《JavaCV摄像头实战之三:保存为mp4文件》一文,咱们将摄像头内容录制为mp4文件,相信聪明您一定觉察到了一缕瑕疵:没有声音 虽然《JavaCV...AudioService.java,主程序使用此类来完成音频处理 接下来开始编码 开发音频处理类AudioService 首先是刚才提到AudioService.java,主要内容就是前面图中深色块功能...,之后音频数据就从该数据线获取 line = (TargetDataLine)AudioSystem.getLine(dataLineInfo); line.open...new byte[audioBufferSize]; // 创建一定时任务,任务内容是定时做音频采样,再把采样数据交给帧录制器处理 sampleTask = new...有两处要注意: 重点关注recorder.recordSamples,该方法将音频存入了mp4文件 定时任务是在一新线程执行,因此当主线程结束录制后,需要中断定时任务while循环,因此新增了

71940

ffmpeg常用库、术语、API、数据结构总结

一、常用音视频术语和概念 容器/文件(Conainer/File):指特定格式多媒体文件,比如mp4、flv、mov等视频格式; 媒体流(Stream):一容器(如mp4文件)可存在多个流,可以是视频流...二、常用概念 音视频领域-复用器和解复用器 复用器:把多路原始流按一定规则组成成一音视频文件(例如:把一纯视频流、一音频流和一纯字幕流组合成一mp4文件); 解复用器:把一音视频文件按一定规则拆分成多路原始流...(例如:把一mp4文件,拆分成纯视频流、纯音频流和纯字幕流)。...libswresample (*重要) 该模块用于音频采样,可以对数字音频进行声道数、数据格式、采样率等多种基本信息进行转换。...可以是视频解码后像素数据,也可以是音频采样数据); 还得跟着0声Darren哥学着走阿!

90330

通过摄像机视频设备或者流媒体服务器SDK获取到数据转换成RTMP流实现网页手机微信播放

H.264视频流和AAC音频流,获取RTSP流我们可以用ffmpeg、SkeyeRTSPClient(https://gitee.com/visual-opening/SkeyeRTSPClient)等方案...Handle视频数据大多返回是H.264数据流,音频就各种各样了,有返回G.711、G.726、AAC,如果是返回G.711或者G.726时,就需要调用AAC编码器(如ffmpeg等)将音频流转换成...OpenSKEYE/SkeyeRTMPPusher: SkeyeRTMPPusher是一套调用简单、功能完善、运行高效稳定RTMP功能组件,经过多年实战和线上运行打造,支持RTMP推送断线连、环形缓冲...获取音视频流,再推流RTMP;SkeyeRTMP Android:推送摄像头/屏幕进行RTMP直播;SkeyeRTMP iOS:iOS苹果推送摄像头进行RTMP直播;完备调用示例,加上全平台支持...(Windows、Linux、arm、Android、iOS),给了开发者非常好选择和帮助;按照以上流程,我们就可以将RTSP/SDK获取数据进行RTMP/HLS发布,实现全终端、无插件化播放了

1.1K20

​关于 M4A 文件随机访问

flags; } MP4规范描述了非常多box,不过最常用其实只有这些: 图片来源:"MP4文件格式解析,以及MP4文件分割算法" M4A与MP4区别 M4A可以理解为只包含音频MP4...它官方定义如下:它包含一轨道中所有媒体采样时间-数据索引。说人话,它主要功能就是:将时间转换成对应采样在文件位置。 这对流媒体播放是至关重要。...:一秒内流过多少时间单位,对于音频,就是每秒采样率,对于视频,就是每秒帧率。...2、时间偏移 如果trak存在elst,事情就有些复杂了,它出现,说明MP4某条轨道时间戳有偏移,比如视频比音频慢10s,或者某一帧画面停留一段时间等等。...比如有这样一stsz box,它sample_size为0,entry_size记录每个sample在所属chunk内部偏移: 在第5步(stsc使用,我们获取到了sample所属chunk

1.6K00
领券