从mpeg视频中提取文件

时间:2013-10-27 13:57:29

标签: java video ffmpeg mpeg

使用Camtasia创建的视频可以通过导出TechSmith Smart Player的项目在网络上共享。视频导出为“H264 - MPEG-4 AVC(part10)(avc1)”编解码器,导出还包括TechSmith智能播放器使用的其他自定义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 version N-57448-gc78a416 Copyright (c) 2000-2013 the FFmpeg developers
  built on Oct 26 2013 18:08:54 with gcc 4.8.2 (GCC)
  configuration: --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
  libavdevice    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
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'getting-started-project.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2013-10-24 15:53:19
    artist          :
    description     :
    title           : Untitled
  Duration: 00:05:41.12, start: 0.000000, bitrate: 314 kb/s
    Stream #0:0(eng): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p(tv), 6
40x360 [SAR 1:1 DAR 16:9], 185 kb/s, 30 fps, 30 tbr, 30k tbn, 60 tbc (default)
    Metadata:
      creation_time   : 2013-10-24 15:53:19
      handler_name    : Mainconcept MP4 Video Media Handler
    Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 12
5 kb/s (default)
    Metadata:
      creation_time   : 2013-10-24 15:53:19
      handler_name    : Mainconcept MP4 Sound Media Handler
 At least one output file must be specified

更新:看来XML包含在自定义UUID原子中,我只需要一种解压缩方式。

由于

1 个答案:

答案 0 :(得分: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()));