Watch at Ease세상을 읽고, 일상의 답을 찾다.

기술 · 실용 가이드

FFmpeg concat이 -safe 0 뒤에도 실패하나요? 옵션보다 실패 계층부터 확인

원본 목록, 해석된 입력 주소와 인수 경계를 보존하세요. 합성 WAV 대조 실험으로 이름 정책·파싱·주소 기준·프로토콜 허용을 구분합니다.

오리지널 편집 일러스트: 목록 파싱·주소 해석·프로토콜 허용을 구분.
오리지널 편집 일러스트: 목록 파싱·주소 해석·프로토콜 허용을 구분. Watch at Ease

concat 디먹서의 -safe 0은 기본 정책이 거부하는 파일명을 허용합니다. 잘못된 목록을 고치거나 없는 파일을 만들거나 모든 중첩 프로토콜을 허용하지는 않습니다. 실패 명령의 마지막 줄만 바꾸지 말고 첫 구체적 오류를 따라가세요.

수정 전에 하나의 사건 기록 만들기

원본 미디어는 유지하세요. 실제 목록, 정확한 실행 파일과 빌드, 작업 디렉터리, 전체 stderr를 저장합니다. -i가 일반 파일, 표준 입력, 래퍼 생성 주소 중 무엇을 받는지 기록하세요. 다시 입력하거나 AI가 정리한 로그만으로 파일명을 진단하지 마세요.

신뢰하는 로컬 목록은 ffprobe -v error -f concat -safe 0 -i list.ffconcat -show_streams -of json으로 확인하되 실제 경로로 바꿉니다. 결합 미디어를 만들지 않습니다. stdout에 JSON이 있어도 종료 상태와 stderr를 보존하세요. 빈 JSON만으로 성공은 아닙니다.

일반 파일 기준으로 정책과 파싱 분리

작은 목록 사본에 확인된 로컬 입력 하나를 넣습니다. 공백이 있는 항목은 file 'clip one.wav'로 쓸 수 있습니다. 작은따옴표는 목록 문법이며 명령행 목록 경로의 큰따옴표와는 파서가 다릅니다. 아포스트로피는 concat 문서대로 이스케이프해야 합니다.

Ubuntu ffprobe 6.1.1-3ubuntu5에서 0.1초 합성 WAV를 시험하니 safe 1은 거부하고 safe 0은 열었습니다. 항목을 큰따옴표로 쓰면 여전히 실패했습니다. 목록을 하위 디렉터리로 옮기면 상대 경로의 해석 위치가 바뀌었고 올바른 절대 경로로 복구됐습니다. 통제된 Linux 관찰이며 Windows나 Unicode 진단은 아닙니다.

표준 입력과 프로토콜 오류는 새 분기

일반 목록은 열리는데 표준 입력이 실패하면 정확한 해석 주소와 프로토콜 이름을 비교하세요. 이 빌드에서 -i -는 fd를 사용했습니다. file,pipe 허용 목록은 fd를 거부했고, 관찰된 전송을 허용해도 상대 또는 접두사 없는 절대 경로는 fd 아래로 해석됐습니다. 명시적 file: 절대 주소에서 열렸습니다.

그 허용 목록을 만능 해결책으로 복사하지 마세요. 실제 빌드와 원 오류를 보고 신뢰 입력에 필요한 프로토콜만 허용하거나 더 단순한 일반 목록을 유지합니다. -safe 0은 프로토콜 거부를 고치지 못합니다. 스트림이 없는데 뒤의 map을 선택 항목으로 바꾸면 입력을 열지 않은 채 증상만 숨길 수 있습니다.

래퍼 인수와 올바른 결과 확인

Python에서는 실행 파일과 각 인수를 subprocess.run의 별도 목록 요소로 전달하고 shell=False를 씁니다. stdout, stderr, returncode를 캡처하고 문자 디코딩이나 줄바꿈 변환 전 목록 바이트는 별도로 보존하세요. 인수 목록 속 셸 따옴표는 별개의 concat 파일 문법을 고치지 못합니다. Windows 인수 변환과 배치 파일은 별도의 문서 규칙이 있습니다.

한 번에 하나만 바꿔 같은 탐색을 반복하고 의도한 입력과 스트림을 확인합니다. 이후 스트림 호환성, 필요한 트랙과 전체 출력을 따로 검증하세요. 개방 뒤 타임스탬프 경고는 다른 조사입니다. 탐색 성공이나 오류 숨기기만으로 정확한 결합이 입증되지는 않습니다.

오리지널 편집 일러스트: 합성 WAV로 일반 목록과 표준 입력 비교.
오리지널 편집 일러스트: 합성 WAV로 일반 목록과 표준 입력 비교. Watch at Ease