videos unir two name multiple files concatenar ffmpeg concat

unir - ffmpeg concat: "nombre de archivo inseguro"



ffmpeg unsafe file name (3)

Intentando convertir un montón de archivos mts en un gran archivo mp4:

stephan@rechenmonster:/mnt/backupsystem/archive2/Videos/20151222/PRIVATE/AVCHD/BDMV$ ~/bin/ffmpeg-git-20160817-64bit-static/ffmpeg -v info -f concat -i <(find STREAM -name ''*'' -printf "file ''$PWD/%p''/n") -deinterlace -r 25 -s hd720 -c:v libx264 -crf 23 -acodec copy -strict -2 ~/tmp/Videos/20151222.mp4 ffmpeg version N-81364-gf85842b-static http://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2016 the FFmpeg developers built with gcc 5.4.1 (Debian 5.4.1-1) 20160803 configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --enable-libmp3lame --enable-libx264 --enable-libx265 --enable-libwebp --enable-libspeex --enable-libvorbis --enable-libvpx --enable-libfreetype --enable-fontconfig --enable-libxvid --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvo-amrwbenc --enable-gray --enable-libopenjpeg --enable-libopus --enable-libass --enable-gnutls --enable-libvidstab --enable-libsoxr --enable-frei0r --enable-libfribidi --disable-indev=sndio --disable-outdev=sndio --enable-librtmp --enable-libmfx --enable-libzimg --cc=gcc-5 libavutil 55. 28.100 / 55. 28.100 libavcodec 57. 53.100 / 57. 53.100 libavformat 57. 46.101 / 57. 46.101 libavdevice 57. 0.102 / 57. 0.102 libavfilter 6. 51.100 / 6. 51.100 libswscale 4. 1.100 / 4. 1.100 libswresample 2. 1.100 / 2. 1.100 libpostproc 54. 0.100 / 54. 0.100 [concat @ 0x56054a0] Unsafe file name ''/mnt/backupsystem/archive2/Videos/20151222/PRIVATE/AVCHD/BDMV/STREAM'' /dev/fd/63: Operation not permitted

¿Alguna idea de lo que sale mal aquí? ¿Qué significa el término "archivo inseguro" en este contexto?

Gracias Stephan


Acerca de la respuesta es totalmente correcta, solo le muestro el comando para que no coloque -safe 0 en ningún otro lugar.

ffmpeg.exe -f concat -safe 0 -i "clips.txt" -c copy "video.mp4"


La respuesta indicada por @Mulvya (¡gracias!) Funciona: "Agregue -safe 0 antes de -i ". Luego apareció otro problema con find STREAM -name ''*'' -printf "file ''$PWD/%p''/n" que devuelve la ruta vacía como primera entrada. Cambió esto por for f in ./*.wav; do echo "file ''$PWD/$f''"; done for f in ./*.wav; do echo "file ''$PWD/$f''"; done for f in ./*.wav; do echo "file ''$PWD/$f''"; done (ver https://trac.ffmpeg.org/wiki/Concatenate ) y ahora parece funcionar. ¡Hurra!


Para responder por qué, de https://ffmpeg.org/ffmpeg-all.html#Options-35 :

Este demuxer acepta la siguiente opción:

safe Si se establece en 1, rechazar rutas de archivos inseguras. Una ruta de archivo se considera segura si no contiene una especificación de protocolo y es relativa y todos los componentes solo contienen caracteres del conjunto de caracteres portátil (letras, dígitos, punto, guión bajo y guión) y no tienen punto al comienzo de un componente.

Si se establece en 0, se acepta cualquier nombre de archivo.

El valor predeterminado es 1.

-1 es equivalente a 1 si el formato se sondeó automáticamente y 0 en caso contrario.

Resulta find . pone un ./ delante del archivo. Consulte ¿Cómo eliminar los "./" iniciales en unix "find"? para soluciones si no desea usar -safe 0 .