Faits: A. Le 17 avril 2010, C._ et D._ circulaient dans un véhicule volé sur l'autoroute A1 en direction de Payerne. A l'appel de leurs collègues fribourgeois, les gendarmes vaudois E._ et F._ installèrent un barrage dans le tunnel routier de Sévaz. A l'arrivée du véhicule, E._ tira plusieurs coups de feu en visant la partie inférieure de la calandre. Le premier coup atteignit mortellement D._. Le 10 juin 2011, le Ministère public fribourgeois a classé la plainte formée contre E._ par A._ (frère jumeau de D._) et par la famille de la victime, ainsi que la plainte formée par C._ pour meurtre, homicide par négligence ou mise en danger de la vie d'autrui. Il a refusé d'entrer en matière sur la plainte pour complicité dirigée contre F._. Il a considéré que le barrage avait été correctement installé et que l'usage de l'arme à feu était justifié et proportionné. Il n'y avait pas d'intention meurtrière. Une condamnation de E._ n'apparaissait "tout simplement pas possible". Cette décision a été confirmée par arrêt du 27 octobre 2011 de la Chambre pénale du Tribunal cantonal fribourgeois. B. Par arrêt du 27 mars 2012, le Tribunal fédéral a admis les recours formés par A._ et par C._, a annulé l'arrêt de la Chambre pénale et l'ordonnance de classement - à l'exception de la décision de non-entrée en matière concernant F._, non contestée. Ces décisions retenaient que le véhicule volé arrivait en empiétant sur la voie de droite, occupée par le policier, raison pour laquelle celui-ci pouvait légitimement se sentir menacé. Ce fait n'était toutefois pas définitivement établi. La cause soulevait par ailleurs de nombreuses questions de fait (vitesse et trajectoire du véhicule, nombre et direction des tirs) et de droit (légitime défense, proportionnalité de l'intervention). Compte tenu également de la gravité des faits, le principe "in dubio pro duriore" imposait un renvoi en jugement. La cause a été renvoyée au Ministère public du canton de Fribourg afin qu'il engage l'accusation après avoir le cas échéant complété l'instruction. C. Le 4 avril 2012, A._ a requis la récusation du Procureur général B._, en charge du dossier depuis le 1er mai 2011. Il estimait que les précédentes prises de position de ce magistrat permettaient de craindre que l'acte d'accusation ne soit pas rédigé dans une perspective de condamnation, en omettant des faits à charge. Le 5 avril 2012, le Procureur refusa de se récuser en relevant qu'aucun grief concret n'était soulevé à son encontre. Par arrêt du 25 avril 2012, la Chambre pénale a rejeté la demande de récusation. L'allégation d'un manque d'indépendance des tribunaux pénaux face à la police n'était pas un motif de récusation. L'ordonnance de classement annulée par le Tribunal fédéral ne constituait pas une grave erreur de procédure ou d'appréciation justifiant une récusation, et rien ne permettait de redouter que l'acte d'accusation soit incomplet. D. Par acte du 7 mai 2012, A._ forme un recours en matière pénale par lequel il demande l'annulation de l'arrêt de la Chambre pénale du 25 avril 2012, l'admission de sa demande de récusation et le renvoi du dossier au Tribunal cantonal pour la suite de la procédure. Il requiert l'assistance judiciaire. La Chambre pénale a renoncé à présenter des observations. Le Procureur général conclut au rejet du recours dans la mesure où il est recevable.