AVI Mux 音频视频不同步 建议使用MP4 ASF
2007-10-23 22:04
302 查看
问:
前些天一直在查为什么会产生音视频不同步的现像,下面是查证的数据.
都是使用AVI Mux Filter生成的avi文件。
用GSpot v2.52查看到的文件信息
第1个文件(音视频异步):文件长度正确
OpenDML (AVI v2.0)
第2个文件(音视频同步):OpenDML (AVI v2.0)
Interleave: 34 ms (1.0 v.frames)
Audio frames: Split across interleaves
文件长度正确
----------------------------------------------------------------
Graph图:
第1个文件
file source -> mpeg2 demux -> mpeg2 video decoder -> divx codec -> avi mux -> file write
-> ac3filter -> WMAudio encoder dmo -> (同上)
第2个文件
file source -> mpeg2 demux -> mpeg 2 video decoder -> divx codec -> avi mux -> file write
-> ac2 filter -> MP3 Layer -> (同上)
问题1:为什么使用不同的audio encoder,会产生不同文件信息?(如上述)
问题2:通过使用IConfigAviMux接口的SetOutputCompatibilityIndex(TRUE)仍不见文件信息有所改变(文件大小除外)。
问题3:使用IConfigInterleaving接口的put_mode设置为INTERLEAVE_NONE也不见文件信息有所改(文件大小除外)。
问题4:在生成两个文件时,只是改变了audio encoder,在第2个文件中的Interleave 34 ms 信息是根据什么产生的呢?
想了好些天还是没想出原因来:(
答:
avi mux这个filter的确有很多问题,不只你,很多人都碰到过。因为我很少写avi文件,所以这方面的经验也甚少。我的建议,尽量用asf文件格式去代替avi。asf与avi一样,也是一个文件容器,可以包含任意格式的音视频数据。但asf比avi设计得更完善,而且兼顾了网络流媒体的应用要求。
DirectShow自带了一个ASF Writer filter,但这个filter默认情况下会将输入数据使用Windows Media编码器进行编码。不大好用!你可以使用Windows Media Format SDK自己开发一个ASF Writer。
顺便打一下广告^o^
我的新书《Windows Media编程导向》马上就要出版了。这本书带了两个Filter:ASF Writer Filter和ASF Mux Filter——前者将输入的音视频数据使用Windows Media编码器进行编码后,生成Wmv文件;后者将输入的音视频数据直接按ASF格式打包成ASF文件,适合搂主的应用(不过输入到ASF Mux的Sample都要求打好时间戳!)。
再答:
还有 MP4 Filter http://www.gdcl.co.uk
前些天一直在查为什么会产生音视频不同步的现像,下面是查证的数据.
都是使用AVI Mux Filter生成的avi文件。
用GSpot v2.52查看到的文件信息
第1个文件(音视频异步):文件长度正确
OpenDML (AVI v2.0)
第2个文件(音视频同步):OpenDML (AVI v2.0)
Interleave: 34 ms (1.0 v.frames)
Audio frames: Split across interleaves
文件长度正确
----------------------------------------------------------------
Graph图:
第1个文件
file source -> mpeg2 demux -> mpeg2 video decoder -> divx codec -> avi mux -> file write
-> ac3filter -> WMAudio encoder dmo -> (同上)
第2个文件
file source -> mpeg2 demux -> mpeg 2 video decoder -> divx codec -> avi mux -> file write
-> ac2 filter -> MP3 Layer -> (同上)
问题1:为什么使用不同的audio encoder,会产生不同文件信息?(如上述)
问题2:通过使用IConfigAviMux接口的SetOutputCompatibilityIndex(TRUE)仍不见文件信息有所改变(文件大小除外)。
问题3:使用IConfigInterleaving接口的put_mode设置为INTERLEAVE_NONE也不见文件信息有所改(文件大小除外)。
问题4:在生成两个文件时,只是改变了audio encoder,在第2个文件中的Interleave 34 ms 信息是根据什么产生的呢?
想了好些天还是没想出原因来:(
答:
avi mux这个filter的确有很多问题,不只你,很多人都碰到过。因为我很少写avi文件,所以这方面的经验也甚少。我的建议,尽量用asf文件格式去代替avi。asf与avi一样,也是一个文件容器,可以包含任意格式的音视频数据。但asf比avi设计得更完善,而且兼顾了网络流媒体的应用要求。
DirectShow自带了一个ASF Writer filter,但这个filter默认情况下会将输入数据使用Windows Media编码器进行编码。不大好用!你可以使用Windows Media Format SDK自己开发一个ASF Writer。
顺便打一下广告^o^
我的新书《Windows Media编程导向》马上就要出版了。这本书带了两个Filter:ASF Writer Filter和ASF Mux Filter——前者将输入的音视频数据使用Windows Media编码器进行编码后,生成Wmv文件;后者将输入的音视频数据直接按ASF格式打包成ASF文件,适合搂主的应用(不过输入到ASF Mux的Sample都要求打好时间戳!)。
再答:
还有 MP4 Filter http://www.gdcl.co.uk
相关文章推荐
- Live Meeting 音频视频使用端口设置
- Android初级开发(八)——手机多媒体—音频和视频的使用
- audio音频和video视频标签的使用
- 详细教程使用jQuery jPlayer插件给你的站点增加视频和音频功能
- 使用 GStreamer appsrc 等插件实现视频音频混流,录制和推流
- ffmpeg+sdl教程----编写一个简单的播放器5(同步视频到音频)
- jquery.fileupload.js插件使用--多视频或音频上传预览
- 音频 帧率 音视频同步
- 关于各种音频&视频解码器的使用
- 使用mp4v2将aac音频h264视频数据封装成mp4开发心得
- 解决ios下使用uiwebview载入网页时,插放网页中视频或者音频无声音解决办法
- 使用 HTML5 音频和视频
- libav/FFMPEG 视频音频编解码库使用
- [转]音频视频同步
- Cloudera 建议使用 NTP 使 Hadoop 群集实现时间同步
- android-MediaPlayer的基本使用-播放音频视频
- FFmpeg——Windows下,视频播放器4:播放音频、音视频同步
- Android使用MediaPlayer只播放视频不播放音频的方法
- 直接在低版本IE6/7/8浏览器中使用HTML5的audio和video标签播放视频音频的办法
- 安卓使用videoview进行音频、视频播放,及播放控制