2017-05-12 19 views
0

ffmpeg를 사용하여 라디오 스트림을 g722로 트랜스 코딩하려고했습니다. 스트림이 작동하고 스트림을들을 수 있습니다. 문제는 출력 스트림이 입력 스트림보다 빠른 속도입니다. 결과가 좋지 않습니다. 나는 행운없이 atempo로 속도를 늦추려고했다. 이 15.xffmpeg 라디오 라이브 코드 변환 mp3/aac to g722

콘솔 출력 1.x에 따라 다릅니다

size=  241kB time=00:00:28.67 bitrate= 68.8kbits/s speed= 1.4x 

: 같은

c:\ffmpeg\bin>ffmpeg -i http://lyd.nrk.no/nrk_radio_mp3_mp3_l -ac 1 -acodec g722 -f rtp -ab 64k -ar 16k rtp://192.168.0.99:555 
ffmpeg version N-85750-ga75ef15 Copyright (c) 2000-2017 the FFmpeg developers 
    built with gcc 6.3.0 (GCC) 
    configuration: --enable-gpl --enable-version3 --enable-cuda --enable-cuvid --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 --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-zlib 
    libavutil  55. 61.100/55. 61.100 
    libavcodec  57. 93.100/57. 93.100 
    libavformat 57. 72.101/57. 72.101 
    libavdevice 57. 7.100/57. 7.100 
    libavfilter  6. 88.100/6. 88.100 
    libswscale  4. 7.101/4. 7.101 
    libswresample 2. 8.100/2. 8.100 
    libpostproc 54. 6.100/54. 6.100 
Input #0, mp3, from 'http://lyd.nrk.no/nrk_radio_mp3_mp3_l': 
    Metadata: 
    icy-name  : NRK mP3 
    icy-pub   : 1 
    Duration: N/A, start: 0.000000, bitrate: 96 kb/s 
    Stream #0:0: Audio: mp3, 48000 Hz, stereo, s16p, 96 kb/s 
[udp @ 000000000244bec0] 'circular_buffer_size' option was set but it is not supported on this build (pthread support is required) 
[udp @ 00000000024781a0] 'circular_buffer_size' option was set but it is not supported on this build (pthread support is required) 
Stream mapping: 
    Stream #0:0 -> #0:0 (mp3 (native) -> adpcm_g722 (g722)) 
Press [q] to stop, [?] for help 
Output #0, rtp, to 'rtp://192.168.0.99:555': 
    Metadata: 
    icy-name  : NRK mP3 
    icy-pub   : 1 
    encoder   : Lavf57.72.101 
    Stream #0:0: Audio: adpcm_g722 (g722), 16000 Hz, mono, s16, 64 kb/s 
    Metadata: 
     encoder   : Lavc57.93.100 g722 
SDP: 
v=0 
o=- 0 0 IN IP4 127.0.0.1 
s=No Name 
c=IN IP4 192.168.0.99 
t=0 0 
a=tool:libavformat 57.72.101 
m=audio 555 RTP/AVP 9 
b=AS:64 

size=  413kB time=00:00:49.17 bitrate= 68.8kbits/s speed=1.43x 

사람이 잘못하고 무슨 메신저 알고 있나요? 감사

답변

0

문제는 출력 스트림이 입력 스트림

이 확실보다 빠른 속도를 가지고있다? 그렇다면 문제는 샘플 속도로 내려갑니다. 재생면 (FFmpeg 이후)은 FFmpeg에서 출력하는 것보다 높은 샘플 속도로 재생됩니다.

나는이 정말이 댓글을 기반으로하지만 발생하지 않는 의심 :

이 1.x에서 다릅니다

하는 당신이 인터넷 라디오 스트림에 연결하면

15.x로 큰 버퍼는 최대한 빨리 플러시됩니다. 이것은 선수를위한 빠른 시작을 가능하게합니다. FFmpeg 명령의 경우, 처음 연결할 때 FFmpeg가이 데이터를 가능한 한 빨리 처리하여 전송할 것임을 의미합니다. 최종 재생 장치가 데이터를 버퍼링하는 경우라면 일반적으로 문제가 없습니다. 그렇지 않다면 FFmpeg가 강제로 데이터를 버퍼링해야합니다.

입력 전에 -re 매개 변수를 지정하면됩니다. 이렇게하면 입력이 소프트웨어 정의 클럭에 대해 실시간으로 실행됩니다.