web-dev-qa-db-fra.com

Diffusion en direct HTTP, FFMPEG & FFSERVER et iPhone OS 3

Dans l'iPhone OS 3, Apple a introduit HTTP Live Streaming qui devrait permettre la diffusion en direct de vidéos depuis Internet. J'utilise actuellement une webcam, qui alimente mon serveur , puis il est converti en flux flv par ffmpeg et retransmis en utilisant ffserver. Quelqu'un sait-il comment configurer un flux vidéo que l'iPhone peut utiliser à l'aide de ffmpeg et ffserver? Je devrais être en mesure de recoder à peu près n'importe quel format à la volée.

19
jcnnghm

Vous devrez créer une copie de ffmpeg avec une version> = e109a29d6ddb02b2dd58c6c385ebec27f2d23b58 (git) ou 18793 (svn). Assurez-vous de spécifier également l'indicateur --enable-libx264 lors de la construction. Une fois que vous l'avez installé, vous pouvez faire à peu près ce qui suit:

ffmpeg -i <input video> -acodec libmp3lame -ac 1 -vcodec libx264 -s 320x240 \
       -level 30 -f mpegts - | \
segmenter - 10 test test.m3u8 http://example.com/path/to/your/files/

par exemple, apportez un fichier d'entrée ou un flux dans ffmpeg et canalisez une vidéo H.264 avec audio MP3 dans le segmenteur d'Apple. Le segmenteur crache des fichiers vidéo segmentés et des listes de lecture M3U pointant vers les fichiers segmentés. Vous serviriez les fichiers segmentés et les listes de lecture via un serveur Web comme Apache.

De toute évidence, vous souhaiterez modifier considérablement les options ffmpeg et segmenter pour obtenir les résultats que vous recherchez.

23
Nathan de Vries

Pour ceux qui sont intéressés, j'ai fourni un segmenteur open source avec un script qui vous permettra d'utiliser ffmpeg pour ce faire, voir mon projet streaming segmenté sur l'iphone . Il peut effectuer des segments à plusieurs débits pour les flux d'entrée et transférera les segments de flux vers une destination configurable via scp, ftp et même jusqu'à aws s3.

12
carson

C'est un sujet assez ancien, mais le support HLS, une fonctionnalité apparemment nouvelle de FFmpeg pourrait être utile à quelqu'un.

Un exemple d'utilisation serait le suivant:

ffmpeg -i <input_file> -c:v libx264 -preset slow -map 0 -an -flags -global_header -f hls -hls_time <segment_length> <m3u8_file>

Si vous souhaitez faire du streaming en direct, ce serait un autre exemple:

ffmpeg -i <input_stream> -c:v libx264 -preset ultrafast -map 0 -an -flags -global_header -f hls -hls_time <segment_length> -hls_list_size <playlist_entries> -hls_wrap <wrap> <m3u8_file>

Le -hls_list_size l'argument limite le nombre de fichiers dans la liste de lecture et le -hls-wrap l'argument limite le nombre total de fichiers et encapsulera les noms de fichiers une fois qu'il aura atteint ce point (ex: test0.ts, test1.ts ... test7.ts, test0.ts, test1.ts ... lorsque l'habillage est 8 ).

Pour plus d'informations, consultez la documentation . Veuillez noter que les exemples ci-dessus suppriment l'audio avec le -an flag, car personnellement je n'en ai jamais eu besoin.

3
polandeer

Quel est le problème avec l'utilisation de QuickTime pour convertir des films au format "iPhone"? Vous faites juste Fichier> Exporter> Format iPhone ... Suis-je en train de manquer quelque chose?

Après la conversion au format iPhone, je le hache avec mediafilesegmenter (trouvé à Apple Developer Connection, Http Live Streaming Tools ):

mediafilesegmenter -t 10 -f folderName/ nameOfInputFile.m4v

(Remarque: le dossierName/dossier doit exister)

Pointez ensuite votre iPhone vers un site Web avec

<video src='folderName/prog_index.m3u8' height=45 width=70 
       controls='on'>Your browser does not support the video tag</video>
0
yujean