Estoy usando el último ffmpeg (3.2.4) en Windows 10 de 64 bits.
Mis dispositivos generalmente dividen los archivos que guardan en las tarjetas SD, ya sea con un límite de tamaño de archivo de 2G o 4G.
Antes de importar los archivos a mi línea de tiempo, sería muy conveniente volver a concatenar los archivos lógicos en un archivo físico. De esta manera, no tengo "partes" que deban mantenerse juntas, y aplicar configuraciones a un clip no requiere duplicar todo en los segmentos de continuación.
Naturalmente, el códec y el contenedor siempre serán idénticos en todas las piezas.
Primero probé los archivos WAV que obtuve de la grabadora Zoom H4N. Lo intenté:
ffmpeg -i "concat:ste-000.wav|ste-001.wav" -c copy Zoom.wav
y el resultado fue solo la primera parte nuevamente, sin concatenación. Es decir, el archivo tenía aprox. 2 GB de tamaño, pero no idéntico a la primera parte. No hubo ningún mensaje de error. No pensé que fuera extraño que la información mostrada al comienzo de la ejecución solo mostrara el primer archivo, ya que se supone que las partes tienen un formato idéntico, por lo que solo tiene que olfatear una para averiguarlo.
Las últimas líneas de salida (que se muestran a continuación) muestran que el tiempo de los medios es el mismo que el de la primera parte (1:02).
Entonces, supongo que simplemente no funciona en WAV. Los documentos que leí son bastante vagos. Pero tampoco hay error de ningún tipo .
Luego lo probé con archivos MOV de la cámara Canon.
Una vez más, no hubo ningún error, pero el resultado fue solo el tamaño (aproximado) del primer archivo, que es de 4 GB en este dispositivo. Y el tiempo que informó para el archivo de salida, unos 18 minutos, es solo el del primer segmento. ¡No los concatenó!
Entonces, ¿hay algo mal o desactualizado con la documentación? ¿No funciona en Windows por alguna razón (creo que estar entre comillas debería evitar que los caracteres de tubería sean un problema), porque en todos los casos parece ignorar el comando después del primer archivo?
Terminé usando el demuxer concat en su lugar, que funcionó bien pero no es tan simple ya que no puedo simplemente nombrar los archivos en la línea de comando.
¿Por qué no funciona el formulario “fácil”? Más concretamente, ¿por qué no hay ningún error, pero ignora todo menos el primer archivo?
[\\OORT\Media\Video-work\2017\Abril\29 UNT\original]ffmpeg -i "concat:ste-000.wav|ste-001.wav" -c copy Zoom.wav ffmpeg versión 3.2.4 Copyright (c) 2000-2017 los desarrolladores de FFmpeg construido con gcc 6.3.0 (GCC) configuración:--disable-static --enable-shared --enable-gpl --enable-version3 --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --habilitar-libgsm --habilitar-libilbc --habilitar-libmodplug --habilitar-libmp3lame --habilitar-libopencore-amrnb --habilitar-libopencore-amrwb --habilitar-libopenh264 --habilitar-libopenjpeg --habilitar-libopus - -habilitar-librtmp --habilitar-libsnappy --habilitar-libsoxr --habilitar-libspeex --habilitar-libtheora --habilitar-libtwolame --habilitar-libvidstab --habilitar-libvo-amrwbenc --habilitar-libvorbis --habilitar- libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-zlib--habilitar-zlib--habilitar-zlib libavutil 55. 34.101 / 55. 34.101 libavcodec 57. 64.101 / 57. 64.101 formato libav 57. 56.101 / 57. 56.101 dispositivo libav 57. 1.100 / 57. 1.100 filtro libav 6. 65.100 / 6. 65.100 libswscale 4. 2.100 / 4. 2.100 libswresamp 2. 3.100 / 2. 3.100 libpostproc 54. 1.100 / 54. 1.100 Diseño de canal adivinado para Input Stream #0.0: estéreo Entrada #0, wav, desde 'concat:ste-000.wav|ste-001.wav': Metadatos: codificado_por: ZOOM Handy Recorder H4n fecha : 2008-01-01 tiempo_de_creación: 04:46:57 tiempo_referencia: 1652832000 codificación_historia: A = PCM, F = 96000, W = 24, M = estéreo, T = ZOOM Handy Recorder H4n Duración: 01:02:06.51, tasa de bits: 8696 kb/s Transmisión #0:0: Audio: pcm_s24le ([1][0][0][0] / 0x0001), 96000 Hz, estéreo, s32 (24 bit), 4608 kb/s Salida #0, wav, a 'Zoom.wav': Metadatos: PICO : ZOOM Handy Recorder H4n ICRD : 2008-01-01 codificación_historia: A = PCM, F = 96000, W = 24, M = estéreo, T = ZOOM Handy Recorder H4n tiempo_referencia: 1652832000 ISFT: Lavf57.56.101 Transmisión #0:0: Audio: pcm_s24le ([1][0][0][0] / 0x0001), 96000 Hz, estéreo (24 bits), 4608 kb/s Mapeo de flujo: Transmisión #0:0 -> #0:0 (copiar) Presione [q] para detener, [?] para obtener ayuda tamaño = 2096160kB tiempo = 01:02:06,50 tasa de bits = 4608,0 kbits/s velocidad = 15,6x video:0kB audio:2096160kB subtítulo:0kB otros flujos:0kB encabezados globales:0kB sobrecarga muxing: 0.000007%
[P:\video-out]\\OORT\Media\Video-work\2017\Abril\29 UNT\original [\\OORT\Media\Video-work\2017\Abril\29 UNT\original]ffmpeg -i "concat:MVI_7945.MOV|MVI_7946.MOV" -c copia p:MVI_7945-6.MOV ffmpeg versión 3.2.4 Copyright (c) 2000-2017 los desarrolladores de FFmpeg construido con ⋯ ⋮ [mov,mp4,m4a,3gp,3g2,mj2 @ 000000000256cae0] Se encontró un MOOV Atom duplicado. se lo saltó Entrada #0, mov,mp4,m4a,3gp,3g2,mj2, desde 'concat:MVI_7945.MOV|MVI_7946.MOV': Metadatos: tiempo_de_creación: 2017-04-28T20:08:24.000000Z marca_principal: qt versión_menor: 537331968 com.apple.quicktime.make: Canon com.apple.quicktime.modelo: Canon EOS 70D com.apple.quicktime.rating.usuario: 0.000000 com.apple.quicktime.autor: John Dlugosz marcas_compatibles: qt CAEP Duración: 00:18:25.10, inicio: 0.000000, tasa de bits: 35549 kb/s Transmisión n.° 0:0(eng): Video: h264 (Alto) (avc1 / 0x31637661), yuvj420p(pc, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 29460 kb/s, 23,98 fps, 23,98 tbr , 24k tbn, 48k tbc (predeterminado) Metadatos: tiempo_de_creación: 2017-04-28T20:08:24.000000Z código de tiempo: 22:39:33:15 Transmisión n.º 0:1 (eng): Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz, estéreo, s16, 1536 kb/s (predeterminado) Metadatos: tiempo_de_creación: 2017-04-28T20:08:24.000000Z código de tiempo: 22:39:33:15 Stream #0:2(eng): Datos: ninguno (tmcd / 0x64636D74), 0 kb/s (predeterminado) Metadatos: tiempo_de_creación: 2017-04-28T20:08:24.000000Z código de tiempo: 22:39:33:15 Salida #0, mov, a 'p:MVI_7945-6.MOV': Metadatos: marcas_compatibles: qt CAEP marca_principal: qt versión_menor: 537331968 com.apple.quicktime.make: Canon com.apple.quicktime.modelo: Canon EOS 70D com.apple.quicktime.rating.usuario: 0.000000 com.apple.quicktime.autor: John Dlugosz codificador: Lavf57.56.101 Secuencia n.° 0:0(eng): Video: h264 (Alto) (avc1 / 0x31637661), yuvj420p(pc, bt709), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 29460 kb/s , 23,98 fps, 23,98 tbr, 24k tbn, 24k tbc (predeterminado) Metadatos: tiempo_de_creación: 2017-04-28T20:08:24.000000Z código de tiempo: 22:39:33:15 Transmisión n.º 0:1 (eng): Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz, estéreo, 1536 kb/s (predeterminado) Metadatos: tiempo_de_creación: 2017-04-28T20:08:24.000000Z código de tiempo: 22:39:33:15 Mapeo de flujo: Transmisión #0:0 -> #0:0 (copiar) Transmisión #0:1 -> #0:1 (copiar) Presione [q] para detener, [?] para obtener ayuda fotograma=26496 fps=519 q=-1,0 Lsize= 4181879kB tiempo=00:18:25,08 tasa de bits=31000,3 kbits/s velocidad=21,6x video:3974174kB audio:207207kB subtítulo:0kB otros flujos:0kB encabezados globales:0kB sobrecarga muxing: 0.011905%
El protocolo concat es la elección incorrecta para la mayoría de los formatos de archivo. Los flujos de transporte como MPEG-TS son uno de los pocos formatos que se pueden concatenar de esta manera. Todo lo que hace este método es una adición cruda de cada entrada a la entrada anterior. Por lo tanto, cualquier formato que tenga un elemento de metadatos no se puede concatenar de esta manera, ya que los metadatos de los otros archivos estarán en el medio del archivo de salida y los metadatos al frente del archivo no harán referencia a ellos.
Deberías usar el demuxer concat en su lugar. Crear un archivo de texto, es decir
file '/path/to/file1'
file '/path/to/file2'
file '/path/to/file3'
y entonces
ffmpeg -f concat -safe 0 -i mylist.txt -c copy output
JDługosz
JDługosz