24 ffmpeg
我想使用 ffmpeg 连接 2 个视频。我在用:
ffmpeg -i output1.mp4 -scodec copy -vbsf h264_mp4toannexb i0.ts
Run Code Online (Sandbox Code Playgroud)
但是我得到的 mp4 文件看起来比源文件差得多。
这是有关这两个文件的信息
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'output1.mp4':
Metadata:
major_brand : isom
minor_version : 1
compatible_brands: isom
creation_time : 2013-06-13 15:40:36
Duration: 00:00:15.72, start: 0.000000, bitrate: 2053 kb/s
Stream #0.0(und): Video: h264 (High), yuv420p, 1280x720, 1931 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc
Stream #0.1(und): Audio: aac, 44100 Hz, stereo, s16, 128 kb/s
Input #0, mpegts, from 'i0.ts':
Duration: 00:00:15.64, start: 1.400000, bitrate: 1382 kb/s
Program 1
Metadata:
service_name : Service01
service_provider: Libav
Stream #0.0[0x100]: Video: mpeg2video (Main), yuv420p, 1280x720 [PAR 1:1 DAR 16:9], 104857 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0.1[0x101](und): Audio: mp2, 44100 Hz, stereo, s16, 128 kb/s
Run Code Online (Sandbox Code Playgroud)
我怎么解决这个问题?
llo*_*gan 42
考虑使用concat
demuxer。通过这种方式,您可以避免创建临时的、有损的中间文件,并跳过重新编码的额外步骤。
注意:所有输入必须具有相同的流类型(相同的格式、相同的时基等)。
创建一个文本文件并包含要连接(或“连接”)的每个文件的路径和名称。示例文件,input.txt
:
file '/home/jenia/input1.mp4'
file '/home/jenia/input2.mp4'
file '/home/jenia/input3.mp4'
Run Code Online (Sandbox Code Playgroud)现在您可以使用concat
分路器:
ffmpeg -f concat -i input.txt -codec copy output.mp4
Run Code Online (Sandbox Code Playgroud)如果您没有此功能,那么要么您的 ffmpeg 太旧,要么您使用的是来自 libav fork 的“假”ffmpeg。
易于使用的静态构建可通过FFmpeg 下载页面用于 Linux、OS X 和 Windows ,或者您可以按照分步指南来编译 ffmpeg。
另见:
最快的 1-liner 将是:
ls Movie\ Part\ * | while read line; do echo file \'$line\'; done | ffmpeg -f concat -i - -c copy output.mp4
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
55722 次 |
最近记录: |