Setelah menjalankan perintah ini ffmpeg -f concat -i mylist.txt -c copy output.mp4
- Saya mendapatkan output.mp4
file yang rusak dan pesan ini:
ffmpeg -f concat -i mylist.txt -c copy output.mp4
ffmpeg version 2.6.2 Copyright (c) 2000-2015 the FFmpeg developers
built with Apple LLVM version 6.1.0 (clang-602.0.49) (based on LLVM 3.6.0svn)
configuration: --prefix=/usr/local/Cellar/ffmpeg/2.6.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libmp3lame --enable-libvo-aacenc --enable-libxvid --enable-vda
libavutil 54. 20.100 / 54. 20.100
libavcodec 56. 26.100 / 56. 26.100
libavformat 56. 25.101 / 56. 25.101
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 11.102 / 5. 11.102
libavresample 2. 1. 0 / 2. 1. 0
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 3.100 / 53. 3.100
Input #0, concat, from 'mylist.txt':
Duration: N/A, start: 0.000000, bitrate: 829 kb/s
Stream #0:0: Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1440x900, 701 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc
Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s
Output #0, mp4, to 'output.mp4':
Metadata:
encoder : Lavf56.25.101
Stream #0:0: Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 1440x900, q=2-31, 701 kb/s, 30 fps, 30 tbr, 15360 tbn, 15360 tbc
Stream #0:1: Audio: aac ([64][0][0][0] / 0x0040), 44100 Hz, stereo, 128 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
[mp4 @ 0x7f897a01bc00] Non-monotonous DTS in output stream 0:0; previous: 598061, current: 467644; changing to 598062. This may result in incorrect timestamps in the output file.
[mp4 @ 0x7f897a01bc00] Non-monotonous DTS in output stream 0:0; previous: 598062, current: 468044; changing to 598063. This may result in incorrect timestamps in the output file.
[mp4 @ 0x7f897a01bc00] Non-monotonous DTS in output stream 0:0; previous: 598063, current: 468444; changing to 598064. This may result in incorrect timestamps in the output file.
...
[mp4 @ 0x7f897a01bc00] Non-monotonous DTS in output stream 0:0; previous: 598362, current: 588044; changing to 598363. This may result in incorrect timestamps in the output file.
frame= 1472 fps=0.0 q=-1.0 Lsize= 5825kB time=00:00:49.04 bitrate= 973.0kbits/s
video:4903kB audio:877kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.776358%
Isi dari mylist.txt
file 'cut.mp4'
file 'cut2.mp4'
keluaran cut.mp4 dari ffmpeg:
ffmpeg -i cut.mp4
ffmpeg version 2.6.2 Copyright (c) 2000-2015 the FFmpeg developers
built with Apple LLVM version 6.1.0 (clang-602.0.49) (based on LLVM 3.6.0svn)
configuration: --prefix=/usr/local/Cellar/ffmpeg/2.6.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libmp3lame --enable-libvo-aacenc --enable-libxvid --enable-vda
libavutil 54. 20.100 / 54. 20.100
libavcodec 56. 26.100 / 56. 26.100
libavformat 56. 25.101 / 56. 25.101
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 11.102 / 5. 11.102
libavresample 2. 1. 0 / 2. 1. 0
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 3.100 / 53. 3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'cut.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf56.25.101
Duration: 00:00:39.04, start: 0.036281, bitrate: 837 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1440x900, 701 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
handler_name : SoundHandler
keluaran cut2.mp4 dari ffmpeg:
ffmpeg -i cut2.mp4
ffmpeg version 2.6.2 Copyright (c) 2000-2015 the FFmpeg developers
built with Apple LLVM version 6.1.0 (clang-602.0.49) (based on LLVM 3.6.0svn)
configuration: --prefix=/usr/local/Cellar/ffmpeg/2.6.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libmp3lame --enable-libvo-aacenc --enable-libxvid --enable-vda
libavutil 54. 20.100 / 54. 20.100
libavcodec 56. 26.100 / 56. 26.100
libavformat 56. 25.101 / 56. 25.101
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 11.102 / 5. 11.102
libavresample 2. 1. 0 / 2. 1. 0
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 3.100 / 53. 3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'cut2.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf56.25.101
Duration: 00:00:10.07, start: 0.000000, bitrate: 1498 kb/s
Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1440x900, 1271 kb/s, 30 fps, 30 tbr, 12k tbn, 60 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 218 kb/s (default)
Metadata:
handler_name : SoundHandler
cut.mp4
Saya dapat perintah ini ffmpeg -ss 00:00:11 -i myfile.mp4 -to 00:00:39 -vf 'drawbox= : x=0 : y=0 : color=invert' cut.mp4
cut2.mp4
Saya dapat perintah ini ffmpeg -ss 00:00:00 -i myfile.mp4 -to 00:00:10 -c copy cut2.mp4
Saya mencari banyak - tidak menemukan solusi, mungkin, seseorang dapat membantu saya dengan yang ini.
output.mp4
dimainkan, tetapi terlihat aneh.
-c copy
untuk mengizinkan pengodean ulang atau-c:a copy
hanya digunakan . Kemudian langkah concat masih dapat digunakan-c copy
karena semua video sudah disandikan ulang. Perhatikan bahwa beberapa video dengan peringatan ini masih terlihat baik-baik saja setelah konser dan begitu-c copy
juga dengan itu.Jawaban:
Menggunakan yang terbaru
ffmpeg
Pengguna umum harus selalu menggunakan
ffmpeg
dari cabang master git saat ini (kode terbaru tersedia):Lihat halaman Unduh FFmpeg untuk berbagai opsi, atau lihat FFmpeg Wiki: Compile Guides .
Barang lainnya
Dalam perintah
drawbox
Anda, Anda dapat menyalin salinan audio dengan-c:a copy
alih - alih menyandikannya kembali.Saat menggunakan
-ss
,-to
hanya berfungsi seperti yang diharapkan jika-ss
digunakan sebagai opsi keluaran.sumber
Sesuai https://trac.ffmpeg.org/wiki/Concatenate
Saya punya masalah yang sama. Saya menjalankan ffmpeg versi 2.6.3 di mac. Saya mengkonversi klip sumber saya ke format .MTS dengan tag tambahan -q 0, memperbarui ekstensi dalam file teks dan mengatur file output saya ke file .MTS ketika saya menjalankan perintah concat di ffmpeg. Itu bekerja seperti pesona. Ini alur kerja saya.
memperbarui file teks (mylist.txt) untuk membaca:
kemudian jalankan perintah concat sebagai berikut:
Bekerja untukku! Anda dapat mengonversi hasil akhir. MITS ke format apa pun yang Anda butuhkan.
sumber
Saya mendapat kesalahan yang serupa, dan audio dalam video output saya kadang tidak sinkron dan kadang-kadang hilang sepenuhnya, tetapi saya
mkvmerge
malah menggunakan dari mkvtoolnix.Video input saya telah dikodekan dengan pengaturan yang berbeda dan mereka memiliki dimensi yang berbeda, jadi saya pertama kali mengubah ukuran dan mengkodekan ulang mereka menggunakan
ffmpeg
:for f in *.mp4;do w=1280;h=720;ffmpeg -i $f -filter:v "scale=iw*min($w/iw\,$h/ih):ih*min($w/iw\,$h/ih),pad=$w:$h:($w-iw*min($w/iw\,$h/ih))/2:($h-ih*min($w/iw\,$h/ih))/2" -c:v libx264 -crf 22 -preset slow -pix_fmt yuv420p -c:a libfdk_aac -vbr 3 -ac 2 -ar 44100 ${f%mp4}mkv;done
Beberapa video input saya tidak memiliki saluran audio, jadi saya menggunakan perintah seperti ini untuk menambahkan saluran audio bisu:
for f in *.mkv;do ffprobe $f|&grep -q '1: Audio'||ffmpeg -i $f -f lavfi -i anullsrc -c:a libfdk_aac -shortest -c:v copy temp-$f;mv {temp-,}$f;done
Setelah itu saya membuat video:
Jika file input Anda memiliki dimensi yang sama, jumlah saluran audio yang sama, laju sampel audio yang sama, dan sebagainya, Anda dapat menggunakan hanya
mkvmerge
untuk menggabungkan file tanpa kehilangan data. File input untukmkvmerge
dapat juga memiliki wadah MP4 tetapi file output akan memiliki wadah MKV bahkan jika ekstensi nama filenya ditentukan sebagai.mp4
. Anda dapat berlariffmpeg -i output.mkv -c copy output.mp4
untuk mengganti wadah.mkvmerge
memiliki sintaks sepertimkvmerge -o output.mkv file1.mkv + file2.mkv + file3.mkv
, di manamkvmerge -o output.mkv file1.mkv +file2.mkv +file3.mkv
juga diterima.sumber
Berdasarkan jawaban Duncan yang sangat membantu:
Lalu ini:
sumber
Ketika saya menggunakan ffmpeg untuk remux beberapa video yang direkam (bisa TS, MP4 atau MKV) dan mendapatkan dts yang tidak monoton dalam aliran output - kesalahan cap waktu dll dll, video yang dihasilkan entah itu hanya memiliki audio saja atau diputar dengan kasar. Satu-satunya cara yang saya temukan untuk menangani ini adalah dengan menggunakan AviDemux. Dengan pengaturan Salin untuk audio dan video dan memilih MP4V2 Muxer dimungkinkan, di bawah opsi Konfigurasi untuk memilih Optimalkan Untuk Streaming. File MP4 yang dihasilkan sekarang dapat digunakan dalam ffmpeg tanpa menghasilkan pesan kesalahan. Percayai ini berguna.
sumber