두 개의 ogg vorbis 파일이 있는데 모두 단일 파일로 연결하려는 것과 동일한 속성으로 인코딩되었습니다.
ogg vorbis 형식은 다음과 같은 여러 파일의 일반 연결을 지원합니다.
$ cat file1.ogg file2.ogg > output.ogg
그러나 슬프게도 모든 플레이어가 이와 같은 파일을 이해할 수있는 것은 아닙니다. 예를 들어 모바일 오디오 플레이어와 같이 새로운 파일을 구입하지 마십시오. 그것을 이해하지 못하는 다른 프로그램은 gstreamer입니다. 입력 ogg 파일이 모두 동일한 스트림 ID를 갖는 경우에도이 방법이 작동하지 않습니다.
또한 원본 파일을 버리고 연결된 버전 만 유지하고 싶기 때문에 cat
솔루션 과 마찬가지로 연결을 무손실로 수행하고 싶습니다 .
또한 파일 크기를 불필요하게 날려 버릴 수 있으므로 flac와 같은 무손실 형식으로 파일을 연결하지 않으려 고합니다. 괜찮다면 원본 ogg 파일을 유지할 수 있고 공간을 덜 사용할 것입니다.
ffmpeg는 때때로 concat demuxer를 사용하여 수행 할 수있는 것 같습니다 .
$ cat inputs.txt
file 'in1.ogg'
file 'in2.ogg'
$ ffmpeg -f concat -i inputs.txt -c copy out.ogg
입력 파일의 원시 16 진 덤프를 보면 출력 파일에 정확히 표시된 vorbis 패킷을 찾을 수 있습니다. 다시 인코딩이 실제로 발생하지 않는 것 같습니다.
그러나 이것은 모든 입력 파일에서 작동하지 않는 것 같습니다. 때때로 (이것이 무엇을 유발하는지 확실하지 않으면) ffmpeg는 경고를 줄 것입니다 :
Non-monotonous DTS in output stream 0:0; previous: 5011328, current: 5011200; changing to 5011329. This may result in incorrect timestamps in the output file.
그리고 나서 두 파일 사이에 아주 희미한 "간극"이 들립니다. 따라서 이것은 확실히 글로벌 솔루션이 아닙니다.
하나를 찾을 수 없으므로이 stackoverflow question 에 내 도구를 작성하려고했습니다 .
여러 ogg vorbis 파일을 연결하지만 다시 인코딩하지 않고 출력 당 단일 스트림으로 연결하는 방법이 있습니까? 어떤 도구가 그 일을 할 수 있습니까?