当前位置: 首页 > 知识库问答 >
问题:

从mpeg视频中提取文件

许博
2023-03-14

使用Camtasia创建的视频可以通过导出TechSmith智能播放器的项目在网络上共享。该视频以“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个答案

公羊灿
2023-03-14

通过使用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()));
 类似资料:
  • 问题内容: 我最近冒险涉足与音频和视频相关的编码,并且我对两者都不了解。 碰巧我有一个正在处理mpeg-2视频的项目。是否有可用的python库提取mpeg-2视频本身的持续时间? 问题答案: 我不知道任何纯python实现。但是也许opencv绑定适合您: 否则,可以使用pyffmpeg。当心:根据我的经验,帧数通常不是很准确。Opencv 2.6可以很好地工作,但是更便宜的版本有时只会带来垃圾

  • 我正在尝试从视频文件中提取音频。我试过python中的moviepy、ffmpeg等库。提取的音频文件太大。对于大小为75 MB的音频文件,音频文件与moviepy的距离约为1.1 GB。即使比特率为16 kbps,采样率为16000 Hz,提取的文件大小也将达到200 MB。任何其他库或提取的音频文件大小至少相同或小于完整视频文件的方式。 我正在ffmpeg中使用上述命令。

  • 我想在背景图像上覆盖透明视频。我有一个视频,其中上半部分是RGB对象,下半部分是阿尔法掩码。 现在,为了制作这个,我执行以下步骤:

  • 我使用这个库在我的Android应用程序中使用FFmpeg。我正在从视频中提取帧,然后将它们添加到裁剪查看器中。因此,每一帧都需要表示视频中的某个时间帧。下面是我当前提取帧的ffmpeg代码: 感谢任何帮助

  • 当在OS X上使用Chrome或Safari访问此控制器方法时,开发人员工具报告请求被取消--没有收到响应,无论是200还是404。我已经确认了SimpleResponse实际上是由这个控制器操作在请求上返回的。我希望它能提供一个好的响应,但是Play不能完成响应,或者我的浏览器不能接受它。我是在这里做了什么错误的回应,还是在框架中偶然发现了一个bug? 我的游戏版本是2.1.3。