2012-07-02 2 views
0

현재 h.264 기본 스트림 (postfiix .264가있는 파일)을 스트림 (postfix .ts가있는 파일)으로 변환하려고합니다. ffmpeg 명령 줄 "ffmpeg -i in.264 -an -vcodec copy -f mpegts out.ts"를 사용하여 성공적으로 변환을 마쳤습니다.ffmpeg 라이브러리를 사용하여 .264를 .ts로 변환합니다.

이제 ffmpeg의 라이브러리를 호출하여 내 자신의 C++ 코드를 사용하여이 변환을 구현하려고합니다. 미리 컴파일 된 ffmpeg 라이브러리 (libavcodec, libavformat 등)를 다운로드했습니다. 내 입력 h.264는 라이브 스트림이 아닌 미리 레코딩 된 파일이므로 내 출력 .ts 파일입니다. 그래서 제 질문은 변환을 구현하기 위해 라이브러리의 어떤 함수를 호출해야합니까?

답변

0

라이브러리 호출 목록처럼 간단하지 않습니다. 입력 파일을 읽기 시작하는 데 도움이되는 이전 tutorial입니다. 또한 ffmpeg 소스에 포함되어있는 decoding_encoding.c라는 예제가 있습니다. 이것들은 당신이 시작하는 데 도움이 될 것입니다.

+0

답장을 보내 주셔서 감사합니다. 예, 저는 현재 Dranger의 turotial을 읽고 있습니다. 조금 오래되었지만 여전히 도움이됩니다. ffmpeg 소스 파일에 포함 된 muxing.c라는 예제도 보았습니다. 나는 h.264 기본 스트림에서 전송 스트림으로의 변환이 코딩/디코딩보다 더 복잡하다고 생각한다. 그래서 muxing.c 코드를 참조해야합니다. 내가 맞습니까? – summerlismile

+0

@summerlismile muxing.c 파일을 조사 할 필요가 없다고 생각합니다. 이미 명령이 있습니다 (-i in.264 -an -vcodec copy -f mpegts out.ts). opt_audio_codec, opt_video_codec, opt_audio_rate, opt_video_rate, opt_default 등의 함수를 사용하여이 명령을 코드로 변환 한 다음 ffmpeg.c 파일에서 "transcode"또는 "av_encode"함수를 호출하는 방법을 살펴보십시오. 그게 전부 야. –

0

자신의 코드에서 수행 할 필요가 없습니다. 대신 ffmpeg 프로세스를 프로그래밍 방식으로 생성 할 수 있습니다. Windows에서는 CreateProcess을 사용하고 Linux에서는 spawn을 사용하십시오.

1

Linux에서 ffmpeg를 설치 한 후 ffmpeg.c라는 예제 파일을 볼 수 있습니다. 예를 들어,이 파일에 디코딩 매개 변수를 설정하는 많은 옵션이 있습니다. opt_video_codec, opt_video_codec, opt_audio_rate, opt_video_rate, opt_default 등등. "transcode"또는 "av_encode"함수를 호출하기 전에 적절한 함수를 사용하여 명령에서 필요한 매개 변수를 설정하면됩니다 (-i in.264 -an -vcodec copy -f mpegts out.ts). ffmpeg.c 파일의 "main"함수에서.

+0

그래서 라이브러리에 정의 된 특정 코딩/다중화 함수를 호출 할 필요가없는 것처럼 보입니다. avcodec.h 또는 avformat.h의 함수를 인터페이스로 호출하면 암시 적으로 변환을 구현하는 모든 관련 함수가 호출됩니다. 그 맞습니까? – summerlismile

+0

@dummerismile yeap, 위에서 설명한대로 적절한 매개 변수를 설정하여 "transcode"또는 "av_encode"(이전 버전)를 호출하십시오. 이것은 그렇게 어렵지 않습니다. ffmpeg.c 파일을 살펴보면 모든 것을 더 명확하게 이해할 수 있기를 바랍니다. –

관련 문제