打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
mp4v2研究笔记1

***免责申明:本博客是博主研究mp4v2时的笔记,第一初衷是备忘,是写给自己看的,想到多少写多少,文中观点很可能不正确,也可能缺乏逻辑性,可读性,不喜勿喷。***

正文:

mp4v2是一个开源的分析mp4文件结构的工具。解压下载包后发现有一个vstudio9.0文件夹,非常感谢作者直接给了一个VC工程,不像其它的开源代码只有基于linux的版本,还得自己改为windows版本。这里但是要特别提醒一下,从官方下载的源码天生就缺少3个文件,下载了就编译肯定是编不过的,需要在网上找到那三个文件。编译完后会生成一个libmp4v2.lib静态库,编译前需要设置一个工程属性,“C/C++ / 输出文件 / 程序数据库文件名”,它原本是vc90.pdb,改为libmp4v2.pdb,否则以后断点执行时不会进入到源码中,这个问题折腾了我好久。如何在VC下编译有很多网文,此处略过。

库编译后,还有几个演示工程,他们可以向您演示如何使用mp4v2库(其实我原来我原来我觉得还差很远)


我们从mp4track工程开始研究起。且看它的代码,很简洁,但是太简洁了也不好使,我们要把它剥皮,把TrackUtility这外包装类去掉,才好真正的在在自己的代码中使用mp4v2库。

......
......
......
extern "C"int main( int argc, char** argv ){    mp4v2::util::TrackUtility util( argc, argv );    return util.process();}
如何去掉这层皮也不是很复杂的事,我花了半小时把皮剥好了,如果你创建一个工程直接使用如下代码,即可运行,效果与上面一样,但是少了一些包装类,工具类让我们更容易深入本质研究分析代码:
#include "stdafx.h"#include "util/impl.h"#pragma comment( lib, "..\\debug\\libmp4v2.lib" )using namespace std;
void verbose1f( const char* format, ... ){    va_list ap;    va_start( ap, format );//    verbose( 1, format, ap );  vfprintf( stdout, format, ap );    va_end( ap );}bool actionListSinglex( MP4FileHandle fileHandle, uint16_t index ){    mp4v2::util::TrackModifier tm( fileHandle, index );	//这是解析Track的关键,TrackModifier中有关于Track的一切信息    ostringstream report;    tm.dump( report, " ");   verbose1f( "%s", report.str().c_str() );    return false;}extern "C"int main( int argc, char** argv ){  string strFile("d:\\clip\\workers_world_co64_box64.mp4");  MP4FileHandle fileHandle = MP4Read(strFile.c_str());  if( fileHandle == MP4_INVALID_FILE_HANDLE )        return printf( "unable to open for read: %s\n", strFile.c_str() );  bool result = 0;    const uint16_t trackc = static_cast<uint16_t>( MP4GetNumberOfTracks( fileHandle ));    for( uint16_t i = 0; i < trackc; i++ )   {        if( actionListSinglex( fileHandle, i ))            result = 1;    }  MP4Close(fileHandle);  return result;}
待续。。。。。。  
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
主函数参数argc和argv测试
QT学习笔记-7.QString和QByteArray - Cpper - C++博客
让ROOT权限一次获取,终生受用 | 老谭
MP4V2 录制mp4(h264+aac)视频
ROS学习(四)--2.自定义话题案例
脚本系统:TCC和V8的简单对比
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服