2013-10-27 65 views
4

使用Camtasia創建的視頻可以通過導出項目TechSmith Smart Player在網絡上共享。該視頻在「H264-MPEG-4 AVC(part10)(avc1)」編解碼器中導出,導出還包括TechSmith Smart Player使用的其他自定義XML,JavaScript和SWF文件。從mpeg視頻中提取文件

這些自定義文件也被「燒」到視頻本身。例如,在文本編輯器中打開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原子內,我只需要提取那的一種方式。

感謝

+0

[這]的訪問UUID的Atom /箱(http://en.wikipedia.org/wiki/ H.264/MPEG-4_AVC)可能會對你有所幫助。 –

+0

請用'-dump_attachment'顯示您的ffmpeg命令,幷包含完整的控制檯輸出。 – LordNeckbeard

+0

已更新的問題,我得到的是「至少有一個輸出文件必須指定」 –

回答

1

設法找到一種方法通過利用mp4parser項目

IsoFile isoFile = new IsoFile("project.mp4"); 
UserBox userbox = isoFile.getBoxes(UserBox.class).get(0); 
System.out.println(new String(userbox.getData()));