4

通过为TechSmith Smart Player导出项目,可以在网络上共享使用Camtasia创建的视频。视频以“H264 - MPEG-4 AVC (part10) (avc1)”编解码器导出,导出还包括 TechSmith Smart Player 使用的其他自定义 XML、JavaScript 和 SWF 文件。

这些自定义文件也被“刻录”到视频本身中。例如,在文本编辑器中打开 MP4 视频时,可以查看 XML 文件的内容。这允许其他服务在上传 Camtasia 视频时仅请求 MP4 文件。

因此我的问题是如何从 MP4 视频文件中提取文本和二进制文件?对于这个项目,我仅限于 Java,但我也很乐意调用外部可执行文件。

我尝试了FFmpeg中的“-dump_attachment”选项,但没有奏效,而且我没有想法。

C:\Users\Desktop>ffmpeg -dump_attachment:t "" -i getting-started-project.mp4
ffmpeg 版本 N-57448-gc78a416 版权所有 (c) 2000-2013 FFmpeg 开发者
  使用 gcc 4.8.2 (GCC) 于 2013 年 10 月 26 日 18:08:54 构建
  配置:--enable-gpl --enable-version3 --disable-w32threads --enable-av
isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab
le-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetyp
e --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --ena
ble-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-l
ibopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libsp
eex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aa
cenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavp
ack --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
  libavutil 52. 47.101 / 52. 47.101
  libavcodec 55. 38.101 / 55. 38.101
  libavformat 55. 19.104 / 55. 19.104
  libav 设备 55. 5.100 / 55. 5.100
  libavfilter 3. 89.100 / 3. 89.100
  libswscale 2. 5.101 / 2. 5.101
  libswresample 0. 17.104 / 0. 17.104
  libpostproc 52. 3.100 / 52. 3.100
输入#0,mov,mp4,m4a,3gp,3g2,mj2,来自“getting-started-project.mp4”:
  元数据:
    主要品牌:mp42
    次要版本:0
    compatible_brands:isomp42
    创建时间:2013-10-24 15:53:19
    艺术家 :
    描述 :
    标题:无标题
  时长:00:05:41.12,开始:0.000000,比特率:314 kb/s
    流#0:0(eng):视频:h264(基线)(avc1 / 0x31637661),yuv420p(tv),6
40x360 [SAR 1:1 DAR 16:9]、185 kb/s、30 fps、30 tbr、30k tbn、60 tbc(默认)
    元数据:
      创建时间:2013-10-24 15:53:19
      handler_name : Mainconcept MP4 视频媒体处理程序
    流 #0:1(eng):音频:aac (mp4a / 0x6134706D),44100 Hz,立体声,fltp,12
5 kb/s(默认)
    元数据:
      创建时间:2013-10-24 15:53:19
      handler_name : Mainconcept MP4 声音媒体处理程序
 必须至少指定一个输出文件

更新:似乎 XML 包含在自定义 UUID 原子中,我只需要一种提取方法。

谢谢

4

1 回答 1

1

设法通过使用mp4parser项目找到访问 UUID Atom/Box 的方法

IsoFile isoFile = new IsoFile("project.mp4");
UserBox userbox = isoFile.getBoxes(UserBox.class).get(0);
System.out.println(new String(userbox.getData()));
于 2013-10-28T03:27:22.790 回答