我正在分发一个 exe 文件,其中包含一个视频,该视频需要能够在 Windows XP 和 Windows 7 上播放,而无需安装任何其他软件或编解码器。这包括 Windows Media Player,我的许多客户都没有安装它。
格式 – 请耐心等待,我主要为其他平台开发应用程序。我通常不处理音频/视频或 Windows 内容,所以我的术语可能不正确 – 我尝试过但未成功:
- .mp4
- .ogv
- .wmv(很讽刺,不是吗?)
我已经能够播放 .mpg 格式的视频,但有两个问题:
- 音频无法播放
- 文件真的很大。它有 80 MB,我希望它不超过 30 MB。我可以把它放在 zip 中以减小大小,但这只能将它减小到 50 MB。
当我在 Mac 上打开该文件时,它会播放音频和所有内容。
QuickTime X 影片检查器对文件格式的说明如下:
MPEG-1 Video, 1,280 x 720
MPEG Layer 3, 48000 Hz, Stereo (L R)
我想要一个 FFMPEG 命令,我可以向其输入视频,并最终得到一个可以在 Windows 7 上播放的输出文件(音频和视频),而无需依赖其他编解码器或应用程序。如果它也可以在全新安装的 Windows XP 上播放,那就太好了,虽然如果不能播放我也可以接受,理想情况下,我希望它也在我的大小限制之内。
当我尝试遵循 Darth Android 的回答时,编辑了有关 ffmpeg 输出的详细信息:
ffmpeg version 2.0.1 Copyright (c) 2000-2013 the FFmpeg developers
built on Aug 15 2013 10:56:46 with llvm-gcc 4.2.1 (LLVM build 2336.11.00)
configuration: --prefix=/Volumes/Ramdisk/sw --enable-gpl --enable-pthreads
--enable-version3 --enable-libspeex --enable-libvpx --disable-decoder=libvpx
--enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264
--enable-avfilter --enable-libopencore_amrwb --enable-libopencore_amrnb
--enable-filters --enable-libgsm --arch=x86_64 --enable-runtime-cpudetect
libavutil 52. 38.100 / 52. 38.100
libavcodec 55. 18.102 / 55. 18.102
libavformat 55. 12.100 / 55. 12.100
libavdevice 55. 3.100 / 55. 3.100
libavfilter 3. 79.101 / 3. 79.101
libswscale 2. 3.100 / 2. 3.100
libswresample 0. 17.102 / 0. 17.102
libpostproc 52. 3.100 / 52. 3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'my-video.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: mp42isomavc1
creation_time : 2013-06-10 18:21:11
encoder : HandBrake 0.9.9 2013051800
Duration: 00:01:33.95, start: 0.000000, bitrate: 954 kb/s
Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 813 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 180k tbc
Metadata:
creation_time : 2013-06-10 18:21:11
Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 136 kb/s
Metadata:
creation_time : 2013-06-10 18:21:11
[vob @ 0x7f8278821000] VBV buffer size not set, muxing may fail
Output #0, vob, to 'my-video.mpg':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: mp42isomavc1
encoder : Lavf55.12.100
Stream #0:0(und): Video: mpeg2video, yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 90k tbn, 29.97 tbc
Metadata:
creation_time : 2013-06-10 18:21:11
Stream #0:1(eng): Audio: mp2, 48000 Hz, stereo, s16, 128 kb/s
Metadata:
creation_time : 2013-06-10 18:21:11
Stream mapping:
Stream #0:0 -> #0:0 (h264 -> mpeg2video)
Stream #0:1 -> #0:1 (aac -> mp2)
Press [q] to stop, [?] for help
frame= 182 fps=0.0 q=24.8 size= 528kB time=00:00:06.25 bitrate= 691.6kbits
frame= 380 fps=379 q=31.0 size= 1076kB time=00:00:12.97 bitrate= 679.4kbits
frame= 548 fps=364 q=31.0 size= 1704kB time=00:00:18.49 bitrate= 754.8kbits
frame= 692 fps=345 q=31.0 size= 2390kB time=00:00:23.26 bitrate= 841.4kbits
frame= 815 fps=325 q=31.0 size= 3170kB time=00:00:27.30 bitrate= 951.2kbits
frame= 950 fps=316 q=24.8 size= 4146kB time=00:00:31.78 bitrate=1068.4kbits
frame= 1079 fps=307 q=31.0 size= 5154kB time=00:00:36.13 bitrate=1168.5kbits
frame= 1242 fps=309 q=31.0 size= 5868kB time=00:00:41.65 bitrate=1154.0kbits
frame= 1413 fps=313 q=31.0 size= 6586kB time=00:00:47.31 bitrate=1140.2kbits
frame= 1587 fps=316 q=31.0 size= 7346kB time=00:00:53.14 bitrate=1132.2kbits
frame= 1753 fps=318 q=31.0 size= 8026kB time=00:00:58.66 bitrate=1120.7kbits
frame= 1925 fps=320 q=31.0 size= 8798kB time=00:01:04.35 bitrate=1119.9kbits
frame= 2091 fps=321 q=31.0 size= 9646kB time=00:01:10.02 bitrate=1128.5kbits
frame= 2226 fps=317 q=31.0 size= 10484kB time=00:01:14.48 bitrate=1153.0kbits
frame= 2386 fps=317 q=31.0 size= 11232kB time=00:01:19.86 bitrate=1152.1kbits
frame= 2554 fps=318 q=31.0 size= 11852kB time=00:01:25.40 bitrate=1136.8kbits
frame= 2759 fps=324 q=31.0 size= 12396kB time=00:01:32.14 bitrate=1102.0kbits
frame= 2813 fps=325 q=31.0 Lsize= 12546kB time=00:01:33.94 bitrate=1094.0kbits/s
video:10904kB audio:1468kB subtitle:0 global headers:0kB muxing overhead 1.402856%
答案1
尝试:
ffmpeg.exe -i "C:/Path/to/your/video.mkv" -vcodec mpeg2video -acodec mp2 -f vob -y "C:/Path/to/output/video.mpg"
您的源文件在哪里video.mkv
,以及video.mpg
您的输出在哪里。
-vcodec mpeg2video
将输出视频格式设置为 MPEG2
-acodec mp2
将输出音频格式设置为 MPEG2
-f vob
将输出容器/文件格式设置为 Vob (*.mpg)
-y
覆盖目标文件。
答案2
我终于找到了一种适合我的格式,可以在全新安装的 Windows 7 上使用,无需 Windows Media Player 或任何其他编解码器:
MPEG-1 Video, 1,280 x 720
MPEG Layer 3, 48000 Hz, Mono
(请注意,与我第一次发布问题时所使用的相比,唯一的变化是从立体声变成了单声道。)
为了得到它我输入:
ffmpeg -i my-video.mp4 -vcodec mpeg1video -acodec mp2 -ac 1 -f vob my-video-mono.mpg
我要感谢 Darth Android,他的回答极大地帮助了我了解我需要向 ffmpeg 提供的参数。