我有一个包含 H.264 1080p 视频和原始 16 位 PCM 音频的 .mov 文件,我需要对其进行编辑(删除其中的一部分)。
原始文件在 Gnome 的电影播放器和 VLC 中播放正常,但是当我在任何编辑器中打开该文件时,它都会失败,音频会中断(因为大约一半之后就没有音频了 - 这里不是在说几毫秒!)
我尝试过的编辑器/转码器:VLC、Handbrake、Avidemux、OpenShot。
我不明白为什么原版播放正常,但无法转码或在编辑器中打开,否则会出现此问题。在转码器上,我尝试了各种音频/视频/容器的组合。
有人知道一个可靠的方法,或者我可能做错了什么?
(我使用的是 Ubuntu 12.04)
请求如下:
$ffmpeg -i VBFT\ FINAL.mov
ffmpeg version N-54234-gef90639 Copyright (c) 2000-2013 the FFmpeg developers
built on Jun 28 2013 05:26:06 with gcc 4.6 (Debian 4.6.3-1)
configuration: --prefix=/root/ffmpeg-static/64bit --extra-cflags='-I/root/ffmpeg-static/64bit/include -static' --extra-ldflags='-L/root/ffmpeg-static/64bit/lib -static' --extra-libs='-lxml2 -lexpat -lfreetype' --enable-static --disable-shared --disable-ffserver --disable-doc --enable-bzlib --enable-zlib --enable-postproc --enable-runtime-cpudetect --enable-libx264 --enable-gpl --enable-libtheora --enable-libvorbis --enable-libmp3lame --enable-gray --enable-libass --enable-libfreetype --enable-libopenjpeg --enable-libspeex --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-version3 --enable-libvpx
libavutil 52. 37.101 / 52. 37.101
libavcodec 55. 17.100 / 55. 17.100
libavformat 55. 10.100 / 55. 10.100
libavdevice 55. 2.100 / 55. 2.100
libavfilter 3. 77.101 / 3. 77.101
libswscale 2. 3.100 / 2. 3.100
libswresample 0. 17.102 / 0. 17.102
libpostproc 52. 3.100 / 52. 3.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x388f6a0] multiple edit list entries, a/v desync might occur, patch welcome
Guessed Channel Layout for Input Stream #0.1 : stereo
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'VBFT FINAL.mov':
Metadata:
major_brand : qt
minor_version : 537199360
compatible_brands: qt
creation_time : 2013-03-04 16:54:43
Duration: 00:02:37.24, start: 0.000000, bitrate: 9349 kb/s
Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1920x1080, 4017 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc
Metadata:
creation_time : 2013-03-04 16:54:43
handler_name : Apple Alias Data Handler
timecode : 01:00:00:00
Stream #0:1(eng): Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz, stereo, s16, 1536 kb/s
Metadata:
creation_time : 2013-03-04 16:54:43
handler_name : Apple Alias Data Handler
Stream #0:2(eng): Data: none (tmcd / 0x64636D74)
Metadata:
creation_time : 2013-03-04 16:54:51
handler_name : Apple Alias Data Handler
timecode : 01:00:00:00
At least one output file must be specified
答案1
您可以尝试手动提取音频,然后将其合并回去:
ffmpeg -i input.mov -c:a copy out.wav
ffmpeg -i input.mov -i out.wav -c:v copy -c:a libfaac -map 0 -map 1 out.mp4
生成的 MP4 文件将包含原始视频流和编码为 AAC 音频的音频流,MP4 容器支持该音频流。这样您就可以在任何视频编辑程序中轻松编辑该文件。
或者,如果你想要剪掉某些东西,你可以立即这样做ffmpeg
:
ffmpeg -i input.mov -i out.wav -ss 00:01:23 -c:v copy -c:a libfaac -to 00:02:34 -map 0:v -map 1 out.mp4
这里,-ss
和-to
分别指定开始和停止时间戳。-map 0:v -map 1
指示ffmpeg
将第一个输入文件和第二个文件的视频流完全映射到输出。