Reputation: 446
Videos created with Camtasia can be shared on the web by exporting the project for the TechSmith Smart Player. The video is exported in the "H264 - MPEG-4 AVC (part10) (avc1)" codec and the export also includes other custom XML, JavaScript and SWF files used by the TechSmith Smart Player.
These custom files are also "burnt" into the video itself. For example the contents of the XML file can be viewed when opening the MP4 video in a text editor. This allows other services to only ask for the MP4 file when uploading Camtasia videos.
Therefore my question is how do you extract text and binary files from a MP4 video file? For this project I am limited to Java but I am happy to call an external executable as well.
I tried the "-dump_attachment" option in FFmpeg but that didn't work and I am out of ideas.
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
Update: It appears the XML is contained within a custom UUID atom and I just need a way of extracting that.
Thanks
Upvotes: 4
Views: 1344
Reputation: 446
Managed to find a way to access the UUID Atom/Box by making use of the mp4parser project
IsoFile isoFile = new IsoFile("project.mp4");
UserBox userbox = isoFile.getBoxes(UserBox.class).get(0);
System.out.println(new String(userbox.getData()));
Upvotes: 1