Saya memiliki bitmap yang ingin saya gabungkan ke depan banyak video sebagai semacam layar judul atau layar disclaimer.
Saya mencoba mengubahnya menjadi video dengan atribut yang sama dengan video lainnya. Jadi pertama saya introspeksi videonya:
ffmpeg version 2.2.1 Copyright (c) 2000-2014 the FFmpeg developers
built on Apr 11 2014 22:50:38 with Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
configuration: --prefix=/usr/local/Cellar/ffmpeg/2.2.1 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid
libavutil 52. 66.100 / 52. 66.100
libavcodec 55. 52.102 / 55. 52.102
libavformat 55. 33.100 / 55. 33.100
libavdevice 55. 10.100 / 55. 10.100
libavfilter 4. 2.100 / 4. 2.100
libavresample 1. 2. 0 / 1. 2. 0
libswscale 2. 5.102 / 2. 5.102
libswresample 0. 18.100 / 0. 18.100
libpostproc 52. 3.100 / 52. 3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'EO1.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
creation_time : 1970-01-01 00:00:00
encoder : Lavf52.78.3
Duration: 00:00:17.77, start: 0.000000, bitrate: 582 kb/s
Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 584x328 [SAR 1:1 DAR 73:41], 512 kb/s, 23.98 fps, 23.98 tbr, 1199 tbn, 47.96 tbc (default)
Metadata:
creation_time : 1970-01-01 00:00:00
handler_name : VideoHandler
Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 64 kb/s (default)
Metadata:
creation_time : 1970-01-01 00:00:00
handler_name : SoundHandler
Lalu saya mencoba dan membuat file serupa:
/usr/local/Cellar/ffmpeg/2.2.1/bin/ffmpeg -y -loop 1 -i Disclaimer.png -c: v libx264 -r 23.98 -t 5 -pix_fmt yuv420p -profile: v disclaimer.mp4
Tampaknya bekerja dengan baik. Video diputar seperti yang saya harapkan. Atribut ternyata sangat mirip. Berikut ini perbedaan:
< Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'disclaimer.mp4':
---
> Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'EO1.mp4':
18,20c18,21
< encoder : Lavf55.33.100
< Duration: 00:00:05.01, start: 0.000000, bitrate: 21 kb/s
< Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 584x328 [SAR 1:1 DAR 73:41], 17 kb/s, 23.98 fps, 23.98 tbr, 19184 tbn, 47.96 tbc (default)
---
> creation_time : 1970-01-01 00:00:00
> encoder : Lavf52.78.3
> Duration: 00:00:17.77, start: 0.000000, bitrate: 582 kb/s
> Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 584x328 [SAR 1:1 DAR 73:41], 512 kb/s, 23.98 fps, 23.98 tbr, 1199 tbn, 47.96 tbc (default)
21a23
22a25,28
> Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 64 kb/s (default)
> Metadata:
> handler_name : SoundHandler
Tetapi ketika saya mencoba menggabungkan, saya mendapatkan kesalahan.
> $ cat temporary.txt
file disclaimer.mp4
file EO1.mp4
/usr/local/Cellar/ffmpeg/2.2.1/bin/ffmpeg -y -f concat -i temporary.txt -c copy output.mp4
[concat @ 0x7fd880806600] Estimating duration from bitrate, this may be inaccurate
Input #0, concat, from 'temporary.txt':
Duration: 00:00:00.02, start: 0.000000, bitrate: 17 kb/s
Stream #0:0: Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 584x328 [SAR 1:1 DAR 73:41], 17 kb/s, 23.98 fps, 23.98 tbr, 19184 tbn, 47.96 tbc
Output #0, mp4, to 'output.mp4':
Metadata:
encoder : Lavf55.33.100
Stream #0:0: Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 584x328 [SAR 1:1 DAR 73:41], q=2-31, 17 kb/s, 23.98 fps, 19184 tbn, 19184 tbc
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Press [q] to stop, [?] for help
[mp4 @ 0x7fd880829a00] Non-monotonous DTS in output stream 0:0; previous: 93600, current: 5951; changing to 93601. This may result in incorrect timestamps in the output file.
[concat @ 0x7fd880806600] Invalid stream index 1
[mp4 @ 0x7fd880829a00] Non-monotonous DTS in output stream 0:0; previous: 93601, current: 6001; changing to 93602. This may result in incorrect timestamps in the output file.
[concat @ 0x7fd880806600] Invalid stream index 1
[mp4 @ 0x7fd880829a00] Non-monotonous DTS in output stream 0:0; previous: 93602, current: 6051; changing to 93603. This may result in incorrect timestamps in the output file.
...
frame= 546 fps=0.0 q=-1.0 Lsize= 1127kB time=00:00:04.90 bitrate=1882.9kbits/s
video:1123kB audio:0kB subtitle:0 data:0 global headers:0kB muxing overhead 0.349865%
Outputnya sepertinya hanya memiliki file disclaimer saya di dalamnya, bukan sisa video.
Saya juga bingung mengapa rasanya perlu "memperkirakan" apa saja. Ia tahu input FPS dan durasi input. Saya tidak yakin apakah ini masalahnya atau tidak. Mungkin itu hanya bug.
Pilihan saya yang lain adalah dengan menggunakan "concat filter" tetapi itu adalah transcode lossy, kan? Saya lebih suka memiliki video kedua persis sama setelah penggabungan seperti sebelumnya.
Sunting: akhirnya mencoba "protokol" concat yang merupakan opsi ketiga. Dokumen tidak mendukung penggunaannya tetapi lebih baik daripada dua lainnya (Concat demuxer dan filter concat).
-r 23.98
Anda harus menggunakan-r 24000/1001
atau-r ntsc-film
(kecuali tentu saja video lain dibuat dengan-r 23.98
). Ini mungkin tidak menyelesaikan masalah saat ini.Jawaban:
Saya tahu ini mungkin bukan jawaban yang Anda cari tetapi mengapa tidak menggunakan perangkat lunak pengedit video untuk melakukan ini? Pengeditan video dapat mengambil frame rate yang berbeda, codec, dll dan menggabungkannya ke dalam format target dan itu akan dapat dimainkan oleh perangkat lunak biasa. Sejumlah program menawarkan mode batch jika Anda perlu menambahkan disclaimer ke banyak video.
Ada editor video open source dan eksklusif. Saya pikir apa yang Anda lakukan adalah jauh di luar apa yang dirancang untuk menggabungkan yang pada dasarnya menggabungkan file dari jenis dan format yang sama.
sumber
Kedua video harus persis sama dengan pengkodean sejauh - ukuran skala bingkai, rasio aspek, frame per detik dan bitrate yang bersangkutan.
Coba gunakan konverter eRrightSofts Super (c). Ini adalah GUI yang sangat luas untuk ffmpeg. Ini juga memiliki "MediaInfo" tertanam di dalamnya, sehingga Anda dapat memeriksa film Anda untuk melihat apakah mereka persis sama.
Penulis tidak mengklaim kepengarangan kecuali untuk GUI dan memberikan kredit penuh kepada ffmpeg dll.
Itu harus melakukan apa yang Anda butuhkan dan banyak lagi. Ini adalah freeware.
Saya pribadi menggunakannya untuk menggabungkan file, mengekstrak video atau audio, mengkode ulang video ke berbagai format. Namanya kata Super dan itu.
sumber